Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi eine Art onchange für Variabeln? (https://www.delphipraxis.net/132247-eine-art-onchange-fuer-variabeln.html)

buster55 8. Apr 2009 15:24


eine Art onchange für Variabeln?
 
Meine Frage ist recht simpel, gibt es eine Möglichkeit direkt auf eine Veränderung einer Variabel zu reagieren.
Natürlich kann ich auch eine Schleife machen die das fortwährend abfragt, das macht die ganze Sache aber ein wenig langsam.


greetz
buster

mleyen 8. Apr 2009 15:25

Re: eine Art onchnage für Variabeln?
 
Such mal nach dem Stichwort Hier im Forum suchenProperty.
Dies ist ziemlich elegant gelöst mit Getter und Setter-Methoden.

Hier noch ein kleines Beispiel:

Delphi-Quellcode:
property Foo: Boolean read getFFoo write setFFoo;

DeddyH 8. Apr 2009 15:26

Re: eine Art onchnage für Variabeln?
 
Du könntest statt einer Variablen eine Property einer Klasse verwenden. Da könntest Du dann eine Setter-Methode implementieren.

buster55 8. Apr 2009 15:52

Re: eine Art onchange für Variabeln?
 
mmh danke erstmal da kommen wir der sache schon näher :D
Ich geh mal davon aus, dass getFFoo ne Funktion ist und setFFoo ne procedure (oder?)

Ich habe eigetnlich nur vor ne simple Integer Variable u 'überwachen' und wenn sie unter 0 ist untsprechen darauf zu reagieren (0 setzen).
Könntest du mir bitte ein konkreteres Bsp. liefern,habe nämlich noch nicht viel mit properties zu tun gehabt, wäre sehr nett :angel2:

Luckie 8. Apr 2009 15:53

Re: eine Art onchange für Variabeln?
 
Zitat:

Zitat von buster55
Natürlich kann ich auch eine Schleife machen die das fortwährend abfragt, das macht die ganze Sache aber ein wenig langsam.

Das ist doch Blödsinn. Eine Variable ändert sich nur durch eine Zuweisung im Code und dann weißt du auch wann sie sich geändert hat. Du musst also nicht ständig den Zustand der Variablen überprüfen.

buster55 8. Apr 2009 15:57

Re: eine Art onchange für Variabeln?
 
Zitat:

Eine Variable ändert sich nur durch eine Zuweisung im Code und dann weißt du auch wann sie sich geändert hat
nicht wenn der Benutzer darauf Einfluss hat, dann weiß man zwar wann sie sich ändern könnte aber nicht wann sie konkret einen Wert annimmt, schon gar nicht wenn die Variabel von einer Dritten Quelle gelesen wird.

khh 8. Apr 2009 15:59

Re: eine Art onchange für Variabeln?
 
Zitat:

Zitat von Luckie
Das ist doch Blödsinn. Eine Variable ändert sich nur durch eine Zuweisung im Code

richtig,
die Frage ist ja auch, wer oder was verändert die Variable ?

khh 8. Apr 2009 16:00

Re: eine Art onchange für Variabeln?
 
Zitat:

Zitat von buster55
nicht wenn der Benutzer darauf Einfluss hat, dann weiß man zwar wann sie sich ändern könnte aber nicht wann sie konkret einen Wert annimmt, schon gar nicht wenn die Variabel von einer Dritten Quelle gelesen wird.

das solltes du schon etwas näher erklären

Andreas L. 8. Apr 2009 16:02

Re: eine Art onchange für Variabeln?
 
Zitat:

Zitat von buster55
Zitat:

Eine Variable ändert sich nur durch eine Zuweisung im Code und dann weißt du auch wann sie sich geändert hat
nicht wenn der Benutzer darauf Einfluss hat, dann weiß man zwar wann sie sich ändern könnte aber nicht wann sie konkret einen Wert annimmt, schon gar nicht wenn die Variabel von einer Dritten Quelle gelesen wird.

Ich denke da ist dein Anwendungsdesign aber ziemlich suboptimal :wink:

Wenn dennnoch "benachrichtigt" werden willst, kannst du so eine Eigenschaft ganz einfach ins Form implementieren.

Delphi-Quellcode:
type
  TForm1= class(TForm)
  private
    FMeineIntegerVar: Integer;
  protected
    procedure SetmeineIntegerVar(Value: integer);
  published
    property MeineIntegerBar: integer read FMeineIntegerVar write SetMeineIntegerVar;    

...
...

procedure TForm1.SetmeineIntegerVar(Value: Integer);
begin
  if Value <= 0 then
    ShowMessage('Größeren Wert als 0 eingeben!')
  else
    FMeineIntegerBar := Value;
end;

jfheins 8. Apr 2009 16:05

Re: eine Art onchange für Variabeln?
 
Ich hätte da mal was:

Delphi-Quellcode:
TOnChangeNotifier = class
private
  FValue: Integer;
protected
  procedure SetValue(x: Integer);
public
  property Value read FValue write SetValue;
end;

implementation

procedure TOnChangeNotifier.SetValue(x: Integer);
begin
  if x >= 0 then
    FValue := x;
  else
    raise ERangeError.Create();

{
// Alternativ:
 if x >= 0 then
    FValue := x;
  else
    FValue := 0;
}
end;
Das OnChange-Event kann man bei Bedarf ja noch hinzufügen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 Uhr.
Seite 1 von 3  1 23      

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