botelec
Messages postés38Date d'inscriptionvendredi 20 juin 2003StatutMembreDernière intervention11 septembre 20101 15 sept. 2008 à 15:31
Salut Julio, ta source à maintenant 4 ans .. =)
je suis tombé dessus en cherchant une méthode pour intercepter un double clic sur une forme.
Je cherchais en effet une méthode différente de celle qui consiste à surcharger la procédure normale d'interception des messages.
(Suis je clair?)
je me suis donc intéressé de près à ta source,
et je pense qu'il y a grande confusion dans la procédure :
procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var
Pos:TPoint;
begin
GetCursorPos(Pos);
case X of
WM_LBUTTONDBLCLK:
if dblClickAction=0
then PowerOff
else if dblClickAction=1
then Reboot
else SuspendSession;
WM_LBUTTONDOWN:;
WM_LBUTTONUP:;
WM_RBUTTONDBLCLK:;
WM_RBUTTONDOWN:;
WM_RBUTTONUP: PopupMenu1.Popup(Pos.X,Pos.Y);
end;
end;
Tu fais une sélection par le case X avec comme résultats possible des constantes de message,
alors que X représente la valeur sur l'axe X de la position du curseur ...
Du coup j'ai cherché un peu, et je laisse un exemple.. pour ceux qui sont interressés:
*Placez ce code dans FormMouseUp pour intercepter un clic gauche relachés.
procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var
Pos:TPoint;
begin
GetCursorPos(Pos);
if Shift = [ssRight]
then PopupMenu1.Popup(Pos.X,Pos.Y);
else if Shift = [ssRight,ssDouble]
then if dblClickAction=0
then PowerOff
else if dblClickAction=1
then Reboot
else SuspendSession;
end;
end;
BBye
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 21 nov. 2004 à 02:06
hohoho ma source à 1an !
pour toi ni69, je la remets a jour si tu veux :D j'ai vu k'elle avait qqs problemes sur certains pc ... je vais eput etre utiliser un composant ABF pour etre sur ke les OS soient bien pris en compte, je la posterais en double ds la source (cette version + celle avec le compo)
merci pour la note :) ++
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 201012 20 nov. 2004 à 23:43
C'est un gadjet comme tu dis mais c'est bien pratique ;)
15 sept. 2008 à 15:31
je suis tombé dessus en cherchant une méthode pour intercepter un double clic sur une forme.
Je cherchais en effet une méthode différente de celle qui consiste à surcharger la procédure normale d'interception des messages.
(Suis je clair?)
je me suis donc intéressé de près à ta source,
et je pense qu'il y a grande confusion dans la procédure :
procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var
Pos:TPoint;
begin
GetCursorPos(Pos);
case X of
WM_LBUTTONDBLCLK:
if dblClickAction=0
then PowerOff
else if dblClickAction=1
then Reboot
else SuspendSession;
WM_LBUTTONDOWN:;
WM_LBUTTONUP:;
WM_RBUTTONDBLCLK:;
WM_RBUTTONDOWN:;
WM_RBUTTONUP: PopupMenu1.Popup(Pos.X,Pos.Y);
end;
end;
Tu fais une sélection par le case X avec comme résultats possible des constantes de message,
alors que X représente la valeur sur l'axe X de la position du curseur ...
Du coup j'ai cherché un peu, et je laisse un exemple.. pour ceux qui sont interressés:
*Placez ce code dans FormMouseUp pour intercepter un clic gauche relachés.
procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var
Pos:TPoint;
begin
GetCursorPos(Pos);
if Shift = [ssRight]
then PopupMenu1.Popup(Pos.X,Pos.Y);
else if Shift = [ssRight,ssDouble]
then if dblClickAction=0
then PowerOff
else if dblClickAction=1
then Reboot
else SuspendSession;
end;
end;
BBye
21 nov. 2004 à 02:06
pour toi ni69, je la remets a jour si tu veux :D j'ai vu k'elle avait qqs problemes sur certains pc ... je vais eput etre utiliser un composant ABF pour etre sur ke les OS soient bien pris en compte, je la posterais en double ds la source (cette version + celle avec le compo)
merci pour la note :) ++
20 nov. 2004 à 23:43