Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#11

Re: Problem mit checkbox.checked := true

  Alt 23. Aug 2004, 09:50
Zitat von MarcusB:
Warum setzt

  checkbox.Perform(BM_SETCHECK, 1, 0); zwar den Haken in die Checkbox, aber die Property "Checked" ist immer noch false?

Und bei der Lösung von scp

Delphi-Quellcode:
  checkbox1.OnClick := nil;
  checkbox1.checked := true;
verstehe ich nicht, dass nach OnClick := nil doch wieder checked:=true aufgerufen wird, was doch eigentlich wieder OnClick auslöst
1. Dieser Befehl ist aus der Windows-API und dort hat eine Checkbox kein Checked-Property, wie in Delphi (also schon eins, ob die Box angehakt ist oder nicht, aber der Bool-Wert Checked in TCheckBox ist quasi zusätzlich) Das heißt, eine Änderung über die Win-API hat keine Änderung des Checked-Status einer TCheckBox zufolge andersrum aber schon (Check auf true setzen zeichnet die Box neu)

2. Intern wird die Funktion Click aufgerufen und die macht folgenden Befehl (vereinfacht):
Delphi-Quellcode:
if Assigned(FOnClick) then
  FOnClick(Self);
Das heißt, wenn OnClick (ist ja nur ein Methodenzeiger) nicht gesetzt ist (was ja mit dem := nil bewerkstelligt wurde), dann wird die Funktion auch nicht aufgerufen, wenn du Checked setzt.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat