![]() |
Problem mit checkbox.checked := true
Wie in einem
![]()
Delphi-Quellcode:
schreibt, auch gleich das OnClick-Event der Checkbox ausgelöst wird.
checkbox.checked := true
In diesem Thread wurde als Workaround folgendes vorgeschlagen :
Delphi-Quellcode:
Das funktioniert auch (die Checkbox ist - optisch zumindest - "checked"), allerdings liefert eine Abfrage auf
SendMessage(checkbox.Handle, BM_SETCHECK, Integer(cbChecked), 0);
Delphi-Quellcode:
leider ein false zurück :gruebel:
if (checkbox.checked) then ...
Wer kann mir da weiterhelfen ? |
Re: Problem mit checkbox.checked := true
z.B. so (nicht getestet):
Delphi-Quellcode:
var
SavedOnClick: TNotifyEvent; begin SavedOnClick := checkbox1.OnClick; checkbox1.OnClick := nil; checkbox1.checked := true; checkbox1.OnClick := SavedOnClick; end; |
Re: Problem mit checkbox.checked := true
So, war mir leider gestern schon ein bischen spät um das auszuprobieren, aber ganz ehrlich gesagt kapiere ich deinen Ansatz nicht.
Was passiert da eigentlich? Und warum ist das eigentlich so, das das OnClick-Event sofort mit aufgerufen wird? :gruebel: Wäre schön wenn mich da jemand aufklären könnte :-D [edit]: Ich habe noch was gefunden :
Delphi-Quellcode:
Das funktioniert auch, aber auch nur für die Optik!
checkbox.Perform(BM_SETCHECK, 1, 0);
Wer kann mir in dem Zusammenhang mal die Parameter LParam und WParam bei Messages erklären? [/edit] |
Re: Problem mit checkbox.checked := true
Ich schieb mich mal :zwinker:
Weiss denn keiner was, bin schon etwas verzweifelt :wall: |
Re: Problem mit checkbox.checked := true
Zitat:
|
Re: Problem mit checkbox.checked := true
Ok, danke, wobei mir da immer noch ein paar Fragen offen bleiben :gruebel:
Ich habe mein Problem jetzt so gelöst, dass ich eine einfache boolsche Variable benutze, die in den betreffenden OnClick-Routinen auf Wahrheit geprüft wird. Diese setzte ich nun einfach auf false, solange ich intern den Checkbox Status ändern will. :-D |
Re: Problem mit checkbox.checked := true
Zitat:
|
Re: Problem mit checkbox.checked := true
Zitat:
...:cat:... |
Re: Problem mit checkbox.checked := true
@Sakura:
Sorry, kommt nicht wieder vor :duck: @Stevie Warum setzt
Delphi-Quellcode:
zwar den Haken in die Checkbox, aber die Property "Checked" ist immer noch false?
checkbox.Perform(BM_SETCHECK, 1, 0);
Und bei der Lösung von scp
Delphi-Quellcode:
verstehe ich nicht, dass nach OnClick := nil doch wieder checked:=true aufgerufen wird, was doch eigentlich wieder OnClick auslöst :drunken:
checkbox1.OnClick := nil;
checkbox1.checked := true; |
Re: Problem mit checkbox.checked := true
Warum das Perform die Eigenschaft nicht setzt weiss ich nicht, aber es scheint Tatsache zu sein :)
Bei der anderen Variante: Du merkst dir den Pointer auf die Prozedur die OnClick eigentlich ausgeführt werden soll in einer Variablen, und setzt aber OnClick selber auf NIL. Das heisst, dass OnClick jetzt einfach nichts mehr passiert. Dann setzt du ganz in Ruhe die Eigenschaft neu -> OnClick wird zwar gesendet, aber es steht ja keine Prozedur mehr dahinter. Wenn du dann mit der Eigenschaft fertig bist übergibst du an OnClick wieder die vorher gesicherte Prozedur, und OnClick passiert wieder was. gruss, dizzy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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