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

jderf 192 Messages postés mercredi 29 décembre 2004Date d'inscription 2 octobre 2014 Dernière intervention - 17 janv. 2011 à 12:05 - Dernière réponse : jderf 192 Messages postés mercredi 29 décembre 2004Date d'inscription 2 octobre 2014 Dernière intervention
- 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 

Votre réponse

3 réponses

Meilleure réponse
jderf 192 Messages postés mercredi 29 décembre 2004Date d'inscription 2 octobre 2014 Dernière intervention - 24 janv. 2011 à 11:05
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

Merci jderf 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de jderf
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 19 janv. 2011 à 20:21
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
jderf 192 Messages postés mercredi 29 décembre 2004Date d'inscription 2 octobre 2014 Dernière intervention - 21 janv. 2011 à 10:33
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.