Re: Checkbox
Und hier n bisschen generischer:
Delphi-Quellcode:
So kannst du Checkboxes "hinklatschen". Wie viel reinpassen würd ich per Container.Height div 16 berechnen.
procedure MakeCheckBoxes(Container: TWinControl; Captions: TStrings; CBOnClick: TNotifyEvent = nil);
var i: Integer; Size: TSize; buf: string; begin for i := 0 to Captions.Count-1 do with TCheckBox.Create(Container) do begin Parent := Container; Top := i * 16; //reicht 16? Left := 3; Height := 16; buf := Captions[i]; GetTextExtentPoint32(Canvas.Handle, @buf[1], Length(buf),Size); Width := Size.cx + 16; //16 extra für die Box Tag := i; Caption := buf; OnClick := CBOnClick; end; end; EDIT: So, korrekte Size dazu. |
Re: Checkbox
Zitat:
|
Re: Checkbox
Ich würde die Checkboxes in ein Array werfen. Das erleichtert den Zugriff später darauf ungemein. Sonst frickelst du für 40 Checkboxen mit "FindComponent" rum, was im Geschwindigkeitsvergleich zum Array um einiges lahmer ist.
|
Re: Checkbox
Zitat:
Also doch Version 1 hier nehmen? |
Re: Checkbox
1 + 2 kombinieren. ;)
|
Re: Checkbox
Jo. is wohl sinnvoller:
Delphi-Quellcode:
function MakeCheckBoxes(Container: TWinControl; Captions: TStrings; CBOnClick: TNotifyEvent = nil): TObjectList;
var i: Integer; Size: TSize; buf: string; begin Result := TObjectList.Create; for i := 0 to Captions.Count-1 do with Result[Result.Add(TCheckBox.Create(Container))] as TCheckBox do //sorry dafür. aber da mach ich jetzt kein extra faß variablen für auf. begin Parent := Container; Top := i * 16; //reicht 16? Left := 3; Height := 16; buf := Captions[i]; GetTextExtentPoint32(Canvas.Handle, @buf[1], Length(buf),Size); Width := Size.cx + 16; //16 extra für die Box Tag := i; Caption := buf; OnClick := CBOnClick; end; end; |
Re: Checkbox
Zitat:
Aber das mit TObjectList ist 'ne gute Idee, hab ich nicht dran gedacht. Noch 'n Tick sauberer als Array. :thumb: |
Re: Checkbox
Hast recht, aber ich glaube, ohne viel Erfahrung kommt man nicht auf eine Lösung, die so sauber und elegant ist wie meine (riecht ihrs auch? - nich dass die nicht auch Probleme aufwerfen würde, neue Instanzen aus einer Funktion zu liefern ist nicht ganz unproblematisch, die muss man nämlich wieder freigeben). :)
|
Re: Checkbox
:love: :mrgreen:
|
Re: Checkbox
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz