TToggleBox aendern

Rund um die LCL und andere Komponenten
Antworten
Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

TToggleBox aendern

Beitrag von Eclipticon »

Hi,

ich moechte auf das Umschalten einer TToggleBox reagieren und abhaengig von .Checked diesen oder jenen Code ausfuehren. Der Status der ToggleBox wird aber auch von externen Signalen gesteuert, auf die ich nicht reagieren will.

Dass bei einer direkten Aenderung von .Checked OnChange ausgeloest wird, ist logisch ... aber auch mit OnClick kann ich nicht zwischen Userinput und systembedingten Aenderungen von .Checked unterscheiden (wo auch immer da die Logik ist :shock: ).

Habt ihr Vorschlaege, wie man dieses Problem loesen koennte?

Vielen Dank!

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: TToggleBox aendern

Beitrag von MAC »

welche variable "Sender" übergibst du denn in den unterschiedlichen fällen?
Wenn der User das macht sollte Sender = TTooggleBox sein.
Wenn das anders geändert wird dann mach den sender halt nil oder so :)
kannst dann ja abfragen...

Code: Alles auswählen

Signatur := nil;

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: TToggleBox aendern

Beitrag von Eclipticon »

Hi MAC,

ich uebergebe Sender nie direkt, aber ich koennt drauf pruefen, das stimmt ... leider ist in beiden Faellen (Klick auf die Componente oder .Checked := (not .Checked) der Sender die Instanz von TToggleBox ...

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: TToggleBox aendern

Beitrag von MAC »

dann versuch mal volgendes.
Ich nehme mal an das du die Systembedingte Änderung hervorrufst.
Wenn ja würde ich eine globale Variable nehmen:

Code: Alles auswählen

globalevariable := True;
TogggleBox1.Checked := True;
dann in der OnChanged:

Code: Alles auswählen

if globalevariable then // von system geändert
   begin
   globalevariable := False; // wieder ursprungszustand
   exit; // wenn systembedingt geändert soll nichts passieren.
   end;
Die variante ist zwar nen bisschen dreckig, aber müsste funktionieren...

Code: Alles auswählen

Signatur := nil;

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: TToggleBox aendern

Beitrag von Eclipticon »

Danke MAC,

die Idee hatte ich zwar auch schon (ich wollte .Tag der Komoponente verwenden), aber es beruhigt mich sehr, dass andere auch auf aehnlich verquere Loesungen zurueckgreifen muessen ...

Beste Gruesse!

Antworten