Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Word OLE ReadOnly, Meldung beim Beenden unterdrücken (https://www.delphipraxis.net/168925-word-ole-readonly-meldung-beim-beenden-unterdruecken.html)

hoika 19. Jun 2012 07:54

Word OLE ReadOnly, Meldung beim Beenden unterdrücken
 
Hallo #,

folgender Code öffnet ein Dokument ReadOnly in Word.

Delphi-Quellcode:
FWordApp.Documents.Open(DocTemplate,ConfirmConversions,
      ReadOnly,AddToRecentFiles,
      PasswordDocument,PasswordTemplate,
      Revert,WritePasswordDocument,
      WritePasswordTemplate,Format,
      Encoding, Visible);
FWordApp.ActiveDocument.Protect(wdAllowOnlyFormFields,EmptyParam,EmptyParam);
FWordApp.DisplayAlerts:= wdAlertsNone;
Dummerweise kommt immer noch die Meldung "Dokument speichern?",
wenn ich Word beende.

Den Code habe ich hier noch gefunden,
bekomme ihn aber unter Delphi nicht zum Laufen ?

http://www.a-m-i.de/tips/office/officeautomation.php
VARIANT vArgsClose;
vArgsClose.vt = VT_BOOL;
vArgsClose.boolVal = FALSE;
spDocuments.Invoke1(L"Close", &vArgsClose, &vResult);

Hat jemand noch einen Tip für mich ?

Danke


Heiko

shmia 19. Jun 2012 08:26

AW: Word OLE ReadOnly, Meldung beim Beenden unterdrücken
 
Wenn du ein Dokument öffnest, dann solltest du es in einer Zwischenvariable speichern.
Delphi-Quellcode:
var
  mydoc : _Document;
begin
  mydoc := FWordApp.Documents.Open(DocTemplate,ConfirmConversions,
      ReadOnly,AddToRecentFiles,
      PasswordDocument,PasswordTemplate,
      Revert,WritePasswordDocument,
      WritePasswordTemplate,Format,
      Encoding, Visible);
  mydoc.Protect(wdAllowOnlyFormFields,EmptyParam,EmptyParam);
 
  // ...
  // Dokument schliesen ohne speichern
  mydoc.Close({SaveChanges=}False, EmptyParam, EmptyParam);

hoika 19. Jun 2012 10:20

AW: Word OLE ReadOnly, Meldung beim Beenden unterdrücken
 
Hallo,

mag sein, das Dumme nur, dass immer die "Datei speichern?"-Meldung kommt.
Da ich nur ein Dokument öffne, reicht für mich das ActiveDocument.

Noch zur Info, es wird eine RTF-Datei geöffnet.

Ich sitze seit 07:30 an diesem vermaledeiten Ding ;(
Im Netz sehe ich, ich bin nicht der einzige.
Probiert habe ich auch das nochmalige Speichern per Save/aveAs,Appliction.Quit usw.

Gerade bin ich über eine Seite bei MS gestolpert,
die vorschlägt, ein "N" per SendKeys (Visual Basic) an den Dialog zu schicken ...
(in diesem Fall ein Drucker-Auswahl-Dialog)


Ich glaube, ich weiss jetzt, wo das Problem ist !
Die RTF wird per WPTools erzeugt.
Word konvertiert ide Datei und fragt jetzt beim Beenden immer nach "Speichern".


Heiko

p80286 19. Jun 2012 10:27

AW: Word OLE ReadOnly, Meldung beim Beenden unterdrücken
 
So als Idee,
was passiert wenn Du auf das
Delphi-Quellcode:
ActiveDocument.Protect
verzichtest?
Wenn du eh nicht speichern willst, dann ist es egal was mit dem geöffneten Dok passiert.
Delphi-Quellcode:
ActiveDocument.Close(0)
könnte vllt. helfen. Word ist ja manchmal recht eigenwillig

Gruß
K-H

ibp 19. Jun 2012 10:43

AW: Word OLE ReadOnly, Meldung beim Beenden unterdrücken
 
DisplayAlerts:= wdAlertsNone;

ist wdAlertsNone = false?


vielleicht hilft das....

ActiveDocument.Saved := True

shmia 19. Jun 2012 11:01

AW: Word OLE ReadOnly, Meldung beim Beenden unterdrücken
 
Oder du speicherst es unter einem temporären Dateinamen und löschst anschliesend diese Datei.
Schade ist nur dass man unter Windows nicht als /dev/null speichern kann.

hoika 19. Jun 2012 11:14

AW: Word OLE ReadOnly, Meldung beim Beenden unterdrücken
 
Hallo,

in allen Fällen kommt diese däml. Meldung "Wirklich speichern".

ActiveDocument.Saved := True probiere ich aus.

Das Protect muss drinbleieben,
es handelt sich um eine Rechnung.
Die darf er drucken.
Und erst nach dem Drucken wird die RTF in die DB geschrieben.
Er soll nicht mal auf die Idee kommen, dass er die Rechnung "bearbeiten" kann.


Danke


Heiko

hoika 19. Jun 2012 11:34

AW: Word OLE ReadOnly, Meldung beim Beenden unterdrücken
 
Hallo,

Delphi-Quellcode:
ActiveDocument.Saved := True
Wuhaaaaaaaaaaaaa

07:30-12:30 wegen einer Zeile !!!

1000 Danke !!! ;)


Heiko

ibp 19. Jun 2012 11:36

AW: Word OLE ReadOnly, Meldung beim Beenden unterdrücken
 
Zitat:

Zitat von hoika (Beitrag 1171567)
07:30-12:30 wegen einer Zeile !!!

das nächste mal fragst du gleich! :wink:

hoika 19. Jun 2012 12:22

AW: Word OLE ReadOnly, Meldung beim Beenden unterdrücken
 
Hallo,

um 09:00 hatte ich ja gefragt ... ;)


Heiko


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