Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zugriffe auf MS Word (https://www.delphipraxis.net/151398-zugriffe-auf-ms-word.html)

mkinzler 17. Mai 2010 06:59

Re: Zugriffe auf MS Word
 
Diese Elemente werden ja von Word verwaltet. Du brauchst dich um deren Freigabe also nicht kümmern

Mysterio08 17. Mai 2010 07:12

Re: Zugriffe auf MS Word
 
Zitat:

Zitat von mkinzler
Diese Elemente werden ja von Word verwaltet. Du brauchst dich um deren Freigabe also nicht kümmern

Das ist mir klar, mit der Frage nach dem Free ein paar Posts zuvor habe ich eine Variable vom Typ TWordApplication gemeint, die ich im OnCreate-Ereignis mit Word := TWordApplication.Create(Self) erstellt (wenn ich deine Aussage im richtigen Kontext verstanden habe).

Aber mir geht es jetzt um den Zugriff auf die ActiveX-Steuerelemente, was ich nicht hinbekomme.

idefix2 17. Mai 2010 09:00

Re: Zugriffe auf MS Word
 
Zitat:

habe ich eine Variable vom Typ TWordApplication gemeint
Geanu. Alles, was Du mit Create erstellst, musst Du selbst wieder freigeben. TWordApplication ist ein Delphi Wrapperklasse, die den Zugriff auf Word vereinfacht. Derartige Objekte müssen am Ende wieder freigegeben werden. Wenn Du direkt auf die COM Schnittstelle zugreift, ist das nicht nötig.


Zitat:

um den Zugriff auf die ActiveX-Steuerelemente
Ich muss zugeben, dass ich noch nicht versucht haben, die Word Automatisierung auf diese Art zu verwenden. Wenn der Anwender an vordefinierten Stellen des Dokuments Eingaben machen soll, dann lasse ich ihn die direkt in meinem Delphi Programm machen, und verwende in Word bloss Textmarken, zu denen ich springe und die Daten dort in das Dokument einfliessen lasse. Ich glaube, dass ich damit eine bessere Kontrolle über das Geschehen habe, als wenn die Benutzereingaben auf active-X Elemente von Word ausgelagert werden.

Die active-X Komponenten von Word sind doch eher dafür gedacht, Automatisierung in ein Word Dokument einzubauen, das direkt aufgerufen wird? Wenn Du die Wordapplikation ohnehin über ein externes Programm steuerst, kompliziert es die Sache eigentlich nur.

p80286 17. Mai 2010 12:43

Re: Zugriffe auf MS Word
 
Zitat:

Zitat von Mysterio08
Beispielsweise habe ich in der Kopfzeile ein Feld, das ich mit dem aktuellen Datum füllen will, welches von Delphi ermittelt und in einer Variable gespeichert wurde - klar muss ich für diesen Fall nicht extra ein Steuerelement benutzen, aber es ist ja nicht ausgeschlossen.

Dafür verwendest Du, wie Idefix2 es vorgeschlagen hat bookmarks.
Zitat:

Zitat von Mysterio08
.... Nun habe ich im "Objektinspektor" von VBA die Name-Eigenschaft geändert und versucht, mit der oben genannten Funktion auf das AcitveX-Steuerelement zuzugreifen, das hat aber nicht funktioniert.

Wie muss der Code lauten?

Du solltest so vorgehen, daß Du zunächst ein Wordmakro schreibst, das alles das kann was du erreichen willst.
Das must du "nur" noch in der Syntax so anpassen, daß Delphi das auf Word loslassen kann.

Und was mit dem Wordmakro nicht geht, das kannst Du durch die Delphi-Hintertür auch nicht erreichen.
(Abgesehen von Berechnungen etc. )

Gruß
K-H

@idefix2
Zitat:

Die active-X Komponenten von Word sind doch eher dafür gedacht, Automatisierung in ein Word Dokument einzubauen, das direkt aufgerufen wird? Wenn Du die Wordapplikation ohnehin über ein externes Programm steuerst, kompliziert es die Sache eigentlich nur.
Es gibt ja auch die Möglichkeit einer "Standardschnittstelle", die keine Möglichkeit hat Benutzerdialoge aufzubauen, da ist AktiveX wohl vonnöten.
Oder die Generierung eines Formulars....

Mysterio08 22. Mai 2010 16:04

Re: Zugriffe auf MS Word
 
Danke erstmal für die ganzen hilfreichen Antworten. Ich kann mich jetzt erst melden, weil ich für ein paar Tage nicht dar war.

Gut, dann werde ich das mit den ActiveX-Elementen erstmal seinlassen; idefix2 hat im Post #13 von Textmarken als Alternative gesprochen - ist das, was in diesem Tutorial unter Datenübergabe zu finden ist?

Ansonsten würde ich mich über weitere Tutorial-Vorschläge freuen, damit ich praktisch ein wenig weiterkomme.

idefix2 22. Mai 2010 18:13

Re: Zugriffe auf MS Word
 
Nein, das steuert offenbar die Mailmerge Funktion von Word an.
Ich glaube wirklich, dass die Ansteuerung von Textmarken das allereinfachste ist, um mit Hilfe von Word Texte automatisch zu produzieren:

Delphi-Quellcode:
procedure PrintStringAtBookmark (bookmark, text: string);
var oleparam: olevariant;
begin
 oleparam := bookmark;
 WordDoc.Bookmarks.item(oleparam).select;
 WordApp.Selection.TypeText (text);
end;
Je nach Bedarf noch ein Exception handling einbauen, wenn es das Bookmark nicht gibt


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 Uhr.
Seite 2 von 2     12   

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