Delphi-PRAXiS

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 MS Word / Excel in Form einbetten (https://www.delphipraxis.net/159951-ms-word-excel-form-einbetten.html)

QStorm 20. Apr 2011 08:33

MS Word / Excel in Form einbetten
 
Hi,

Vorab sorry falls die Frage schon einige Male gefallen ist, aber ich habe leider weder im Forum noch bei Google eine passende Antwort bekommen.

Ich möchte MS Word und Excel Dokumente in einem VCL Formular anzeigen. Ich habe es bereits über den TWebBrowser versucht, dieser ruft jedoch nur den "Speichern unter / öffnen" Dialog auf und der startet direkt Word / Excel. Kann man da vielleicht etwas über Einstellungen machen?

Am liebsten wäre es mir, wenn ich Word / Excel (inklusive Menü) in mein Formular einbetten könnte.

Hintergrund: Der Kunde soll die Dokumente direkt in meiner Anwendung lesen, bearbeiten und speichern können.

Evtl. kennt jemand eine Komponente die das unterstützt. Sie kann ruhig auch Geld kosten. ;)

P.S.: Ich habe mich schon mit WPTools und TRichView beschäftigt. Beide haben mich jedoch enttäuscht. Daher möchte ich nun direkt die Office Produkte benutzen. Kennt jemand vielleicht eine alternative zu den beiden Komponenten?

Vielen Dank im Voraus.
QStorm

Bernhard Geyer 20. Apr 2011 08:46

AW: MS Word / Excel in Form einbetten
 
Zitat:

Zitat von QStorm (Beitrag 1096138)
Ich möchte MS Word und Excel Dokumente in einem VCL Formular anzeigen. Ich habe es bereits über den TWebBrowser versucht, dieser ruft jedoch nur den "Speichern unter / öffnen" Dialog auf und der startet direkt Word / Excel. Kann man da vielleicht etwas über Einstellungen machen?

Kann man, sollte man aber nicht.

Die alternative Einbeddung wäre über einen OleContainer. (TOleContainer).

QStorm 21. Apr 2011 10:20

AW: MS Word / Excel in Form einbetten
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1096139)
Die alternative Einbeddung wäre über einen OleContainer. (TOleContainer).

Der TOleContainer funktioniert ganz gut. Zwei Punkte sind noch offen.

1. Wie kann ich den OleContainer direkt beim öffnen des Dokuments in den Editier-Modus versetzen (manuell über: Rechte Maustaste auf den Container -> Öffnen oder Bearbeiten)? Sprich er soll nicht das Preview anzeigen sondern gleich das Dokument in der entsprechenden Anwendung öffnen.

2. Bei Öffnen von Office Dokumenten (Excel, Word) werden die Office Ribbons über den eigentlichen OleContainer angezeigt. Leider verdecken sie so einige meiner Widgets. Zudem gehen die Ribbons über die gesamte Fentserbreite (egal wie groß der OleCOntainer ist). Kann man die Ribbons irgendwie in den TOleContainer verschieben? Ansonsten wäre der OleContainer bei Office Dokumenten für mich unbrauchbar.

Grüße
QStorm

QStorm 21. Apr 2011 10:23

AW: MS Word / Excel in Form einbetten
 
Ein Punkt habe ich noch vergessen:

Leider habe ich es bisher nicht hinbekommen, geöffnete Office Dokumente zu speichern (der Speichern-Button ist deaktiviert). Kann man in einem TOleContainer editierte Dokumente irgendwie speichern? Im besten Fall direkt über die specihern-Funktionalität der eingebetten Anwendung (Office z.B.)

QStorm 21. Apr 2011 10:32

AW: MS Word / Excel in Form einbetten
 
Und noch etwas ist mir aufgefallen. *.doc Dateien machen keine Probleme. Wenn ich jedoch *.docx Dokumente öffne und in den Editier-Modus wechsel kommt die Meldung:

"Objekt ist nicht mit dem Server verbunden."

Kann mir jemand sagen woran das liegt?

QStorm 21. Apr 2011 11:38

AW: MS Word / Excel in Form einbetten
 
Zitat:

