Salut à tous,
Voila, je ne peut pas déplacer ma form en BorderSytle = bsNone.
Je voudrais savoir pourquoi ?
Merci d'avance.
Salut à tous,
Voila, je ne peut pas déplacer ma form en BorderSytle = bsNone.
Je voudrais savoir pourquoi ?
Merci d'avance.
j'ai pas la réponse mais le remède est simple:
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 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin active:=true; xo:=x; yo:=y; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if active then begin top:=y-yo+top; left:=x-xo+left; end; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin active:=false; end; procedure TForm1.FormCreate(Sender: TObject); begin active:=false; end;
Tout simplement que c'est uniquement la zone de barre de titre qui a le comportement...
Le remède dans la![]()
=> http://delphi.developpez.com/faq/?pa...#deplacerfiche
Il y en a aucuns qui marchent.
Si ta form est "remplie" de composants la recouvrant ainsi entièrement, c'est normal que cela ne fonctionne pas...
Il faut appliquer le code à un des controls de ta form (un panel ou autre WinControl... comme le suggère la faq "Cette méthode peut aussi être appliquée à tous les descendants de TWinControl." )
On peut le mettre directement dans le code du projet ?
dans ton unit!
je n'ai pas essayé le code plus succinct de la faq par contre le mien ne peut que fonctionner à condition que ta form ne soit pas remplie.
alors il faut lier tes événements onmouse... à un élément de ta form comme te le suggère neilbgr.
Je ne comprend toujours pas désoler les amis.![]()
Envoyé par neilbgr
Bonjour!
L'exemple de la FAQ ne fonctionne pas pour les fiches sans bordures (enfin pas pour moi).
Implémente un événement OnMouseDown sur ta fiche et mets ce code dedans :
A+!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const SC_DRAGMOVE = $F012; begin if Button = mbLeft then begin ReleaseCapture; Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0); end; end;
Je confirme que le premier code de la FAQ n'est pas élégant et ne réponds pas à la question.Envoyé par slimjoe
En revanche, le second code fonctionne très bien à la condition que la form est des zones cliquables (donc comme je disais plus haut, pas complétement recouverte)
Enfin, le code de slimjoe répond parfaitement à la question.
Je te suggères meme d'aller demander au responsable de la FAQ si ce topic pourrait etre mis à jour. ( il me semble que c'est par là http://www.developpez.net/forums/vie...751972#1751972 )
Partager