Zitat von
EWeiss:
wäre eine idee aber wie sieht es bei den Create aus wenn du mehrere Checkboxen addierst ?
Was meinst du mit "addieren"?
Der Constructor wird für jede neue Instanz durchlaufen. Wenn du nun eine neue Checkbox brauchst, lege dir eine neue Instanz an. Pro Instanz sind alle Felder der Klasse eindeutig (also jede Instanz hat für ihre Felder ihren eigenen Speicherplatz), ausser du deklarierst die Felder explizit als "class var".
Und auch würde ich den Status als property zusammenfassen:
Delphi-Quellcode:
private
function GetStatus: bool;
procedure SetStatus(const AValue: bool);
public
...
property ButtonStatus: bool read GetStatus write SetStatus;
end;
...
function TSkinCheckButton.GetStatus: bool;
begin
Result := ( SendMessage(FButtonHandle, BM_GETCHECK, 0, 0) = BST_CHECKED );
end;
procedure TSkinCheckButton.SetStatus(const AValue: Bool);
const
coStates: array[bool] of integer = (BST_UNCHECKED, BST_CHECKED);
begin
SendMessage(FButtonHandle, BM_SETCHECK, coStates[AValue], 0);
end;
Um das nochmals zu verdeutlichen: Wenn du dir 2x diese Klasse anlegst, haben beide ihre eigenes FButtonHandle und somit auch jeweils ein eigenes
Handle. Deshalb kann der Getter/Setter auch immer auf FButtonHandle zugreifen, da er das
Handle der jeweiligen Instanz hat.