FinalFantasy Geschrieben 17. Juni 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
grueni Geschrieben 17. Juni 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 17. Juni 2005 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
grueni Geschrieben 17. Juni 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 20. Juni 2005 Autor Teilen Geschrieben 20. Juni 2005 Hmm, ok, das scheint mir eine vernünftige Lösung zu sein. Ich werd das mal so testen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 20. Juni 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 21. Juni 2005 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.