Einzelnen Beitrag anzeigen

philharmony

Registriert seit: 17. Dez 2012
37 Beiträge
 
#1

OnChange o.ä. für Speicheraufforderung

  Alt 17. Dez 2012, 15:41
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.
  Mit Zitat antworten Zitat