A technológia a drag-and-drop végrehajtásához drag - dropvvcl

DragDrop ( «drag & drop") - ez az egyik módja adatcsere az alkalmazások között. Ez a csere módszer, amit sok program. Például nagyon gyakran áthelyezni fájlokat és mappákat.

A könyvtár a vizuális elemek - VCL végre a saját verzióját a DragDrop - technológia, amely lehetővé továbbítását és fogadását minden ellenőrzést ugyanazon formában. Ezzel a házi használatra VCL nem vonatkozik az operációs rendszer, bár a szervezet kommunikációs különböző alkalmazások kellene használni a megfelelő funkciót API a Windows.

Egy felhasználó rákattint az egér bal gombját, és húzza a vezérlőelem (tárgy - a forrás) egy másik elem (objektum-vevő). Ha áthúzza egy esemény, amely kezeli az a program (ha a címzett olyan elem, amely felett a kurzort). Component ingatlan DragModeotvechaet való részvétel a folyamat az adatcsere.

DragMode = dmAutomatic - Programok automatikusan megindulnak, a programozó csak azt írja kódokat eseménykezelõkkel.

DragMode = dmManual - az összes hívás a programozónak kell megszervezni magát.

Eseményeket, amelyek akkor jelentkeznek, amikor húzza

OnDragOver esemény történik, miközben mozgatja a kurzort az objektum-vevőt, és amikor elengedi a gombot a helyszínen.

Sender- vevő objektum (a kurzor rajta);

X, Y koordinátái az egér a kliens területe a küldő objektum rendszer;

Államilag állam (az egyik három znacheniydsDragEnter- egér megjelent az elem fölé; dsDragMovekursor áthalad az elem; dsDragLeave- kurzor balra az elem vagy elem fölött elengedi a gombot).

Elfo- logikai. Ez a változó felvezető vissza kell térnie a döntéséről, hogy elfogadja vagy elutasítja obektSource.

Például, a komponens osztály címke (Name = Label1) csak fogadja komponensek klassaShape (geometriai formák), akkor tartalmazhat egy processzort által hordozott A forrás objektum (Forrás):

érvényteleníti __fastcall TForm1 :: Label1DragOver (TObject * Sender, TObject * Forrás,

int X, Y int, TDragState állam bool Accept)

OnDragDrop esemény történik, amikor elengedi a bal egérgombbal az elem, kész fogadni. Ő parametrySender, a Forrás, XiYimeyut ugyanazt jelenti, mint az előző esetben. A tartalma processzor attól függ, milyen funkciók a programozó lehetővé teszi a felhasználó számára, hogy végezze húzással. Ez lehet egy változás a helyét tárgyak, az információcsere, stb

A következő példában, nincs fizikai mozgás a tárgyak; Label1 komponens kap egy mutatót mozgatni tárgy (geometriai ábra), és beolvassa a vagyoni értékek (magasság, szélesség) kiszámításához az alak a kerület. A számítás eredménye kerül Label1 -> felirattal.

void __fastcall TForm1 :: Label1DragDrop (TObject * Sender,

TObject * Forrás, int X, int Y)

float p, pi = 3,14; int W, H, R, D;

w = ((TShape *) Forrás) -> Szélesség;

D = W; ha (D> h) D = H;

kapcsoló (((TShape *) Forrás) -> alakja)