Zitat von QStorm (Beitrag 1096350)
1. Wie kann ich den OleContainer direkt beim öffnen des Dokuments in den Editier-Modus versetzen (manuell über: Rechte Maustaste auf den Container -> Öffnen oder Bearbeiten)? Sprich er soll nicht das Preview anzeigen sondern gleich das Dokument in der entsprechenden Anwendung öffnen.

Den 1. Punkt habe ich bereits hiermit gelöst:

Delphi-Quellcode:
OleContainerExcel.DoVerb(ovShow);

soulies 21. Apr 2011 11:56

AW: MS Word / Excel in Form einbetten
 
hoi,

Zitat:

1. Wie kann ich den OleContainer direkt beim öffnen des Dokuments in den Editier-Modus versetzen
z.B. indem Du im OI von Tolecontainer den Wert von AutoActivate auf aaGetFocus stellst und bei Programmstart der Container den Fokus erhält

oder via Code

indem Du den entsprechenden Parameter verwendest für OleContainer.doVerb( xxx )

Zitat:

Bei Öffnen von Office Dokumenten (Excel, Word) werden die Office Ribbons über den eigentlichen OleContainer angezeigt
Kannst Du nicht den Container unter die Ribbons verschieben?


Zitat:

Leider habe ich es bisher nicht hinbekommen, geöffnete Office Dokumente zu speichern
Das ist standardmäßig deaktiviert.

Du kannst speichern --> über F12 den Dialog aufrufen oder fängst entsprechend den Key ab und führst deine eigene Prozedur aus.

cya

QStorm 21. Apr 2011 16:11

AW: MS Word / Excel in Form einbetten
 
Zunächst erstmal vielen Dank für die bisherigen Antworten.

Zitat:

Zitat von soulies (Beitrag 1096367)
hoi,
Zitat:

Bei Öffnen von Office Dokumenten (Excel, Word) werden die Office Ribbons über den eigentlichen OleContainer angezeigt
Kannst Du nicht den Container unter die Ribbons verschieben?

Das geht bei meiner Anwendung leider nicht. Meine Anwendung ist dem Explorer ähnlich. Im linken Bereich gibt es eine Liste von Dokumenten + verschiedene controls. Im rechten Bereich soll der OleContainer das ausgewählte Dokument anzeigen. Über diesen "Explorer" gibt es zudem Menüs. Leider verdecken die Ribbons sowohl das Menü als auch ein Teil der Liste.


Zitat:

Zitat von soulies (Beitrag 1096367)
hoi,
Zitat:

Leider habe ich es bisher nicht hinbekommen, geöffnete Office Dokumente zu speichern
Das ist standardmäßig deaktiviert.

Du kannst speichern --> über F12 den Dialog aufrufen oder fängst entsprechend den Key ab und führst deine eigene Prozedur aus.

cya

Kann man das irgendwie aktivieren?

Kann man den über F12 erreichbaren Dialog auch im Code aufrufen? z.B. Wenn man ein eigener Button gedrückt wird. Ich meine keinen eigenen SaveDialog sondern den von der im OleContainer angezeigten Anwendung (z.B. Word oder Excel).

QStorm 21. Apr 2011 16:17

AW: MS Word / Excel in Form einbetten
 
Ich sehe gerade das die Ribbons bzw. die Toolbars selbst die eigenen Scrollbars überdecken. Ist das vielleicht ein Bug im OleContainer. Ich kann mir schwer vorstellen, dass das so gewollt ist.

QStorm 23. Apr 2011 08:50

AW: MS Word / Excel in Form einbetten
 
Hat niemand eine Idee?

Sir Rufo 23. Apr 2011 09:06

AW: MS Word / Excel in Form einbetten
 
Zitat:

Zitat von QStorm (Beitrag 1096590)
Hat niemand eine Idee?

Bitte lese dir einmal die Forumsregeln durch.
Pushen von Beiträgen ist erst nach 24h erwünscht.

Möchtest du noch etwas schreiben, so kannst du auch deinen Beitrag innerhalb von 24h editieren, brauchst also keinen neuen Beitrag verfassen.

beamer 4. Aug 2011 10:02

AW: MS Word / Excel in Form einbetten
 
Hallo,

ich habe im Prinzip das selbe Problem.
Mein OleContainer liegt in einem Frame auf dem Form. Es klappt auch, dass sich Word startet usw..
Nun tauchen aber 2 Probleme auf:

