![]() |
OleContainer (jetzt auch mit OnChange)
Hallo an alle!!!
Ich habe mir mal einwenig den kopf zerbrochen und möchte meine erfolge mit euch teilen. Für verbesserungsvorschläge und Fehler-feedback währe ich dankbar. (Lob natürlich auch :wink: , wenn verdient^^) Der standart OleContainer bezitzt kein OnChange ereigniss, und das property Modified überprüft leider keine veränderungen, sondern setzt sich auch beim laden des OleContainers auf True, ebenso wenn man in den Edit modus des OleContainers wechselt und nichts verändert. Desshalb habe ich ein OnChange ereignis eingebettet, das wirklich nur bei änderungen durchlaufen wird. Hier die anleitung um sich den OleContainer selbst umzubauen: Schritt 1: Eine Kopie der Unit OleCtnrs anlegen und mit einem sinnvollen Namen versehen(z.B. WHOleCtnrs)! Schritt 2: Öffnen der Kopierten Unit (z.B. WHOleCtnrs) und den Unit-Namen in den Dateinamen ändern. Schritt 3: Alle "TOleContainer." in einen gewünschten Komponenten-Namen ändern (z.B. TWHOleContainer). Schritt 4: Im interface teil die Register procedure definieren.
Delphi-Quellcode:
Und die procedure im implementation teil anlegen.
procedure Register;
Delphi-Quellcode:
Schritt 5: Alles folgene bezieht sich jetzt nur auf die neue Klasse des OleContainers (in diesem Beispiel auf den Typ TWHOleContainer).
procedure Register;
begin RegisterComponents('System', [TWHOleContainer]); //Hier natürlich dan den tatsächlichen typen namen verwenden und nicht den aus dem Beispiel end; 5.1: Unter privat folgendes hinzufügen:
Delphi-Quellcode:
5.2: Unter protected folgendes hinzufügen:
private
FOnChange: TNotifyEvent; //Geändert (Neu)
Delphi-Quellcode:
5.3: Unter published folgendes hinzufügen:
protected
procedure Change; virtual;//Geändert (Neu)
Delphi-Quellcode:
5.4: In der SaveObject function, als letztes die soeben definierte Change procedure aufrufen:
published
property OnChange: TNotifyEvent read FOnChange write FOnChange; //Geändert (Neu)
Delphi-Quellcode:
5.5: Jetzt noch die Change procedure im implementation bereich erstellen:
function TWHOleContainer.SaveObject: HResult;
var PersistStorage: IPersistStorage; begin . . Change; //Geändert (Neu) end;
Delphi-Quellcode:
Schritt 6: Alles speichern und unter Komponente --> Komponente installieren... die soeben erstellte unit mit der neuen komponente installieren.
procedure TWHOleContainer.Change; //Geändert (Neu)
begin if Assigned(FOnChange) then FOnChange(Self); //OnChange ereigniss starten end; Schritt 7: Sich freuen das man es (hoffentlich) geschaft hat :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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