Composant en avant plan [Résolu]

RURUInc 42 Messages postés jeudi 21 février 2008Date d'inscription 21 octobre 2008 Dernière intervention - 26 sept. 2008 à 15:07 - Dernière réponse : Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention
- 26 sept. 2008 à 22:05
Bonjour à tous.


J'ai un petit soucis lors du déplacement d'un composant à l'aide de la souris.
Je m'explique
Imaginons que j'ai 5 panels sur une form placer n'importe où.
et que je place 3 evenements (les mêmes pour tous).


Voici l'exemple complet qui fonctionnera sur votre D7
(utile pour ceux qui ne maitrise pas le deplacement de composant)





unit Unit1;







interface







uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;







type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    procedure PanelMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure PanelMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure PanelMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
    Cote:Byte;
    Fpos: TPoint;
    procedure Setpos(const Value: TPoint);
  public
    { Public declarations }
    property pos:TPoint read Fpos write Setpos;
  end;







var
  Form1: TForm1;







implementation







{$R *.dfm}







procedure TForm1.Setpos(const Value: TPoint);
begin
  Fpos := Value;
end;







procedure TForm1.PanelMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  If (Button=MbLeft) And (ssShift in Shift) Then
  Begin
    Cote:=1;
    pos := Point(x,y);
  end;
end;







procedure TForm1.PanelMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (Sender is TPanel) then
  Begin
//    TPanel(Sender).Cursor:=CrDefault;
    if (ssShift in shift) then
    Begin
      Tpanel(Sender).Cursor := crSizeAll;
      if (Cote = 1) then
      Begin
        TPanel(Sender).Left := TPanel(Sender).Left + X - pos.X;
        TPanel(Sender).Top := TPanel(Sender).Top + Y - pos.y;
      end;
    end;
  end;
  Shift := [];
end;







procedure TForm1.PanelMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Cote:=0;
  TPanel(Sender).Cursor:=CrDefault;
end;







end.




Voici la visu du Form1


Mon probleme.


si vous deplacer un panel (SHIFT + CLIQUE GAUCHE) certain passe en dessous d'autre au dessus des autres.


Comment faire pour obliger le composant que je déplace, à passer toujours au-dessus du composant qu'il survol ???


J'espere avoir bien expliquer mon probleme.
Afficher la suite 

2 réponses

Répondre au sujet
RURUInc 42 Messages postés jeudi 21 février 2008Date d'inscription 21 octobre 2008 Dernière intervention - 26 sept. 2008 à 15:57
+3
Utile
Laisser tomber j'ai trouvé.

BrinkToFront;

Mdr...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de RURUInc
Nicolas___ 1039 Messages postés jeudi 2 novembre 2000Date d'inscription 24 avril 2013 Dernière intervention - 26 sept. 2008 à 22:05
+1
Utile
je dirais même plus : BringToFront pour ceux que ca interresse !

Nico
Commenter la réponse de Nicolas___

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.