TartalomFriss hozzászólások
Új fórum témákAktív fórum témákFriss blogbejegyzésekGoogle hirdetések |
ciklusban hivatkozás objektumok nevére
Sylord, 2009, április 14 - 20:22
Sziasztok! »
|
KeresésBelépésIndex TechPC Fórum
Origo TechbázisSG.hu |
Objektumnevek újra
Helló Mindenki!
Nekem ugyanez a problémám, ciklusban szeretnék hivatkozni Timage objektumokra, csak itt nem 10 objektum van, hanem 50-70 db/tabsheet. Sajna a futásidőben létrehozás kiesett mert egyedi ábrák vannak kirakva előre (LED mátrixok), amiknek az elhelyezését nem nagyon lehet ciklusban létrehozni (vagy túl sok kóddal). A tömb jó megoldás lenne ha a feltöltése a már létező, szerkesztő módban létrehozott image nevekkel menne ciklusban (image01,image02,stb.).
Ha valakinek lenne ötlete, előre is köszönöm!
Üdv:vizor
hi Erre a két megoldás van
hi
Erre a két megoldás van az első a neked könnyebb a másik a programozói oldalról nézve szebb.
Az első
A ciklusban feltétlhez kötöd hogy éppen mit csinálsz:
pl: if (valtozo=3)
begin
p3...
end;
select valtozo of
begin
...
case 3:p3...
...
end;
vagy a legjobb:
az objektumokat egy tömbben tárolod el.
labelekre példa: tomb:array [1..9] of tlabel;
majd ezeket magad hozod létre: tomb[1]:=TLBEL.CREATE;
stb.
a ciklusban pedig a tomb[ciklusvaltozo] segítségével éred el.
A példák hibásak az azért van mert nem sokat foglakoztam mostanában delphivel. de a logika az jó és érvényes.
,,Mondottam ember: Küzdj és bízva bízzál"
eddig remek ))
Köszi szépen a gyors válasz, a második variáció nekem is jobban tetszett, viszont ezzel kapcsolatban lenne még egy kérdésem;
létrehozom a tömb elemeit így:
for i:=1 to 10 do tomb[i]:=Tlabel.create(form1); (a form1 az valami Aowner)
minden tulajdonságát tudom meg tudom adni de nem látszik a formon, miért?
Mert meg kell adni melyik
Mert meg kell adni melyik objektumon (jelen esetben form-on)látszódjon:
tomb[i].parent:=form1;
Üdv.: Totó
Köszönöm!
Köszönöm! MINDKETTŐTÖKNEK!
Új megoldás
Sziasztok!
Megoldódott a probléma, leírom hátha jó lesz még valakinek. A probléma: olyan komponensekre hivatkozás ciklusban, amiket szerkesztési időben hozunk létre, nem futás közben.
var
imagearray:array[1..128] of timage;
// imagekra van szükségünk, amik egy panelon vannak, más egyéb komponensekkel együtt
i:=0;
for j:=0 to form1.panel1.controlcount-1 do // a panel1 összes controlján végigmegyünk
begin
if form1.panel1.controls[j] is timage then // ha ez a control egy image akkor felvesszük
begin
inc(i);
imagearray[i]:=form1.panel1.controls[j] as timage; //átalakítjuk a Tcontrol-t Timage-vá és berakhatjuk a tömbbe
end;
end;
Remélem hasznos lesz másnak is.
Üdv:vizor