Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Word-Dokument Darstellungsfehler (https://www.delphipraxis.net/43235-word-dokument-darstellungsfehler.html)

JPSelter 31. Mär 2005 08:53


Word-Dokument Darstellungsfehler
 
Ich lasse aus Delphi ein Word-Dok generieren mit vielen Tabellen und Text-Inhalten. Jetzt kommt aber etwas seltsames: Lasse ich das Word-Dok erstellen während Word.visible=false ist, bekomme ich falsche Ergebnisse: Die Schriftarten verschieben sich, die Tabellen überlappen sich und sind falsch verschachtelt. Lasse ich Word.visible=true dann dauert die Erstellung 3x so lange, aber die Darstellung ist völlig korrekt. Wie kann sowas passieren?

Ausserdem wäre es nett, wenn jemand von hier auf meine Frage in http://www.delphipraxis.net/internal...ct.php?t=50444 antworten könnte :) Danke!

Albi 31. Mär 2005 09:11

Re: Word-Dokument Darstellungsfehler
 
Hallo, übergibst Du während der Erstellung vielleicht irgendwelche Formatvorlagen - Seitenrand usw.? Dann kann ich mir vorstellen, dass wenn das WordDoc erstellt wird, die Formatierung durcheinander gebracht wird. Also ich meine, wenn du es mit visible:= False erstellt, dass Word dann beim erstellen seine eigene Formatierung wieder darüber legt und somit die Formatierung durcheinander würfelt.

JPSelter 31. Mär 2005 10:15

Re: Word-Dokument Darstellungsfehler
 
Hmmm da blicke ich noch nicht ganz durch. Aber ich erkläre es mal genauer:

Code:
FileName:=Extractfilepath(Application.exename)+'def.doc';
    WordApp:=CreateOleObject('Word.Application');
    WordApp.Visible:=true;
    NewDoc:=WordApp.Documents.Open(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Wenn ich das WordApp.Visible weglasse, kommt alles durcheinander. Word lädt hier eine vorgefertigte Datei, wo eigentlich nur ein Kopf drin ist. Dann folgt eine kleine einfache Tabelle, die keine Probleme macht. Dann folgt eine neue Tabelle, die durch for-Schleifen erstellt wird (Anzahl der Zeilen hängt von der Anzahl meiner Array-Elemente ab). Und hier kommt Word durcheinander und haut die dritte Tabelle in die zweite rein. Ich habe das Gefühl, dass vielleicht die Cursor-Position da durcheinanderkommt, denn wenn es nicht visible ist, gibt es ja auch keinen Cursor.

JPSelter 31. Mär 2005 10:52

Re: Word-Dokument Darstellungsfehler
 
Ich würde gerne mal folgendes ausprobieren: Statt hide einfach minimize. Vielleicht klappt das ja. Aber wie setze ich das? WordApp.minimize oder sowas?

Albi 31. Mär 2005 11:22

Re: Word-Dokument Darstellungsfehler
 
Zitat:

Zitat von JPSelter
Dann folgt eine kleine einfache Tabelle, die keine Probleme macht. Dann folgt eine neue Tabelle, die durch for-Schleifen erstellt wird (Anzahl der Zeilen hängt von der Anzahl meiner Array-Elemente ab). Und hier kommt Word durcheinander und haut die dritte Tabelle in die zweite rein.

Das klingt logisch, hast Du mal versucht einfach nen "Enter" per Hand einzufügen? Um den Cursor aus der Tabelle rauszunehmen?

JPSelter 31. Mär 2005 11:27

Re: Word-Dokument Darstellungsfehler
 
Ich weiss nicht... mein Cursor steht standardmässig am oberen Rand des Doks, dann kommt dort die Tabelle hin. Wenn die Tabelle fertig ist, mache ich soviele WordApp.Selection.MoveDown wie ich brauche, um den Cursor unter die Tabelle zu bekommen für die nächste. Das klappt alles ganz normal, solange ich Word nicht hide. Das ist der einzige Unterschied zwischen "es klappt" und "es klappt nicht". Daher nehme ich an, dass wenn Word nicht gezeigt wird, auch kein Cursor ist, denn man verschieben könnte. Daher möchte ich mal nicht hide, sondern minimize verwenden, aber ich kenne den Befehl nicht, Word zu minimieren.

Albi 1. Apr 2005 06:36

Re: Word-Dokument Darstellungsfehler
 
Hallo,

versuche doch mal den Befehl MoveDown durch WordApp.Selection.TypeParagraph zu ersetzen.Damit simulierst Du ein Enter.

Bei mir funzt das ohne Probleme. Und meine Documents werden auch erst sichtbar, wenn alles erstellt wurde.

JPSelter 6. Apr 2005 10:52

Re: Word-Dokument Darstellungsfehler
 
Ich habe langsam den Eindruck, dass MoveDown nicht funktioniert, wenn Word nicht sichtbar ist. Er ignoriert es dann einfach. MoveDown kann ich leider nicht durch TypeParagraph ersetzen, weil ich den Cursor nicht durch ENTER aus der Tabelle rausbewegen kann, sondern nur mit der Pfeil-nach-unten-Taste.

muenster 16. Apr 2005 13:44

Re: Word-Dokument Darstellungsfehler
 
Hallo,

zunächst würde ich keine .doc aufrufen sondern das Ganze über eine Vorlage (.dot) steuern. Man hat dann keine Probleme bei Änderungen in der normal.dot.

Die erste Tabelle ist ja in der Datei definiert, dann kann man da raus und dort eine Textmarke setzen. Die Textmake kann dann in der Fernsteuerung durch (nicht hauen, nur navigations-Befehl) GoTo Anweisung anspringen. So kommt der Cursor aus der esten Tabelle raus ohne diese mit der zweiten zu verunstalten.

Der GoTo ist von 97 auf 2000 anders aufzurufen, also Version checken - Delph Unit/ Word!


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