![]() |
Wordautomation Zeilenabstand einstellen
Delphi-Quellcode:
Der Zeilenabstand zu Text2 ist leider größer als nächste Zeile.Var oWord1: OLEVariant; oDocument: OLEVariant; oRange: OLEVariant; begin try oWord1 := CreateOleObject('Word.Application'); oWord1.Visible := True; oDocument := oWord1.Documents.Add(); oRange := oDocument.Range(); oRange.Font.Name := 'Courier New'; oRange.Font.Size := 8; oRange.Text := 'Text1' + chr(13); oRange.Move(wdstory); oRange.Text := "Text2" + chr(13); oRange.Movew(wdStory); finally end; end; |
AW: Wordautomation Zeilenabstand einstellen
Hallo Alfredo,
Du kannst Deinen Quellcode etwas übersichtlicher formatieren, wenn Du das Delphi-Symbol (= gelber Helm mit dem roten Kamm) vom Menü direkt über dem Editorfenster benutzt. Oder für neutrale Fälle als einfachen Code mit dem Symbol gleich links daneben (= auf weißem Blatt blaue eckige Klammern <>). Das geht auch nachträglich. :wink: Gruß, Andreas |
AW: Wordautomation Zeilenabstand einstellen
|
AW: Wordautomation Zeilenabstand einstellen
Evtl. wäre es auch etwas Word-Konformer, wenn man anstatt mit CHR(13) usw. zu arbeiten, Paragraphs.Add benutzt.
|
AW: Wordautomation Zeilenabstand einstellen
Vielen Dank für eure Hinweise:
Die Lösung ist, dass chr(13) einen harten Zeilenumbruch vornimmt. Für mein Problem ist jedoch ein weicher Zeilenumbruch([Enter]+Shift) = Chr(11) notwendig. In der Delphi-Praxis steht die Lösung bereits unter "OLE Word Zeilenumbruch". :( Gibt es denn für chr(11) auch etwas dass Word-Konform ist? Mein altes Automationshandbuch für VFP hat mir "Paragraphs.Add" einfach unterschlagen. |
AW: Wordautomation Zeilenabstand einstellen
Zitat:
Wobei + CHR(11) schon einfacher ist :-D |
AW: Wordautomation Zeilenabstand einstellen
Beim Testen ist mir aufgefallen, dass der Compiler keine Fehler meldet,
aber zur Laufzeit Fehler in der Codierung des Word-Objektes festgestellt werden. Kann man den Compiler dazu bringen, dass er diese Fehler beanstandet? |
AW: Wordautomation Zeilenabstand einstellen
nicht bei der späten Bindung. Damit der Compiler meckert musst Du die frühe Bindung machen, d.h. die TLB in eine pas umwandeln und diese einbinden und verwenden.
|
AW: Wordautomation Zeilenabstand einstellen
Hallo Lemmy,
in meiner Form steht in der uses comobj. Die comobj ist m.E. bereits eine pas. Was übersehe ich? Gruß Alfred |
AW: Wordautomation Zeilenabstand einstellen
alles was du in Delphi einbindest dürfte ne pas sein - zumindest wenn Sourcen drin stehen.
Du sollst über Delphi Menü Komponente - Komponente importieren - Typbibliothek importieren: in der Liste dann Microsoft Word suchen und auswählen. Dazu muss Word natürlich importiert sein. Auf der nächsten Seite die "Palette" nicht definieren, ebenso wenig "Komponenten Wrapper erstellen" auswählen. Nochmal "Weiter" und "Unit anlegen" und Fertigstellen. Die Unit kannst Du dann einbinden und die Klasse TWordApplication (oder wie immer die dann auch heißt) "normal" wie jede andere Klasse in Delphi nutzen. Nachteil dieser Art ist aber, dass dein Programm dann ohne installiertes MS Word mit aktiver OLE-Schnittstelle nicht mehr laufen wird. Die comobj enhält "lediglich" die notwendigen Sourcen um mit COM zu arbeiten |
AW: Wordautomation Zeilenabstand einstellen
hallo,
als Beispiel
Delphi-Quellcode:
procedure TForm50.Button1Click(Sender: TObject);
var myword:word_tlb._application; mydocument, myvisible, mysavechanges, mytemplate, newtemplate, mydokumenttype, myorginalformat, myRouteDocument:Olevariant; begin myword:=Word_TLB.CoWordApplication.Create; mytemplate:='Normal'; newtemplate:=False; mydokumenttype:=wdNewBlankDocument; myvisible:=True; mysavechanges:=wdDoNotSaveChanges; myorginalformat:=wdOriginalDocumentFormat; myRouteDocument:=False; try myword.Documents.Add(mytemplate,newtemplate,mydokumenttype,myvisible); myword.Visible:=True; // myword.Quit(mysavechanges,myorginalformat,myRouteDocument); except end; end; hier ist eine gute Erklärung [URL="https://www.delphi-treff.de/tipps-tricks/comoledde/andere-office-anwendungen/excel-mit-ole-automation-steuern/"]https://www.delphi-treff.de/tipps-tricks/comoledde/andere-office-anwendungen/excel-mit-ole-automation-steuern/[/URL] Gruß |
AW: Wordautomation Zeilenabstand einstellen
Hallo Lemmy vielen Dank für die Infos.
Es hat etwas gedauert, bis ich dcloffice2010270.bpl in \21\bin\ gefunden hatte. Gruß Alfred |
AW: Wordautomation Zeilenabstand einstellen
Hallo mmw,
ich habe den Beispiel etwas abgeändert, damit es bei mir läuft.
Delphi-Quellcode:
Wo könnte ich denn auf Querdruck umstellen?
procedure TForm2.Button1.click(Sender: TOjekt);
Var mytemplate: OleVariant; myvisible: OleVariant; newtemplate: OleVariant; mydokumenttype: OleVariant; begin mytemplate := 'Normal'; newtemplate := False; mydokumenttype := wdNewBlankDocument; myvisible := True; myword.connect; myword.Visible := True; myword.Documents.Add(mytemplate,newtemplate,mydokumenttype,myvisible); myword.Selection.Font.Name := 'Courier New'; myword.Selection.Font.Size := 10; myword.Selection.Font.Bold := 1; myword.Selection.TypeText('Hello World'); end; Gruß Alfred |
AW: Wordautomation Zeilenabstand einstellen
Zitat:
Du kannst "verschollene" Dateien auf Festplatten/USB-Sticks etc. am schnellsten mit Everything.exe ![]() Gruß, Andreas |
AW: Wordautomation Zeilenabstand einstellen
Hallo mmw,
ich hab den Querdruck gefunden:
Delphi-Quellcode:
myword.Selection.PageSetup.Orientation := 1; |
AW: Wordautomation Zeilenabstand einstellen
Hallo,
für mein Beispiel muss man die Typbibliothek erstellen und einbinden. Haupsache es funktioniert. Gruß |
AW: Wordautomation Zeilenabstand einstellen
Hallo mmw,
ich habe die Ursache gefunden warum es bei mir funkioniert. Wenn in der Delphi-Komponenten-Palette "Serverkomponenten" die Komponente "TWordApplication" existiert, ist die Typbiliothek bereits installiert. In WordApplikation1 habe ich den Namen auf myword geändert und konnte deshalb Deinen Programmcode weiter verwenden. Gruß Alfred |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 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