Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi checkboxen in array?? (https://www.delphipraxis.net/141073-checkboxen-array.html)

Spanky_Ham 1. Okt 2009 19:13


checkboxen in array??
 
hallo,
mein problem ist, dass ich checkboxen in ein array speichern will, damit ich diese dann mit einer schleife durchlaufen kann um zu testen ob sie checked sind.

Delphi-Quellcode:
  checkboxen: array of TMeineCheck;
TMeineCheck ist folgende Klasse:

Delphi-Quellcode:
type
 TMeineCheck = class(TCheckBox)
 private
    FBla : real;
 end;
...da ich will, dass jede Checkbox ein Attribut hat, wo ich gewisse werte reinspeichern kann.

Mit diesem code will ich nun die Checkbox ins Array speichern:
Delphi-Quellcode:
zutaten[0] := CheckBox1;
Da bekomm ich nur logischerweise die fehlermeldung, dass TMeineCheck (array) und TCheckBox (die checkboxen halt) unterschiedliche typen sind.
wie kann ich den fehler beseitigen?
ich will, dass ich später auf checkboxen.FBla sowie auf alle anderen Methoden von einer normalen checkbox zugreifen kann.

Klaus01 1. Okt 2009 19:28

Re: checkboxen in array??
 
Guten Abend,

was spricht dagegen in das Array TMeinChekbox Instanzen hineinzupacken?
Du mußt dann nur die Instanzen manuel erstellen und auf deine Form
per Sourcecode verteilen.

Delphi-Quellcode:
setLength(checkboxen,5);
for i:=low(checkboxen) to high(checkboxen) do
  begin
    checkboxen[i].create(Form1);
    checkboxen[i].parent:=Form1;
    checkboxen[i].left :=20+i*40;
    checkboxen[i].top := 20;
  end;

Grüße
Klaus

geskill 1. Okt 2009 19:30

Re: checkboxen in array??
 
Hallo,
möchtest du CheckBoxen die du per Design-Time erstellt hast da rein speichern / CheckBoxen die du mit TCheckBox.Create erstellt hast?
- So was wird nicht gehen, da du dann auf einen Wert zugreifen willst der nicht existiert.


---
Andernfalls kannst du Typen umwandeln (typecast), einfach Typ(<Variable>) oder (<Variable> as Typ)

Hansa 1. Okt 2009 19:33

Re: checkboxen in array??
 
Was soll das ? Du willst doch nicht den Rahmen abspeichern und den Haken oder eben keinen oder doch ? Informationsgehalt hat nur 1 oder 0 oder ein sonstiger eindeutiger Wert. Und das speichert man dann ab. 8) Ob damit die Checkbox bestückt wird, oder sonstwas ist eher zweitrangig.

Klaus01 1. Okt 2009 19:36

Re: checkboxen in array??
 
.. oder es könnte auch mit class helper funktionieren.

Grüße
Klaus

Spanky_Ham 1. Okt 2009 20:03

Re: checkboxen in array??
 
Zitat:

Zitat von geskill
Hallo,
möchtest du CheckBoxen die du per Design-Time erstellt hast da rein speichern / CheckBoxen die du mit TCheckBox.Create erstellt hast?
- So was wird nicht gehen, da du dann auf einen Wert zugreifen willst der nicht existiert.


---
Andernfalls kannst du Typen umwandeln (typecast), einfach Typ(<Variable>) oder (<Variable> as Typ)

super! danke, mit Typ(variable), also in meinem fall TMeineCheck(CheckBox1) hat es geklappt.

an alle anderen die gefragt haben: ich habe auf meiner form mehrere checkboxen, für die ich jeweils einen wert speichern muss...diesen wollte ich also der klasse hinzufügen. dafür habe ich die klasse TMeineCheck erstellt, der die Klasse TCheckBox vererbt wurde. da ich mit allen checkboxen arbeiten muss und nicht 10 anweisungen untereinander tippen wollte, habe ich ein array of TMeineCheck erstellt, das dann mit einer for schleife durchlaufen werden sollte. Das problem war, dass er Objekte vom typ TCheckBox nicht in ein array of Tmeinecheck speichern konnte.
mit checkboxen[i] := TMeineCheck(CheckBox1) (das array heißt checkboxen) hat es dann geklappt, weil grob gesagt CheckBox1 zum Typ TMeineCheck gemacht wurde.

Klaus01 1. Okt 2009 20:18

Re: checkboxen in array??
 
Zitat:

Zitat von Spanky_Ham
.. some stuff deleted
mit checkboxen[i] := TMeineCheck(CheckBox1) (das array heißt checkboxen) hat es dann geklappt, weil grob gesagt CheckBox1 zum Typ TMeineCheck gemacht wurde.

.. aber Zugriff auf Dein Attribut (FB1a) hast Du so nicht.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz