Hallo zusammen
Ich habe eine immer umfangreicheres Projekt und ich möchte eine Funktion realiseren, wie man sie von Word o.ä. kennt: Sobald der Benutzer etwas an den verwendeten Daten ändert, soll u.ä. in der Caption ein Sternchen an den Namen angehängt werden und vor dem Beenden eine Speicheraufforderung kommen. Ohne etwas geändert zu haben, soll das natürlich nicht passieren.
Die Daten selbst liegen in einer Eigenen Klasse mit einigen Read und Write Methoden. Jetzt dachte ich zum Beispiel an ein onChange - Ereignis, das triggert, wenn Daten verändert werden:
Delphi-Quellcode:
//Die Deklarationen
type
TValueChange = procedure of object;
TCompany = Class
Private
...
Public
OnChange : TValueChange;
...
procedure Edit(CName : String; CNFltPa : Integer);
...
end;
//Eine der Prozeduren, die das OnChange auslösen sollen
procedure TCompany.Edit(CName : String; CNFltPa : integer);
begin
FName := CName;
FNFltPa := CNFltPa;
if Assigned(OnChange) then OnChange;
end;
//Und in der Main die Zuweisung
procedure TForm1.CreateCompany(CName : String; CNFltPa : integer);
begin
Company := TCompany.Create(cName, cNfltPa);
Company.OnChange := @Unsaved;
end;
procedure TForm1.Unsaved;
begin
DataChanged := true;
UpdateForm;
end;
Leider wird aber nichts getriggert, wenn ich die Company.Edit ausführe. Dhaer die Frage: Ist das überhaupt der richtige Weg, wo liegt der Fehler, geht das auch anders?
Es gibt relativ viele Möglichkeiten, etwas an den Daten zu ändern, daher möchte ich "Form1.Unsaved" nicht an jeder dieser Stellen in der Main aufrufen.
Da dies mein erstes großes Projekt mit Pascal/Delphi ist, ist mein Repertoir noch nicht besonders groß, daher bin ich um jeden Tip dankbar.