FinalFantasy Geschrieben 17. Juni 2005 Geschrieben 17. Juni 2005 Hi, ich bekomme in einem Delphiprogramm eine word übergeben. Das word enthällt ja bekanntlich 16 Bits, in meinem Fall sind das Flags. Jetzt soll ich auf meinem Form für jedes Flag eine Checkbox darstellen, wobei natürlich jede Checkbox einen anderen Text (Caption) hat. Jetzt wäre es sehr praktisch, wenn man diese 16 Checkboxen in einem Array hätte. Kann man denn die Checkboxen irgendwie in ein Array packen, ohne gleich alles dynamisch zu erzeugen? Die Positionierung bleibt ja immer gleich, genauso wie die Captions.... Im Grunde sind es immer genau die selben Checkboxen, nur bei der Verarbeitung wäre halt ein Array günstiger, weil man die Checkboxen dann in einer Schleife setzen, und wieder lesen könnte. Het jemand eine Idee? PS: Ich habe schon ein paar Stunden deswegegen gegooglet, aber ich finde nur Lösungen, bei denen die Checkboxen erst komplett dynamisch erzeugt werden. Zitieren
grueni Geschrieben 17. Juni 2005 Geschrieben 17. Juni 2005 Wie wäre es, wenn du es über die Eigenschaft Components von TComponent machst? Also ungefähr so: for i:=0 to ComponentCount-1 do if Components[i] is TComboBox then deineAktion; Zitieren
FinalFantasy Geschrieben 17. Juni 2005 Autor Geschrieben 17. Juni 2005 Geht das auch, wenn ausser den 16 Checkboxen noch andere Checkboxen auf dem Form sind?? Da dürfte es dann Probleme geben, oder? Zitieren
grueni Geschrieben 17. Juni 2005 Geschrieben 17. Juni 2005 Du kannst die Checkboxen ja identifizieren...entweder über die Property "Name", oder über "Tag". Ich würd die Checkboxen bei "Tag" mit 1 bis 16 durchnummerieren. [...] var aChkBox: TCheckBox; for i:=0 to ComponentCount-1 do if Components[i] is TCheckBox then begin aChkBox := TCheckBox(Components[i]) case aChkBox.Tag of 1: aCheckBox.Checked := Wert1; //Wert1 ist hier natürlich nur ein Beispiel //für die anderen 15 natürlich genauso ;-) end; end; Zitieren
FinalFantasy Geschrieben 20. Juni 2005 Autor Geschrieben 20. Juni 2005 Hmm, ok, das scheint mir eine vernünftige Lösung zu sein. Ich werd das mal so testen. Zitieren
geloescht_JesterDay Geschrieben 20. Juni 2005 Geschrieben 20. Juni 2005 Kann man denn die Checkboxen irgendwie in ein Array packen, ohne gleich alles dynamisch zu erzeugen? Zusammen mit dem Components-Array: ... var MyChkArray: Array[0..15] of TCheckBox; ... for i:=0 to ComponentCount-1 do if Components[i] is TCheckBox then begin if (Components[i] as TCheckBox).Tag > 0) then begin MyChkArray[(Components[i] as TCheckBox).Tag]:= (Components[i] as TCheckBox); end; end; Damit hast du dann ein Array, dass nur noch deine Checkboxen enthält und das auch noch in der "richtigen" Reihenfolge. Vorraussetzung ist halt, dass du die Tags entsprechend setzt und sie auch bei den anderen auf dem Default-Wert (0) sind. Zitieren
FinalFantasy Geschrieben 21. Juni 2005 Autor Geschrieben 21. Juni 2005 Ok, so ähnlich hat es funktioniert. Ich habe jetzt über die Tags Gruppen gebildet, indem die eine Gruppe ab 100 durchnummeriert und die andere ab 200... Die erste Checkbox in Gruppe 100 hat das Tag 100, die zweite 101... So kann man alles schön auseinender halten. :-) Danke für die Hilfe. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.