![]() |
checkbox change ohne click
hallo zusammen,
gibt es ne Möglichkeit den Status einer Checkbox zu ändern, ohne das Ereignis OnClick auszulösen. Wenn ich das richtig sehe werden beide Ereignisse zusammen ausgelöst. Wozu dann die Unterscheidung? Hintergund ist, dass ich auf das Setzen des Status im Programm anders reagieren möchte als wenn der Benutzer die checkbox anklickt. |
AW: checkbox change ohne click
|
AW: checkbox change ohne click
ich danke dir
|
AW: checkbox change ohne click
Dafür eine eigene Komponente finde ich etwas übertrieben. Wie wäre es denn so?
Delphi-Quellcode:
Über die neue Property AvoidClick kann man individuell je Checkbox angeben, ob sie ein Click-Event auslösen soll, wenn State geändert wird.
type
TCheckbox = class(StdCtrls.TCheckbox) private FAvoidClick: Boolean; function GetMyState: TCheckBoxState; procedure SetMyState(const Value: TCheckBoxState); public property AvoidClick: Boolean read FAvoidClick write FAvoidClick; property State: TCheckBoxState read GetMyState write SetMyState; end; TForm1 = class(TForm) CheckBox1: TCheckBox; ... end; ... function TCheckbox.GetMyState: TCheckBoxState; begin Result := inherited State; end; procedure TCheckbox.SetMyState(const Value: TCheckBoxState); begin ClicksDisabled := FAvoidClick; inherited State := Value; ClicksDisabled := false; end; |
AW: checkbox change ohne click
oder einfach nur
Delphi-Quellcode:
Wenn man nun im OnCreate der Form
type
TCheckbox = class(StdCtrls.TCheckbox) property ClicksDisabled; end;
Delphi-Quellcode:
setzt, wird ab da beim OnChange kein OnClick mehr ausgeführt.
CheckBox1.ClicksDisabled := True;
|
AW: checkbox change ohne click
Ich hatte gar nicht in den Source von StdCtrls geschaut und wusste daher nicht, ob man ClicksDisabled dauerhaft ohne Probleme setzen kann/darf. Aber wenn das nicht zu unerwünschten Nebeneffekten führt, kann man sich den ganzen Schmonses tatsächlich sparen.
|
AW: checkbox change ohne click
Delphi-Quellcode:
Ungetestet in die Tastatur gehämmert.
var
lfOldOnClick: TNotifyEvent; begin lfOldOnClick := chkBox.OnClick; chkBox.OnClick := nil; ... MachWasGanzGefinkeltes(); ... chkBox.OnClick := lfOldOnClick; end; Oder guckst Du ![]()
Delphi-Quellcode:
{set a checked}
yourCheckBox.Perform(BM_SETCHECK, 1, 0); {set a unchecked} yourCheckBox.Perform(BM_SETCHECK, 0, 0); |
AW: checkbox change ohne click
Zitat:
Ich danke euch |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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-2025 by Thomas Breitkreuz