Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - onclick unterdrücken


lkz633 - Mo 16.12.02 00:22
Titel: onclick unterdrücken
Hallo,

I aendere in meinem Programm den Status einer Checkbox, dadurch wird automatisch das Ereigniss onclick aufgerufen. Wie kann ich dies elegant vermeiden ?

Es geht natürlich mit einer zusaetlichen globalen Variablen, doch dies gefaellt mir nicht. Gibt es einen anderen Weg ?

Danke für Hilfe
MFG lkz633


Alibi - Mo 16.12.02 01:40

Wieso willst du das verhindern? Mir fällt jetzt echt kein Grund dafür ein...


Tino - Mo 16.12.02 10:32

Hatte dieses "Problem" auch schon mal gehabt. Hab mir immer damit geholfen vor dem setzen der Checked Eigenschaft das OnClick-Event auf NIL zu setzen und anschließend wieder auf die Methode.

Verstehe das eigentlich auch nicht warum ein OnCLICK-Event dadurch ausgelöst wird. Besser wäre ein OnChange oder so. Na ja...

Gruß
TINO


Anonymous - Mo 16.12.02 10:53

Man sollte sich in diesem Fall merken welches Ereignis es vor dem Zuweisen von Nil war. Ich mache es meistens so:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Edit1Change(Sender: TObject); 
var
  Change: TNotifyEvent;
begin
  Change := Edit1.OnChange;
  Edit1.OnChange := nil;

  ...

  Edit1.OnChange := Change;
end;


Tino - Mo 16.12.02 10:56

Stimmt. So mache ich es auch! :wink:


lkz633 - Mo 16.12.02 11:17

Hallo,

herzlichen Dank für die schnelle Antwort, genau sowas hab ich gesucht. Hab noch ein mini-Problem. Ich hab jetzt folgenden code:

Quelltext
1:
2:
3:
4:
5:
6:
7:
var
    change: TNotifyEvent;
begin
  change:= checkboxclick;
  checkboxclick()= nil;
........
  checkboxclick():= change;


checkboxclick ist eine eigene function, da die checkboxen dynamisch erzeugt werden.

Quelltext
1:
procedure Tfmain.checkboxclick(sender: tobject);                    


Was muss ich denn jetzt im obigen code in die Klammern schreiben, bekomms nicht hin

Dank und Gruss
lkz633


foxy - Mo 16.12.02 11:28

denke mal die werte die du an die andere Unit weiter geben willst??? :P


lkz633 - Mo 16.12.02 11:43

Hi,

Ich will aber ja gerade keine Werte übergeben

Gruss lkz633


Tino - Mo 16.12.02 12:28

lkz633 hat folgendes geschrieben:
Ich hab jetzt folgenden code:

Quelltext
1:
2:
3:
4:
5:
6:
7:
var
    change: TNotifyEvent;
begin
  change:= checkboxclick;
  checkboxclick()= nil;
........
  checkboxclick():= change;

Schau Dir noch mal genau den Sourcecode von Popov an. :wink:

Gruß
TINO


lkz633 - Mo 16.12.02 12:56

Hi,

hatte das Problem das ich nicht wusste, wie ich da dranjomme, da ich die Komp. dynamisch erzeuge. Findcomponent war des Rätsels Lösung

Danke für die Hilfe
lkz633


Anonymous - Mo 16.12.02 13:43

Das Ganze machst du ohne Klammern.