AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

onChange Ereignis

Ein Thema von Crowbar · begonnen am 12. Feb 2015 · letzter Beitrag vom 12. Feb 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: onChange Ereignis

  Alt 12. Feb 2015, 12:23
Hattest du an sowas in der Art gedacht?
Delphi-Quellcode:
TMyForm = class( TForm )
  Edit1 : TEdit; { OnChange => ControlChanged }
  Edit2 : TEdit; { OnChange => ControlChanged }
private
  FHasChanged : Boolean;
  FValue1, FValue2 : string;
  procedure ChangeValue( var Variable : string; const Value : string; var HasChanged : Boolean );
published
  procedure ControlChanged( Sender : TObject );
end;

procedure TMyForm.ChangeValue( var Variable : string; const Value : string; var HasChanged : Boolean );
begin
  if Variable <> Value then
  begin
    Variable := Value;
    HasChanged := True;
  end;
end;

procedure TMyForm.ControlChanged( Sender : TObject );
begin
  ChangeValue( FValue1, Edit1.Text, FHasChanged );
  ChangeValue( FValue2, Edit2.Text, FHasChanged );
end;
Generell sollte man die Speicherung der Daten in einer separaten Klasse auslagern und diese Klasse sorgt dann für die Verwaltung des Status HasChanged , der dann einfach gemütlich abgefragt wird und dann gibt man genau diese Klasse zum Speichern. Die Form ist dann nur noch dafür da, wofür die gebaut wurde: Zur Kommunikation mit dem Benutzer und eben nicht auch noch Datenspeicher, Kontrolleur, etc.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Crowbar

Registriert seit: 17. Jun 2002
43 Beiträge
 
#2

AW: onChange Ereignis

  Alt 12. Feb 2015, 12:42
Hattest du an sowas in der Art gedacht?
Delphi-Quellcode:
TMyForm = class( TForm )
  Edit1 : TEdit; { OnChange => ControlChanged }
  Edit2 : TEdit; { OnChange => ControlChanged }
private
  FHasChanged : Boolean;
  FValue1, FValue2 : string;
  procedure ChangeValue( var Variable : string; const Value : string; var HasChanged : Boolean );
published
  procedure ControlChanged( Sender : TObject );
end;

procedure TMyForm.ChangeValue( var Variable : string; const Value : string; var HasChanged : Boolean );
begin
  if Variable <> Value then
  begin
    Variable := Value;
    HasChanged := True;
  end;
end;

procedure TMyForm.ControlChanged( Sender : TObject );
begin
  ChangeValue( FValue1, Edit1.Text, FHasChanged );
  ChangeValue( FValue2, Edit2.Text, FHasChanged );
end;
Generell sollte man die Speicherung der Daten in einer separaten Klasse auslagern und diese Klasse sorgt dann für die Verwaltung des Status HasChanged , der dann einfach gemütlich abgefragt wird und dann gibt man genau diese Klasse zum Speichern. Die Form ist dann nur noch dafür da, wofür die gebaut wurde: Zur Kommunikation mit dem Benutzer und eben nicht auch noch Datenspeicher, Kontrolleur, etc.
Ja, an so eine Art habe ich gedacht. Werde mir Dein Beispielcode für mein Programm entsprechend anpassen und schauen, ob es klappt.
Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: onChange Ereignis

  Alt 12. Feb 2015, 12:47
Du musst allerdings zunächst beide Teile synchronisieren und FHasChanges auf False setzen, sonst geht das schief, aber das sollte eh offensichtlich sein.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 04:10 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 by Thomas Breitkreuz