1. Der Ribbon legt sich über Bereiche außerhalb des Frames wo er eigentlich gar nicht hingehört. Außerdem überdeckt er Teile des Dokuments (je nach Kopfzeilengröße teilweise sogar die ersten Zeilen komplett).

2. Wenn ich Problem 1. umgehen will indem ich den Fokus vorübergehend in ein Textfeld außerhalb des OleContainers setze um den Ribbon auszublenden schmiert Word ab, sobald ich über das Context-Menü irgendwelche Änderungen an der Schriftgröße machen will.

Ich habe schon versucht ggf. auf OpenOffice zu wechseln, das funktioniert aber gar nicht so wie ich das will (und die Dokumentation ist noch bescheidener als die von Microsoft...)
Gibt es keine alternative Komponente zum OleContainer? Ein Wechsel zu einer alten Word-Version habe ich mir auch schon überlegt (ohne Ribbon), das kommt langfristig aber eigentlich nicht als Lösung in Frage.

Die in einigen Beiträgen vorgeschlagene Methode das Word-Menü durch ein eigenes TMainMenu zu ersetzen scheint bei einer Word-Version mit Ribbon überhaupt nicht zu funktionieren.

Bin langsam echt am verzweifeln... :pale:

Wäre für jeden Tipp dankbar!

Edit: Habe eben von 2007er auf 2010 Word gewechselt und feststellen müssen dass sich in der 2010 Version auch noch die Navigationsschaltfläche einfach auf die linke Seite meines Forms einnistet.... Mittlerweile hab ich den Eindruck dass die Combo OleContainer mit Word > Version 2000 nicht gut harmoniert. Hoffe mal weiter, dass jemand von euch eine Lösung hat.

Chemiker 4. Aug 2011 18:29

AW: MS Word / Excel in Form einbetten
 
Hallo,

aus welchem Grund wird überhaut der OLEContainer benutzt?

Bis bald Chemiker

beamer 5. Aug 2011 09:22

AW: MS Word / Excel in Form einbetten
 
Hallo, danke für die schnelle Reaktion.

Ich will aus einer Textbox, die sich über eine Listview mit verschiedenen Inhalten füllt, markierte Textanteile in ein Worddokument kopieren. Da man sich die Texte aus mehreren Einträgen zusammenkopieren muss, soll das ganze im gleichen Form sein, damit man nicht ständig zwischen der Anwendung und einem extern geöffneten Word wechseln muss.

Erster Ansatz war ein RichEdit, aus dem dann nach Abschluß des Kopierens ein Word Dokument generiert wird. Da aber verschiedene Word-Vorlagen Basis sein sollen mußte ich diesen Ansatz verwerfen.

dominikkv 5. Aug 2011 10:16

AW: MS Word / Excel in Form einbetten
 
Ich habe die Erfahrung gemacht dass es besser ist, die Finger davon zu lassen. Du kannst zwar Teile des Ribbons ausblenden, aber nicht alles, außerdem musst du es danach wieder einblenden etc. Es nistet sich immer oben im Formular ein. Außerdem hatte ich auch Probleme mit der Größe... das habe ich aber wegbekommen, indem du den OLE-Container kleiner erzeugst, es anzeigst und dann vergrößerst. Einfach ein bisschen damit rumspielen. Sauber ist das allerdings nicht.

Chemiker 5. Aug 2011 12:43

AW: MS Word / Excel in Form einbetten
 
Hallo beamer,

soll der User im Word-Dokument weiter arbeiten? Und wenn ja, welche Manipulationen soll er im Word-Dokument vornehmen?

Bis bald Chemiker

beamer 5. Aug 2011 15:08

AW: MS Word / Excel in Form einbetten
 
Danke ein weiteres Mal für die Antworten! :-D

Ich habe mittlerweile auch festgestellt, dass je nach Art des Aligns das Verhalten des Containers verschieden ist. Seltsam...
Die Methode mit dem kleinen Container werde ich gleich mal testen.

Naja, zu deiner Frage Chemiker: ja, die User sollen die möglichkeit haben das Word Dokument wenn sie die Texte kopiert haben frei zu formatieren und ggf. auch noch Freitexte dazuerfassen können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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