Edge :TEdge;

[Résolu]
Signaler
Messages postés
31
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
21 août 2008
-
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
-
Salut

ou puis je trover les Objets Edge en Delphi7 ?
j ai trouve un code mais je dois mettere les Controlls sur la Form comme :
Edge,  ...

voila le code :

type

  TEdge= (eNone,eTopLeft,eTopRight,eBottomLeft,eBottomRight);


  TForm1 = class (TForm)


...


  private

    { Private-Deklarationen }

    r1,r2,r3,r4:TRect;


    edge:TEdge;


...

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,


  Y: Integer);

begin

  if ptinRect(r1,Point(x,y)) then edge: =eTopLeft else

  if PtInRect(r3,Point(x,y)) then edge:= eBottomRight else

  if ptinRect(r2,Point(x,y)) then edge: =eTopRight else

  if PtInRect(r4,Point(x,y)) then edge:= eBottomLeft else

    edge: =eNone;


  case edge of

    eNone:Panel1.Cursor:= crDefault;


    eTopLeft,eBottomRight:Panel1.Cursor:=crSizeNWSE;


    eTopRight,eBottomLeft: Panel1.Cursor:=crSizeNESW;


  end ;

end;

procedure TForm1.Panel1Resize(Sender: TObject);

begin

  r1: =rect(0,0,5,5);


  r3:=rect(panel1.width-5,panel1.height-5,panel1.width,panel1.height);


  r2:=rect(r1.left,r3.top,r1.right,r3.bottom);


  r4:=rect(r3.left,r1.top,r3.right,r1.bottom);

end;

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;


  Shift: TShiftState; X, Y: Integer);

begin

  if edge<>eNone then

  begin

    releaseCapture;


    case edge of

      eTopLeft:Panel1.PerForm(WM_SysCommand, $F004, 0);


      eTopRight:Panel1.PerForm(WM_SysCommand, $F007, 0);


      eBottomLeft:Panel1.PerForm(WM_SysCommand, $F005, 0);


      eBottomRight:Panel1.PerForm(WM_SysCommand, $F008, 0);


    end;


  end;

end;

4 réponses

Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
bonjour,


çà marche :


unit Unit1;


interface


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


type


  TEdge = (eNone, eTopLeft, eTopRight, eBottomLeft, eBottomRight);


  TForm1 = class(TForm)


    Panel1: TPanel;
    procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Panel1Resize(Sender: TObject);
    procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);


  private
    r1, r2, r3, r4: TRect;
    edge: TEdge;
  public
    { Déclarations publiques }
  end;


var
  Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ptinRect(r1, Point(x, y)) then edge := eTopLeft else
    if PtInRect(r3, Point(x, y)) then edge := eBottomRight else
      if ptinRect(r2, Point(x, y)) then edge := eTopRight else
        if PtInRect(r4, Point(x, y)) then edge := eBottomLeft else
          edge := eNone;
  case edge of
    eNone: Panel1.Cursor := crDefault;
    eTopLeft, eBottomRight: Panel1.Cursor := crSizeNWSE;
    eTopRight, eBottomLeft: Panel1.Cursor := crSizeNESW;
  end;
end;


procedure TForm1.Panel1Resize(Sender: TObject);
begin
  r1 := rect(0, 0, 5, 5);
  r3 := rect(panel1.width - 5, panel1.height - 5, panel1.width, panel1.height);
  r2 := rect(r1.left, r3.top, r1.right, r3.bottom);
  r4 := rect(r3.left, r1.top, r3.right, r1.bottom);
end;


procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if edge <> eNone then
  begin
    releaseCapture;
    case edge of
      eTopLeft: Panel1.PerForm(WM_SysCommand, $F004, 0);
      eTopRight: Panel1.PerForm(WM_SysCommand, $F007, 0);
      eBottomLeft: Panel1.PerForm(WM_SysCommand, $F005, 0);
      eBottomRight: Panel1.PerForm(WM_SysCommand, $F008, 0);
    end;
  end;


end;


end.

mais PAS le OnMouseMove du fait que ptinRect() ne trouve rien
donc, il ne trouve pas le TRect..

J'ai essayé r1,r2,r3,r4:TRect;  en public mais quedal.
je vois pas pour l'instant.
  
cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
ben non en fait tout marche...(les quatres cursors fonctionnent)
j'ai cru au départ que tu voulais déplacer le panel avec la souris...
je sais pas d'où vient ton erreur.
peut-être une écriture mal placée..

cantador
Messages postés
31
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
21 août 2008

Hi

sda marche bien maintenet ;) Merci
je voudrais maintenet la meme mais avec Rectangle

Ou puis je changer
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
You put the TShape(align : alclient) into the TPanel.

cantador