Gestiondu déplacement d'une feuille fille [Résolu]

Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
- - Dernière réponse : jderf
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
- 24 janv. 2011 à 11:05
Bonjour,

Je souhaite controlé le déplacement des feuilles filles dans la fenêtre mère. Je veux bloquer, lors du glisser-déposer, le positionnement d'une fenêtre à moins de 100 pixels du bord gauche de la fenêtre mère.

Je voulez faire ceci, mais visiblement c'est pas possible.

procedure TFormMere.FormDockOver(Sender: TObject; Source: TDragDockObject;
  X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept:= (Source is TMDIChild); //erreur du compilateur
end;

procedure TFormMere.FormDockDrop(Sender: TObject; Source: TDragDockObject;
  X, Y: Integer);
begin
  if (Source is TMDIChild) and X < 100 then
    (Source as TMDIChild).left := 100;
end;


Commnent faire ?

Jean
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
1
3
Merci
Bonjour,

A force de recherche sur le net, j'ai fini par trouvé une solution sur un site en anglais (Moving a sheet girl delphi).
Il faut ajouter ceci (interception du message WM_WINDOWPOSCHANGING) :
    procedure PosChanging(var Msg:TwmWindowPosChanging); message WM_WINDOWPOSCHANGING;


procedure TMDIChild.PosChanging(var Msg: TWMWindowPosChanging);
begin
  if Msg.WindowPos^.x < 100 then 
    Msg.WindowPos^.x:=100;
  Msg.result:=0;
end;


TWMWindowPosChanging est une structure de WindowsPos, elle permet de limité la position, la taille et même d'interdire le déplacment.

Voila, bonne journée.
Jean

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 125 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jderf
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
0
Merci
Bonsoir

Ne serait pas plutôt
source.control

qu'il faudrait utiliser ?

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
Commenter la réponse de WhiteHippo
Messages postés
192
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
1
0
Merci
Bonjour WhiteHippo,

J'ai trouvé pour l'erreur de compil, il faut utiliser les evenement Drag et non Dock.

Par contre ça fonctionne pas pour autant,aucun effet !

D'ailleur, je me suis apperçu que les evenements Drop et Over (fille ou mère) ne se déclenche pas lors du déplacement de la fiche fille.

Donc j'ai mis ça dans l'évenement paint de la fille

if self.Left < 100 then
self.Left := 100;

Mais y'a un effet de scintillement qui n'est vraiment pas beau. Donc je suis toujours preneur d'une méthode propre !
Commenter la réponse de jderf