Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TExcelApplication-OnWorkbookBeforeSave - Parameterproblem (https://www.delphipraxis.net/147657-texcelapplication-onworkbookbeforesave-parameterproblem.html)

Webo 13. Feb 2010 11:45


TExcelApplication-OnWorkbookBeforeSave - Parameterproblem
 
Ich habe ein Problem:
Ich vesuche über Delphi in Excel das "Speichern unter ..." bei einer schreibgschützten Datei zu unterbinden.
Über ExcelApplication1.OnWorkbookBeforeSave kommt man, meines Wissens nach genau an diese benötigte Funktion. Man kann ihr 4 Parameter übergeben:
  • ASender :TObject
  • Wb : _Workbook
  • SaveAsUI : Boolean
  • Cancel : Boolean
In meiner Ratlosigkeit, was ich da jetzt insbesondere beim ersten und zweiten Paramter übergeben soll, habe ich einfach mal folgendes draus gemacht *g*:
Delphi-Quellcode:
ExcelApplication1.OnWorkbookBeforeSave(ExcelApplication1, _WorkBook(ExcelApplication1.Application.Workbooks), True, True);
Wie zu erwarten funktioniert das natürlich nicht, sondern es kommt der Fehler "E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen." :wiejetzt:

Nun steh ich da und weiß nicht mehr weiter, was denn da eingesetzt werden muss :gruebel:

Ich erbitte Eure Hilfe


MfG

Webo




PS: Wenn ihr einen besseren/anderen Weg kennt, das "Speichern unter ..." zu verhindern, dann ist der Vorschlag auch sehr willkommen.

mkinzler 13. Feb 2010 11:49

Re: TExcelApplication-OnWorkbookBeforeSave - Parameterprobl
 
Diese Methode ist ein callback; d.h du musst/darfst sie nicht Aufrufen, sondern musst eine entsprechende Methode implementieren, die dann Aufgerufen wird.

Webo 13. Feb 2010 11:59

Re: TExcelApplication-OnWorkbookBeforeSave - Parameterprobl
 
Jetzt, wo du es sagst, seh ich das auch ;-) Aber: Wie müsste im Groben so eine Methode aussehen ? Ich kann mir da beim Besten Willen nichts drunter vorstellen ...

mkinzler 13. Feb 2010 12:02

Re: TExcelApplication-OnWorkbookBeforeSave - Parameterprobl
 
Mach einfach einen Klick auf den Event im OI, dann legt die IDE die Methode an und verbindet diese mit der Eventproperty.

Setzte in der Methode Cancel auf True um ein Schreiben zu verhindern

Webo 13. Feb 2010 12:08

Re: TExcelApplication-OnWorkbookBeforeSave - Parameterprobl
 
Oh nein, wie peinlich, ich hab ganz vergessen, dass die Komponente auf der Form liegt und man ja, wie du schriebst, ganz einfach im Objektinspektor das einstellen kann ... Daran hab ich gar nicht mehr gedacht :oops:

Gut jetzt funktioniert es, aber nur beim "Speichern" Menüpunkt, der "Speichern unter ..." Punkt funktioniert weiterhin. Weiß jemand, woran das lieben könnte ?

mkinzler 13. Feb 2010 12:11

Re: TExcelApplication-OnWorkbookBeforeSave - Parameterprobl
 
Setze SaveAsUI mal auf False.

Das ganze funktioniert natürlich auch mit dynamisch erzeugten Komponenten. hier muss man die Methode halt manuell anlegen und
Delphi-Quellcode:
<Komp>.on<Event> := <Klasse>.Methode;
mit dem Event verbinden

Webo 13. Feb 2010 12:17

Re: TExcelApplication-OnWorkbookBeforeSave - Parameterprobl
 
Zitat:

Zitat von mkinzler
hier muss man die Methode halt manuell anlegen und
Delphi-Quellcode:
<Komp>.on<Event> := <Klasse>.Methode;
mit dem Event verbinden

Genau daran dachte ich ja zuerst und das hatte mich verwirrt und ich wusste absolut nicht, wie das hätte aussehen sollen.

SaveAsUI hatte ich gleich schon auf False gehabt, weil ich das schon irgendwo gelesen hatte, aber funktionieren tut es trotzdem nicht.

Webo 13. Feb 2010 12:30

Re: TExcelApplication-OnWorkbookBeforeSave - Parameterprobl
 
Folgende kleine Einstellung brachte den Erfolg:

in ExcelApplication1 den Wert ConnectKind auf ckRemote stellen ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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 by Thomas Breitkreuz