Kezdőoldal » Számítástechnika » Programozás » Delphi, futás közben létrehozo...

Delphi, futás közben létrehozott TImage kezelése, törlése?

Figyelt kérdés

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.



#programozás #Delphi #futás közben
2012. szept. 17. 17:16
1 2
 1/12 ejbenjaro ***** válasza:

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

2012. szept. 17. 17:37
Hasznos számodra ez a válasz?
 2/12 A kérdező kommentje:
1. válaszolónak: Enyit azért énis tudok :) de nekem több objektumom lenne a formon aminek mindnek más a neve és azt akkor találja ki mindegyiknek mikor létrehozza. Nemtudom semelyik objektumnak a nevét és ezért kerülnek fel egy listára. (lehet hogy nem olvastad végig a kérdésem?)
2012. szept. 17. 17:51
 3/12 ejbenjaro ***** válasza:
Mutass kódot, vagy meséld el, hogy a programod mit is akar csinálni. Esetleg nézz utána az AS és az IS parancsoknak.
2012. szept. 17. 18:00
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:
Idézem: "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."
2012. szept. 17. 18:24
 5/12 ejbenjaro ***** válasza:

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.
2012. szept. 17. 20:44
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:
Letöltöttem köszi szépen. Biztos hasznát veszem, igaz kicsit bonyolult még nekem, de megtalálom benen amit akartam :) , áttírtam delphi-be van egy két dolog mai másképp van. Még anyi lenne a kérdésem ha viszanézel hogy miért írja ki futtatásnál hogy "Class TButton not found" :/ kezdő vagyok még de gondolom azt jelenti hogy nincs meg valami a TButton-hoz, pedig mindent áttnéztem és rendben van még el is indul csak kiírja ezt... Lenne még 1 kérdésem hogy 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 Példa: futás közben megadom a stringbe értéknek hogy pl. "Image61", és egy button megnyomásakor végezzen el egy műveletet pl hogy "a metódus neve"(String).Width:= 32 ez anyit jelentene mint ez: Image61.Width:= 32, ha lehetséges, de mivel nem tulzottan értek hozzá nem tudhatom, hiszen a programozást csak itthon tanulgatom :) köszi az eddigi válaszaid hasznosak voltak.
2012. szept. 18. 11:59
 7/12 A kérdező kommentje:
még 1 kérdés, miért írja ki futás közben amikor egy List-ről akarok hivatkozni egy objektumra, hogy "List index out of bounds(1)" az (1) helyen pedig van objektum... ellenőriztem.
2012. szept. 18. 14:52
 8/12 ejbenjaro ***** válasza:

"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.

2012. szept. 18. 15:31
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:
Értem. Köszi szépen nagyon sokat segítettél, egyébként ezt a programot kiváncsiságból csináltam nameg azért hogy megoldjak egy régi problémám :) régóta keresem arra a megoldást hogy egy objektumot amit futásközben hozok létre, tudjam kezelni is. Másik meg az hogy erre nem lehetséges könyebb megoldásként mint "lista" a tömb? kicsit kutattam még neten és sikerült tömb-el is megoldani. Az utolsó válaszod, utolsó bekezdésének első kérdésében arra utalsz azzal, hogy "Amúgy, ha nem titok", hogy megnéznéd a progit? :D ha nem akk bocsi csak zavaros az a kérdés :) amúgy akkor ezennel probléma megoldva :D de az utolsó mondatodnak utánanézek...
2012. szept. 18. 17:49
 10/12 ejbenjaro ***** válasza:

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? :)

2012. szept. 19. 07:37
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!