Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

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;

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.

  • Autor

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.