Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Posicionar cursor en word (https://www.clubdelphi.com/foros/showthread.php?t=19239)

nacho 08-03-2005 21:04:24

Posicionar cursor en word
 
Necesito colocar el cursor al final del documento (o en otra posicion) de un documento de word, utilizando TwordDocument o TwordApplication, ¿como le hago?

Neftali [Germán.Estévez] 09-03-2005 09:09:28

Cita:

Empezado por nacho
Necesito colocar el cursor al final del documento (o en otra posicion) de un documento de word, utilizando TwordDocument o TwordApplication, ¿como le hago?

Código Delphi [-]
   WordApp.Selection.EndKey(wdStory);
 




Wdo.Net 11-07-2006 04:09:13

Cita:

Empezado por Neftali
Código Delphi [-]
   WordApp.Selection.EndKey(wdStory);
 




Hola Neftali, me gustaria fueras un poco más explicito en tu respuesta, ya que supongo que WordApp corresponde a un componente WordApplication, pero lo de wdStory, no se a que se refiere. Te agrdezco la aclaracion, ya estoy necesitando cambiar de posicion el cursor en un documento de word. Gracias.

Neftali [Germán.Estévez] 11-07-2006 09:47:03

Bueno, pues abre un proyecto nuevo y coloca un botón con el siguiente código:


Código Delphi [-]
var
  Word: Variant;
  Documento: Variant;
begin
  // Crear el objeto
  Word := CreateOleObject('Word.Application');
  // Abrir el documento que necesirtes
  Word.Documents.Open('C:\Temp\info_english.doc');
  // Maximizar ventana (1)
  Word.ActiveWindow.WindowState := wdWindowStateMaximize;
  // Hace visible la ventana de Word
  Word.Visible:=True;
  // Mandar el cursor al final (2)
  Word.Selection.EndKey(wdStory); 

  ...

Debes añadir al uses la unit ComObj;
Las constantes marcadas en rojo, están definidas en unas units que suelen estar en éste directorio:
"c:\Archivos de programa\Borland\Delphi6\Ocx\Servers\"
Verás que hay para Word97, Word2000,...

En mi caso he añadido al uses también la unit Word2000.

Un saludo.

Wdo.Net 11-07-2006 19:04:05

Te agradezco la respuesta que me has enviado, voy a tener en cuenta esta solución y luego te comento. Gracias.

Wdo.Net 12-07-2006 04:02:15

Hola, Neftalí, hoy probé el código que me sugeriste y funcionó correctamente, pero aún tengo incoveniente con lo que realmente quiero hacer, por eso a continuación voy a colocar el codigo que estoy utilizando para tratar de exportar: Los datos contenidos en un StringGrid y a continuacion de estos, dejando por ejemplo dos espacios , insertar un grafico correspondiente a dichos datos. Te aclaro que la parte de introducir los datos del StringGrid en un documento de Word funciona correctamente, pero el inconveniente precisamente es que el cursor queda posicionado en la celda (1,1) de la tabla en Word, y debido a esto no puedo colocar la imagen de un Chart en una posicion diferente de la hoja o documento de Word.

Codigo:

Código Delphi [-]
procedure TMDIChildMAD.SBEWordClick(Sender: TObject);
var
  WordTable: Table;
  i, j, RowCount, ColCount: Integer;
  W, S, Nombre, Formato: OleVariant;
begin
  if High(MMAD) <> -1 then
    begin
      if SDMAD.Execute then
        begin
          WDMAD.Connect;
          try
            RowCount := Actores;
            ColCount := Actores;
            WordTable := WDMAD.Tables.Add(WDMAD.Range,RowCount + 1,ColCount + 1,W,S);
            for i := 1 to ColCount do
              begin
                WordTable.Cell(1, i + 1).Range.Font.Bold := 1;
                WordTable.Cell(1, i + 1).Range.Text := MActores[i - 1][0];
                WordTable.Cell(1, i + 1).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
                WordTable.Cell(1, i + 1).Range.Cells.Shading.BackgroundPatternColor:= clSilver;
              end;
            for i := 1 to RowCount do
              begin
                WordTable.Cell(i + 1, 1).Range.Font.Bold := 1;
                WordTable.Cell(i + 1, 1).Range.Text := MActores[i - 1][0];
                WordTable.Cell(i + 1, 1).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
                WordTable.Cell(i + 1, 1).Range.Cells.Shading.BackgroundPatternColor:= clSilver;
              end;
            for i:= 1 to RowCount do
              for j:= 1 to ColCount do
                begin
                  WordTable.Cell(i + 1, j + 1).Range.Text:=IntToStr(MMAD[i - 1][j - 1]);
                  WordTable.Cell(i + 1, j + 1).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
                  if i = j then WordTable.Cell(i + 1, j + 1).Range.Cells.Shading.BackgroundPatternColor:= clCream;
                end;
            WordTable.Borders.Enable:= 1;
          finally
            Nombre:= SDMAD.FileName;
            WDMAD.SaveAs(Nombre,Formato);
            WDMAD.Application.Visible := true;
            WDMAD.Disconnect;
          end;
        end;
    end
  else ShowMessage('La Matriz MAD no ha sido guardadada');
end;

WDMAD: TWordDocument.
SDMAD: TSaveDialog.

Neftali [Germán.Estévez] 12-07-2006 09:42:09

Por favor, utiliza TAG's cuando añadas código delphi, SQL, PHP,... a los mensajes.

Wdo.Net 13-07-2006 23:40:14

Listo, Neftalí, ya utilice las TAG's en el código.

Neftali [Germán.Estévez] 14-07-2006 10:44:49

Gracias.
Mejora mucho la visión y cuesta poco. ;)

babiano 10-08-2006 13:30:09

por favor, me podeis indicar el codigo de como sacar el cursor de la celda(1,1) de la tabla y posicionarlo al inicio del documentoa activo.
Gracias


La franja horaria es GMT +2. Ahora son las 16:41:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi