AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Word / OLE: Linie an aktueller Cursor-Position zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Word / OLE: Linie an aktueller Cursor-Position zeichnen

Ein Thema von Ralf Stehle · begonnen am 7. Jul 2007
Antwort Antwort
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#1

Word / OLE: Linie an aktueller Cursor-Position zeichnen

  Alt 7. Jul 2007, 10:36
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;
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 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