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.