Delphi, futás közben létrehozott TImage kezelése, törlése?
Futás közben minden egyes létrehozott TImage-t szeretném kezelni... majd ha elértem célom vele, törölni. Kezdő vagyok szóval ha kérhetem értelmesen leírni. Még anyi kérdésem lenne hogy sima string-be írott Objektumnak a nevét átt lehet-e konvertálni valahogy, hogy azt az objektumot aminek a nevét beírtam a sring-be azt lehet -e törölni, kezelni?
PL.: Létrehozok futás közben egy pár TImage-t aminek a neve rákerül egy listára (Image1, Image2, Image3, ...) és egy TTimer (ami ugye tudja kezelni majd valahogy) addig növeli minden egyes TImage-nak a Top-ját amég valamelyik TImage alja el nem éri a Form alját. Ezután törölném azt a TImage-t ami elérte a Form alját.
var img: TImage; //deklarálod a változót
[...]
img:=TImage.create; //valahol a programban létrehozod az objektumot
[...]
img.free; //aztán ha már nem kell akkor felszabadítod
Na, csak azért is foglalkoztam a problémáddal. A produktumot innen tudod letölteni: ***** (úgy max egy hétig tartom ott fenn)
Sajnos nincsen Delphim ezért én Lazarusban készítettem el a cuccot. A program annyit csinál, hogy kitesz 6 piros kört véletlenszerűen a formra egy vonalban. Majd a mozgat gombra kattintgatva szépen véletlenszerű sorrendben mozgatja az egyes köröket lefele. Ha a kör eléri a form alját eltűnik. Ha az összes kört levitted a lap aljára egy üzenetet kapsz, hogy minden elem célba ért.
A forráskód is mellékelve van a csomagban, így megnézheted benne, hogy hogyan hozom létre dinamikusan és szabadítom fel az egyes TImage objektumokat, amint szükségtelenné válnak (lásd unit1.pas fájl).
Mivel csak linuxot használok, ezért kénytelen voltam a Wine nevű windows emulátoron fordítani neked a programot, így elképzelhető, hogy lesznek vele gondok. Ebben az esetben szedj le egy Lazarust a [link] címről telepítsd fel és fordítsd újra vele a cuccot. Bár lehet elég lesz csak a forráskódot látni, hogy kiderüljön, hogy vajon egy dologról beszélünk e végre.
* Automatikusan eltávolított tartalom.
"miért írja ki futtatásnál hogy "Class TButton not found""
Valószínűleg hiányzik valami unit, bár ebben az esetben le sem lehetne fordítani a programot.
"lehetséges -e az, hogy Egy string-ből lehet-e valamilyen metódussal megoldani hogy a string-nek az értéke egy objektumnak a neve legyen"
Elméletileg talán megoldható, de elég bonyolult. Itt keresgélj: [link]
"List-ről akarok hivatkozni egy objektumra, hogy "List index out of bounds(1)" az (1) helyen pedig van objektum..."
Ha ilyet ír ki, akkor tuti nincsen ott elem. Ne felejtsd el, hogy a List-et is, mint sok mást, nem egy 1-től, hanem 0-tól indexeli a rendszer.
Amúgy, ha nem titok, milyen program lesz ez, amiben így oldod meg a sok képfájl kezelését, hogy stringként tárolod a nevüket? Különben nem is értem miért nem jó Listában az index alapján, vagy ha egyedileg kell, akkor az egyes TImage objektumok Tag property-jét beállítva ellenőrizni, hogy az e az, ami neked kell. A Tag-es megoldáshoz tényleg érdemes megnézni az általam korábban javasolt AS és IS parancsokat/operátorokat, amivel el lehet dönteni valamiről, hogy az pl TImage-e.
Kíváncsiságból én is csináltam már hasonló problémára programot. Én strigulázásra gyártottam hasonlót, és ott volt szükségem arra, hogy dinamikusan létrehozott elemek eseményeit kezeljem. Ebben az esetben én is tömböt használtam az elemek tárolására és itt volt szükségem arra is, hogy használjam az elemek TAG property-jét, valamint az AS parancsot. A program forráskódját elvileg itt megnézheted: [link]
A Te programoddal kapcsolatban meg csak kíváncsi voltam, hogy mi ez, mit csinál. Netán valami játék? :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!