Bonjour,
je cherche une méthode pour pouvoir déplacer et retailler des composants (Edits, combobox, images, checkbox, ...) dynamiquement à l'exécution.
pour l'instant, j'utilise l'évenement OnMouseDown des composants, et j'envoie un message SC_DRAGMOVE ou SC_Size, selon ce que je veux faire :
pour le déplacement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 (sender as tcontrol).perform(WM_SysCommand, SC_DragMove, 0);
et
pour le retaillage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 (sender as tcontrol).perform(WM_SysCommand, SC_Size or 8,0);
Ca fonctionne a peu près bien, mais ça ne marche pas pour les ComboBox ( la combo s'ouvre)
Ca ne fonctionne pas non plus pour les Timages (je dois déplacer le composant conteneur de l'image -un TPanel en l'occurence- pour que ca marche :
Ca ne fonctionne pas non plus, évidemment, pour les composants qui n'implémentent pas de gestionnaire pour l'evenement OnMouseDown ( en gros pour les compos ne descendant pas de TWinControl)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 (sender as TImage).Parent.Perform(WM_SysCommand, SC_DragMove, 0);
Un autre problème est que ca ne marche que pour les composants pris individuellement. je ne peux pas sélectionner plusieurs composants et les déplacer simultanément avec cette méthode.
Note : SC_Size est définie dans Windows.pas. Par contre SC_DragMove n'est pas définie dans Windows.pas . Il faut rajouter
au code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 const SC_DragMove = $F012; // 61458 en décimal
Je sais qu'il existe des composants pour faire cela très simplement ... mais
je n'arrive pas à mettre la main dessus
Si quelqu'un pouvait me renseigner à ce sujet...
merci d'avance
PS j'utilise Delphi6 Pro + JVCL 3 + Firebird 1.5
Partager