![]() |
OTA: wie fange ich speichern ab?
ich möchte eine *.bpl schreiben, die sich in das Abspeichern von Projekten einklingt. Ich habe zwar folgenden Notifierer installiert, aber BeforeSave wird nie aufgerufen.
Delphi-Quellcode:
Außerdem könnte ich den Vorgang nicht unterbrechen.
...
TIdeNotifier = class(TNotifierObject, IOTANotifier, IOTAIDENotifier, IOTAActionServices) private FFileName: string; protected procedure AfterSave; overload; procedure BeforeSave; overload; procedure FileNotification(NotifyCode: TOTAFileNotification; const FileName: string; var Cancel: Boolean); overload; ... Es gibt ein IOTAActionServices interface, in dem folgende Funktionen definiert sind:
Delphi-Quellcode:
Wie klinke ich mich in die SaveFile ein?
...
function CloseFile(const FileName: string): Boolean; function OpenFile(const FileName: string): Boolean; function OpenProject(const ProjName: string; NewProjGroup: Boolean): Boolean; function ReloadFile(const FileName: string): Boolean; function SaveFile(const FileName: string): Boolean; ... Hintergrund: Ich möchte verhindern, das unsere Delphi Programmierer *.pas / *.dfm Dateien auf C: speichern. Jeder Quelltext (auch Testprogramme oder Beispiele) soll auf dem Netzwerk (LW B: oder M:) gespeichert werden. Bei anderen Laufwerken sollte nur eine kleine Fehlermeldung kommen. Wenn ich mich in obige Funktionen einklingen könnte wäre das ideal: Ich habe den FileNamen und kann mit Result bestimmen ob es zulässig ist. Man müsste nur im "Erfolgsfall" die alte SaveFile aufrufen. Fertig.
Delphi-Quellcode:
...
function SaveFile(const FileName: string): Boolean; begin if POS(ExtractFileDrive(FileName), 'B|M|\\SERVER\FREIGABE\') > 0 then begin Result := OldSaveFile(FileName); end else begin ShowMessage('Fehlermeldung'); Result := False; // nicht auf "richtigem" Laufwerk end; end; ... |
Re: OTA: wie fange ich speichern ab?
Probier mal override statt overload.
|
Re: OTA: wie fange ich speichern ab?
Zitat:
Ist keine Virtuelle ist eine Statische. FileNotification wird aufgerufen ;-), aber die *Save nicht :-(. |
Re: OTA: wie fange ich speichern ab?
Ach ja das sind die Implementationen der verschiedenen Interfaces und dort sind mehrere overload.
Bekommst du keine FileNotification? |
Re: OTA: wie fange ich speichern ab?
Zitat:
Zitat:
Ich muß beim Abspeichern der *.pas, *.dfm *.dpr, *.dpk, *.bpg, *.inc, *.sql, ... eingreifen. Leider kann man bei der FileNotification nur zwischen folgenden unterscheiden:
Delphi-Quellcode:
Ich sehe nicht wenn was gespeichert wird.
TOTAFileNotification = (ofnFileOpening, ofnFileOpened, ofnFileClosing,
ofnDefaultDesktopLoad, ofnDefaultDesktopSave, ofnProjectDesktopLoad, ofnProjectDesktopSave, ofnPackageInstalled, ofnPackageUninstalled, ofnActiveProjectChanged); Beim Drücken auf den Speichern Button wird keine FileNotification ausgeführt. Wohl aber beim Öffnen einer Unit. :-( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 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