Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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;

Geschrieben

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;

Geschrieben

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.

Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...