Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wordautomation Zeilenabstand einstellen (https://www.delphipraxis.net/208260-wordautomation-zeilenabstand-einstellen.html)

Alfredo 5. Jul 2021 16:53


Wordautomation Zeilenabstand einstellen
 
Delphi-Quellcode:

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;
Der Zeilenabstand zu Text2 ist leider größer als nächste Zeile.

Andreas13 5. Jul 2021 18:21

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

mmw 5. Jul 2021 18:50

AW: Wordautomation Zeilenabstand einstellen
 
hallo,
das sollte hiermit funktionieren.

https://docs.microsoft.com/de-de/off...inespacingrule

Gruß

Jumpy 6. Jul 2021 08:22

AW: Wordautomation Zeilenabstand einstellen
 
Evtl. wäre es auch etwas Word-Konformer, wenn man anstatt mit CHR(13) usw. zu arbeiten, Paragraphs.Add benutzt.

Alfredo 6. Jul 2021 09:26

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.

Jumpy 6. Jul 2021 10:40

AW: Wordautomation Zeilenabstand einstellen
 
Zitat:

Zitat von Alfredo (Beitrag 1491930)
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.

ActiveDocument.Paragraphs(1).Range.InsertBreak wdLineBreak

Wobei + CHR(11) schon einfacher ist :-D

Alfredo 7. Jul 2021 07:53

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?

Lemmy 7. Jul 2021 08:21

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.

Alfredo 7. Jul 2021 11:02

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

Lemmy 7. Jul 2021 16:37

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:20 Uhr.
Seite 1 von 2  1 2      

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