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

Signaler
Messages postés
189
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
-
Messages postés
189
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
-
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

3 réponses

Messages postés
189
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
1
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
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012

Bonsoir

Ne serait pas plutôt
source.control

qu'il faudrait utiliser ?

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
189
Date d'inscription
mercredi 29 décembre 2004
Statut
Membre
Dernière intervention
2 octobre 2014
1
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 !