AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi OleContainer (jetzt auch mit OnChange)
Thema durchsuchen
Ansicht
Themen-Optionen

OleContainer (jetzt auch mit OnChange)

Ein Thema von doctor-x · begonnen am 28. Apr 2009
Antwort Antwort
doctor-x

Registriert seit: 29. Apr 2007
41 Beiträge
 
#1

OleContainer (jetzt auch mit OnChange)

  Alt 28. Apr 2009, 02:15
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 , 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.
procedure Register; Und die procedure im implementation teil anlegen.
Delphi-Quellcode:
procedure Register;
begin
  RegisterComponents('System', [TWHOleContainer]); //Hier natürlich dan den tatsächlichen typen namen verwenden und nicht den aus dem Beispiel
end;
Schritt 5: Alles folgene bezieht sich jetzt nur auf die neue Klasse des OleContainers (in diesem Beispiel auf den Typ TWHOleContainer).

5.1: Unter privat folgendes hinzufügen:
Delphi-Quellcode:
private
  FOnChange: TNotifyEvent; //Geändert (Neu)
5.2: Unter protected folgendes hinzufügen:
Delphi-Quellcode:
protected
  procedure Change; virtual;//Geändert (Neu)
5.3: Unter published folgendes hinzufügen:
Delphi-Quellcode:
published
  property OnChange: TNotifyEvent read FOnChange write FOnChange; //Geändert (Neu)
5.4: In der SaveObject function, als letztes die soeben definierte Change procedure aufrufen:
Delphi-Quellcode:
function TWHOleContainer.SaveObject: HResult;
var
  PersistStorage: IPersistStorage;
begin
  .
  .
  Change; //Geändert (Neu)
end;
5.5: Jetzt noch die Change procedure im implementation bereich erstellen:
Delphi-Quellcode:
procedure TWHOleContainer.Change; //Geändert (Neu)
begin
  if Assigned(FOnChange) then FOnChange(Self); //OnChange ereigniss starten
end;
Schritt 6: Alles speichern und unter Komponente --> Komponente installieren... die soeben erstellte unit mit der neuen komponente installieren.

Schritt 7: Sich freuen das man es (hoffentlich) geschaft hat
Wolf
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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