Composant en avant plan [Résolu]

Messages postés
42
Date d'inscription
jeudi 21 février 2008
Dernière intervention
21 octobre 2008
- 26 sept. 2008 à 15:07 - Dernière réponse :
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Dernière intervention
21 octobre 2008
- 26 sept. 2008 à 15:57
3
Merci
Laisser tomber j'ai trouvé.

BrinkToFront;

Mdr...

Merci RURUInc 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de RURUInc
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
- 26 sept. 2008 à 22:05
1
Merci
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.