Composant en avant plan

Résolu
RURUInc Messages postés 42 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 21 octobre 2008 - 26 sept. 2008 à 15:07
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 - 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.

2 réponses

RURUInc Messages postés 42 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 21 octobre 2008
26 sept. 2008 à 15:57
Laisser tomber j'ai trouvé.

BrinkToFront;

Mdr...
1
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 sept. 2008 à 22:05
je dirais même plus : BringToFront pour ceux que ca interresse !

Nico
1
Rejoignez-nous