cs_cyber37
Messages postés110Date d'inscriptionmardi 25 octobre 2005StatutMembreDernière intervention19 novembre 2010
-
9 mars 2007 à 17:09
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 2013
-
12 mars 2007 à 23:16
bonjours avant de poster j'ai fait une recherche et voici ma question :
est'il possible de faire une zone cliquable enfin dans une partie de la form un endroi ou on peut cliquer enfin comme un bouton invisible ?
j'ai essailler avec la propriete visible d'un bouton mais si il est invisible meme en liquand sa ne fait rien
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 9 mars 2007 à 17:34
Salut,
Il y avait plus direct mais surtout moins lourd qu'un TImage pour récupérer un click ...
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Var aRect : TRect ;
begin aRect := Rect(0, 0, 100, 100); // la zone de click en haut à gauche
// uniquement si click bouton gauche et dans la Zone
If (Button = mbLeft) and (PtInRect(aRect, Point(x,y))) Then ShowMessage('C''est dedans');
end;
type TForm1 = class (TForm)
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private { Déclarations privées }
public { Déclarations publiques }
end;
var Form1: TForm1;
{Déclaration d'une variable globale de type Handle region}
HRGN1 : HRGN;
implementation
{$R *.dfm}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin {On libère le handle avant de quitter} DeleteObject(HRGN1);
end;
procedure TForm1.FormCreate(Sender: TObject);
{Définitions des points des deux triangles} Const PointArray1 : Array[0..2] Of TPoint = ((x:0; y:25), (x:100; y:25), (x:50; y:100));
PointArray2 : Array[0..2] Of TPoint = ((x:50; y:0), (x:0; y:75), (x:100; y:75));
Var HRGN2, HRGN3 : HRGN;
begin {Il faut toujours initialiser un Handle région avec un créate...}
HRGN1 : = CreateRectRgn(0, 0, 100, 100);
{On crée les deux triangles} HRGN2 := CreatePolygonRgn(PointArray1, 3, ALTERNATE);
HRGN3 := CreatePolygonRgn(PointArray2, 3, ALTERNATE);
{On les combines dans HRGN1}
CombineRgn(HRGN1, HRGN2, HRGN3, RGN_XOR);
{ET on libère ceux qui sont inutiles} DeleteObject(HRGN2);
DeleteObject(HRGN3);
end ;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin {Ici le controle avec PtInRegion} If (Button = mbLeft) and (PtInRegion(HRGN1, x, y)) Then ShowMessage('C''est dedans');
end;
procedure TForm1.FormPaint(Sender: TObject);
begin {On l'affiche sur la fiche} Canvas.Brush.Color := clRed;
FillRgn(Canvas.Handle, HRGN1, Canvas.Brush.Handle);
end ;
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 12 mars 2007 à 23:16
RE - merci cirec pour cette demo
je ne m'y etais jamais encore trop interesser ... Mais je comprends maintenant deja un peu plus l'utilité de tous ca !