![]() |
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 00:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz