Cum să gestionați un eveniment de suprapunere de stive creat dinamic în limba rusă

Există o serie de componente imagine creată dinamic pe care le puteți deplasa în jurul formularului cu următorul cod:

Întrebare: Și cum să modificați poziția imaginii selectate, utilizând procedura:







Am încercat să fac așa ceva:

Dar nu a funcționat, eroare: Tipuri incompatibile: 'TObject' și 'Reference class'

UPD: Această problemă este fixă, acum a apărut o nouă: procedura se aplică ultimei Imagini adăugate. Spuneți-mi, vă rog, cum să aplicați procedura pentru Image pe care a fost făcut clicul? Am încercat să fac ceva cu Tag, dar nu sa întâmplat nimic.

de la 31 ianuarie '16 la ora 12:00

În procedura de mai sus trebuie să transferați obiectul dinamic pe care l-ați creat. și anume Image1. judecând după numele metodei.

În același cod, încercați să treceți o clasă în această procedură. dar nu un obiect. Probabil că nu înțelegeți foarte clar diferența dintre o clasă și un obiect, așa că ați făcut o astfel de greșeală. Un obiect este o instanță a unei clase și puteți crea mai multe obiecte din aceeași clasă.

Pentru a pune lucrurile în ordine în capul meu și a pune totul pe rafturi, vă recomand să citiți cu atenție nota: Delphi. Lecția 18. Clasele și obiectele







Dacă vorbim despre componente și nu despre unele clase abstracte, atunci strămoșul lor este clasa TComponent, care este un descendent direct al clasei TPersistent. Sunt clasele derivate din TComponent care sunt componente ale Delphi, inclusiv cele afișate în paleta de componente.

Ie aceasta este o clasă normală. cu excepția faptului că nu este moștenit de la TObject. dar de la TComponent. Și din cauza acestei circumstanțe, nu poate exista o "componentă creată dinamic", așa cum pare în întrebarea dvs. Tot ce este creat este un obiect.

În general, așa cum am scris, trebuie să-mi amintesc pe elementul onClick, prin intermediul FormKeyUp îl mutăm.

Pentru formular, setați KeyPreview = proprietate adevărată. Pentru ca evenimentele de tip keystroke să fie trimise mai întâi la formular și apoi la componenta gestionată.

Conectăm modulele, dacă acestea nu sunt prezente pentru butonul, imaginea și lista generică.

Definiți tipul TMoveDirection cu direcția de deplasare:

Procedura de deplasare a controlului indicând direcția

Un eveniment ImageClickEvent care se execută cu un click de mouse

Algoritmul meu pentru crearea și construirea elementelor. Apropo de img.Picture.Bitmap.LoadFromFile ('ball_blue.bmp'); servește pentru a afișa o imagine în TImage. Nu poartă nicio sarcină.

Evenimentul FormKeyUp. care funcționează atunci când faceți clic pe orice tastă (Nu uitați despre KeyPreview = Adevărat pentru formular).

Creați și distrugeți lista cu obiectele create.

Codul nu pretinde nimic, o implementare simplă a sarcinii. Creați clase separate, nu utilizați variabile globale.
Va veni timpul și voi face o notă pe acest subiect pe blogul meu







Articole similare

Trimiteți-le prietenilor: