![]() |
viele viele Checkboxes
Hab ein kleines Problem:
Ich hab 16 CheckBoxes deren Zustand checked oder not checked abspeichern will. Wie geht das am einfachsten ohne dass man für CheckBox1, CheckBox2 etc. eine Abfrage schreiben muss? if sender.checked = true then --> funktioniert nicht Danke für eure Hilfe! Pilrich |
Hi,
meinst du das?
Code:
Du musst jeder betreffenden CheckBox bei OnClick diese Procedure zuweisen, dann klappt´s...
procedure TForm1.CheckBoxClick(Sender: TObject);
begin if TCheckBox(Sender).Checked = True then Memo1.Lines.Add(TCheckBox(Sender).Caption); end; Gruß Yheeky |
ja genau das hab ich gebraucht! Dankeschön!
Und geht es auch irgendwie in eine Datei die Zustände von den Checkboxen zu speichern und aus der Datei wieder auszulesen? Ohne dass man so auf die Art das machen muss wie: if Datei.Strings[0] = '0' then CheckBox1.Checked := false; else CheckBox1.Checked := true; if Datei.Strings[1] = '0' then CheckBox2.Checked := false; else CheckBox2.Checked := true; a.) gibt es eine Möglichkeit mit einer Variablen zu arbeiten?? if Datei.Strings[variable] = '0' then CheckBox(variable).Checked := false; else CheckBox(variable).Checked := true; b.) sollte man es völlig anders abspeichern und laden?? Pilrich |
Wenn Du die Checkboxen von 1 bis z.B. 15 durchnummerierst (CheckBox__), dann
Delphi-Quellcode:
procedure TForm1.SaveCheckBoxes;
var I: Integer; begin for I := 1 to 15 do Datei.Add(IntToStr(Integer(TCheckBox(FindComponent('CheckBox' + IntToStr(I))).Checked))); end; procedure TForm1.LoadCheckBoxes; var I: Integer; begin for I := 1 to 15 do TCheckBox(FindComponent('CheckBox' + IntToStr(I))).Checked := Datei[I] = '-1'; end; |
Moin Zusammen,
das Speichern/Laden liesse sich mit Hilfe einer INI Datei unter Verwendung von WriteBool/ReadBool noch etwas vereinfachen. Das direkte Setzen der Eigenschaft Checked kann allerdings von Nachteil sein, wenn man eine TCheckBox.OnClick Routine für die Checkboxen benutzt, da durch die Zuweisung eines Wertes an Checked diese ausgelöst wird. Das setzen von State bzw. die Verwendung von SendMessage(CheckBox.Handle,BM_SETCHECK,BST_CHECKE D oder BST_UNCHECKED,0); kann hier Abhilfe schaffen. |
@Christian
Zitat:
Danke :firejump: ...:cat:... |
Moin sakura,
Zitat:
Eine Einschränkung hatte ich noch vergessen: Das Event wird nur ausgelöst, wenn sich durch die Zuweisung der Wert vo n Checked ändert. |
Hi
Zitat:
|
Zitat:
Von
Code:
wird nur der Haken gezeichnet o. glöscht.
SendMessage(CheckBox.Handle,BM_SETCHECK,BST_CHECKED oder BST_UNCHECKED,0);
|
Re: viele viele Checkboxes
das einfachste ist in der OnClick-Procedure der Checkboxes einen Bool abzufragen ob gerade aus den einstellungen geladen wird und wenn das laden abgeschlossen ist kann dieser bool geändert werden
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 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