![]() |
Rahmen in der Kopfzeile von Word zeichnen (OLE)
Hallo,
ich habe folgenden Code mit dem Makrorecorder von Word aufgezeichnet
Delphi-Quellcode:
Nun habe ich versucht ihn in Delphi umzusetzen
// Dies ist VBA Code, aber als Zitat wird er leider nicht eingerückt dargestellt
With Selection.ParagraphFormat .Borders(wdBorderLeft).LineStyle = wdLineStyleNone .Borders(wdBorderRight).LineStyle = wdLineStyleNone .Borders(wdBorderTop).LineStyle = wdLineStyleNone With .Borders(wdBorderBottom) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .ColorIndex = wdAuto End With With .Borders .DistanceFromTop = 1 .DistanceFromLeft = 4 .DistanceFromBottom = 1 .DistanceFromRight = 4 .Shadow = False End With End With
Delphi-Quellcode:
Beim Compilieren bringt mir die IDE immer einen fehler "Record, Objekt oder Klassentyp erforderlich" bei
...
var WordApp: OLEVariant; ... With WordApp.Selection.ParagraphFormat do begin Borders(-2 {=wdBorderLeft}).LineStyle := 0; // = wdLineStyleNone Borders(-4 {=wdBorderRight}).LineStyle := 0; // = wdLineStyleNone Borders(-1 {=wdBorderTop}).LineStyle := 0; // = wdLineStyleNone With Borders(-3 {=wdBorderBottom}) do begin LineStyle := 1; // = wdLineStyleSingle LineWidth := 4; // = wdLineWidth050pt ColorIndex := 0; // = wdAuto end; With Borders do begin DistanceFromTop := 1; DistanceFromLeft := 4; DistanceFromBottom := 1; DistanceFromRight := 4; Shadow := False; end; end;
Delphi-Quellcode:
Was bitte mache ich denn falsch?
With WordApp.Selection.ParagraphFormat do
Gruß Holger. :gruebel: |
Re: Rahmen in der Kopfzeile von Word zeichnen (OLE)
Ich würde grundsätzlich erstmal auf das Aufhübschen mit "with" verzichten, das macht das Debuggen leichter.
Dann würde ich nicht per Variant Word einbinden, weil das einfach nur viiiieeeel zu langsam ist. Es gibt doch in Delphi MS-Office Komponenten, falls nicht, kannst Du die OLE-Server selber einbinden. Nimm die, da ist dann alles dabei was Du brauchst, und Codecompletion funktioniert auch. Edit: Mal davon abgesehen, ist "Selection" eine Property von Document oder ActiveDocument. Du gehst aber auf WordApp. Du müsstest also
Delphi-Quellcode:
verwenden.
WordApp.ActiveDocument.Selection
Sherlock |
Re: Rahmen in der Kopfzeile von Word zeichnen (OLE)
Hallo,
Zitat:
Es wird derselbe Fehler erzeugt. [Edit] Die Variante ohne With habe ich auch schon hinter mir. Bsp: WordApp.Selection.ParagraphFormat.Borders(-2 {=wdBorderLeft}).LineStyle := 0; // = wdLineStyleNone Klappt auch nicht. [/Edit] |
Re: Rahmen in der Kopfzeile von Word zeichnen (OLE)
Ich habe mich vertan, die Fehlemeldung ist nicht dieselbe.
Bei der variante ohne With
Delphi-Quellcode:
kommt : "Borders ist keine Methode".
WordApp.Selection.ParagraphFormat.Borders(-2 {wdBorderLeft}).LineStyle := 0; // = wdLineStyleNone
|
Re: Rahmen in der Kopfzeile von Word zeichnen (OLE)
Dann setzt die Parameter von Borders in eckige Klammern. Borders ist eine Aufzählung der Border-Objekte.
Vergleiche dazu die VB-Hilfe: Zitat:
Sherlock |
Re: Rahmen in der Kopfzeile von Word zeichnen (OLE)
Ne, klappt auch nicht
Mit
Delphi-Quellcode:
Erhalte ich "Items ist keine Eigenschaft".
WordApp.Selection.ParagraphFormat.Borders[-2].LineStyle := 0;
|
Re: Rahmen in der Kopfzeile von Word zeichnen (OLE)
Argh...ich erinnere mich, daß das viel rumgespiele war. Wie siehts mit Borders.Border[-2] aus?
Sherlock |
Re: Rahmen in der Kopfzeile von Word zeichnen (OLE)
Resultat:
"Die Methode 'Border' wird vom Automatisierungsobjekt nicht unterstützt. :gruebel: |
Re: Rahmen in der Kopfzeile von Word zeichnen (OLE)
Hallo zusammen,
wahrscheinlich dummer Einwand aber -2 als Index? Gruß K-H |
Re: Rahmen in der Kopfzeile von Word zeichnen (OLE)
Das ist lediglich die Übersetzung der Konstanten
wdBorderLeft ist dann halt -2 Das hat sich einer von Bills Jungs ausgedacht. Edit: Macht aber natürlich Probleme, weil negative Indizes a bisserl problematisch sein dürften. Oh weh....ich kram mal mein altess Word-Projekt raus. Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 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