Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Word / OLE: Linie an aktueller Cursor-Position zeichnen (https://www.delphipraxis.net/95479-word-ole-linie-aktueller-cursor-position-zeichnen.html)

Ralf Stehle 7. Jul 2007 10:36


Word / OLE: Linie an aktueller Cursor-Position zeichnen
 
Ich möchte mit Delphi in Microsoft-Word eine Linie an der aktuellen Cursorposition zu zeichnen.
Im Forum habe ich keinen Beitrag gefunden. Hier nach längerer Suche die Lösung.

In dem Beispiel-Code sind weitere OLE-Funktionen zu sehen:
Öffnen eines neuen Worddocumentes oder öffnen einer vorhandenen Datei
Einstellung der Tabulatoren und Seitenränder
Sprung zu einer Textmarke
Seitenumbruch


Delphi-Quellcode:
procedure WordOLE();
var
  VarFileName,Background, Append, Range, SaveChs: OleVariant;
  Position,Leader,Alignment, Seitenumbruch: OLEVariant;
  vParam, vBookmark, vWhat: OLEVariant;
  cDoc: string;
  i: integer;
begin
  MainForm.WordApplication1.Connect;
  MainForm.WordApplication1.Visible := true;

  //neues Dokument öffen
  MainForm.WordApplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
  MainForm.WordDocument1.ConnectTo(MainForm.WordApplication1.ActiveDocument);

  {
  oder vorhandenes Document öffen:
  //Pfad muss in OLE-Variant umgewandelt werden
  cDoc := BriefPfad + BriefName; vParam := cDoc;

  MainForm.WordApplication1.Documents.Open(vParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
  }

  Background:=false; Append:=false; Range:=wdPrintAllPages;

  With MainForm.WordApplication1.Selection do begin
    Alignment:= wdAlignTabLeft;
    Leader:=wdTabLeaderSpaces;
    PageSetup.Orientation := wdOrientPortrait;

    {*****       Seitenränder einrichten         *****}
    PageSetup.TopMargin     := 42; // = 29; 0,035 * 29 = 1,015 cm 0,035 * 42 = 1,48 cm
    PageSetup.BottomMargin  := 42;
    PageSetup.LeftMargin    := 42; // = 42;
    PageSetup.RightMargin   := 42;
    PageSetup.HeaderDistance := 0;
    PageSetup.FooterDistance := 0;

    {*****       Tabulatoren einrichten         *****}
    ParagraphFormat.TabStops.ClearAll;
    Position := 60; ParagraphFormat.Tabstops.Add(Position, Alignment, Leader);
    Position := 170; ParagraphFormat.Tabstops.Add(Position, Alignment, Leader);
    Position := 250; ParagraphFormat.Tabstops.Add(Position, Alignment, Leader);
    Position := 315; ParagraphFormat.Tabstops.Add(Position, Alignment, Leader);
    Position := 390; ParagraphFormat.Tabstops.Add(Position, Alignment, Leader);

    Font.Name:='Arial';
    Font.Bold:=integer(True);
    Font.Size :=11; TypeText('Dies ist ein Beispieltext in FETTDRUCK' + #13);
    Font.Bold:=integer(False);
    Font.Size :=9; TypeText('Schriftart 9' + #13 + #13);
 
    {*****       Linie zeichnen an aktuellen Zeilenposition     *****}
    i := Information[wdVerticalPositionRelativeToPage];
    // i enthält jetzt die aktuelle zum Programmierzeitpunkt unbekannte Cursors-Position
    MainForm.WordApplication1.ActiveDocument.Shapes.AddLine(50, i, 550, i, EmptyParam);

    TypeText('weiterer Text' + #13);
    TypeText('weiterer Text' + #13);
    TypeText('weiterer Text' + #13);

    {*****       Seitenumbruch         *****}
    Seitenumbruch := wdPageBreak;  
    //Weitere Optionen: wdColumnBreak wdSectionBreakNextPage wdSectionBreakContinuous
    InsertBreak(Seitenumbruch); //Absatz fortlaufend einfügen

    Font.Name:='Arial'; Font.Size:=14; Font.Bold:=integer(True);
    TypeText(#13 + 'Zugänge der Inneren Abteilung' + #13); Font.Bold:=integer(False);

   
    {*****       zu Textmarke springen       *****}
    vBookmark:='Name der Textmarke'; vWhat:=wdGotoBookmark;
    GoTo_(vWhat,EmptyParam,EmptyParam,vBookmark);

  end; //With WordApplication1.Selection

  //MainForm.WordDocument1.PrintOut(Background, Append, Range);
  //SaveChs := wdDoNotSaveChanges;
  //MainForm.WordApplication1.ActiveDocument.Close(SaveChs, EmptyParam, EmptyParam);
  MainForm.WordDocument1.Disconnect;
  MainForm.WordApplication1.Disconnect;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz