Bonjour,
Je voudrais mettre en place un drag and drop sur Borland seulement verticale ou horizontal. Mais le probleme c'est que je veux pas vérifier la position d'arrivé quand on relache l'objet mais pendant...
Si quelqun aurait une idée...
Merci,![]()

Bonjour,
Je voudrais mettre en place un drag and drop sur Borland seulement verticale ou horizontal. Mais le probleme c'est que je veux pas vérifier la position d'arrivé quand on relache l'objet mais pendant...
Si quelqun aurait une idée...
Merci,![]()
Salut !
Peut-être en détaillant le Drag & Drop avec OnMouseDown, OnMouseMove et OnMouseUp.
C'est juste idée...
A plus !
Salut seb2020
Si c'est pour deplacer une Form en cliquant dessus, regarde ce post il y a une fonction qui le fait tres bien et dans toutes les directions

Salut,
Merci pour les réponses. J'arrive a faire le drag and drop de mon objet. Le truc c'est que je vais le faire que de droite a gauche ou de haut en bas.
Je vais essayer la solution de henderson. Je vous tiens au courant mais si il y a d'autres idée ca pourrait etre pas mal
Salut !
J'ai pris comme base de réflexion de déplacer des TPanel.
J'utilise un TPanel *Mobile dont le parent est la Form (idem pour les Panels) pour matérialiser le déplacement.
Au départ, Mobile n'est pas visible et je lui ai donné une teinte gris foncé.
Voici quelques globales :
Pour chacun des TPanel que je vais déplacer, j'ai donné les événementielles suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 bool DragHorizontal = true; bool IsDragging = false; TPoint Start; TPoint Off;
A plus !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 void __fastcall TForm1::Panel1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Mobile->BoundsRect = ((TPanel*)Sender)->BoundsRect; Mobile->BringToFront(); Mobile->Visible = true; IsDragging = true; Start = Point(X,Y); // pour garder l'offet de départ au cas où Off = Point(X,Y); // l'offset en cours } void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(IsDragging) { if(DragHorizontal) { Mobile->SetBounds(Mobile->Left + X - Off.x, Mobile->Top, Mobile->Width, Mobile->Height); } else { Mobile->SetBounds(Mobile->Left, Mobile->Top + Y - Off.y, Mobile->Width, Mobile->Height); } Off = Point(X,Y); } } void __fastcall TForm1::Panel1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(IsDragging) { IsDragging = false; Mobile->Visible = false; // Réflexion à suivre... //.... //Si l'objet doit se placer bêtement à l'endroit du Mobile //mais sur le même Parent : ((TPanel*)Sender)->BoundsRect = Mobile->BoundsRect; } }

Salut,
je vais voir tout ca et je te redis![]()
Partager