vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014
-
18 juin 2008 à 19:58
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 2019
-
20 juin 2008 à 14:31
Bonjour,
J'ai créé une procédure avec à l'interieur un code qui fonctionne bien, le probleme c'est que je n'arrive appeller cette procédure
Voici sa déclaration :
Type
procedure BoussoleHoraire(Sender: TObject; Shift: TShiftState; X, Y: Integer);
J'ai essaye quelque chose du genre :
procedure TForm1.Button3Click(Sender: TObject);
Begin
BoussoleHoraire(sender,shift, x, y);
end;
Mais ça marche pas !
Pour info, l'objectif de cette procédure était d'avoir les caracteristiques que l'on trouve dans un evenement MouseMove afin de recuperer la position precise de la souris sur un composant.
procedure TForm1.Button3Click(Sender: TObject);
Begin
BoussoleHoraire(sender,shift, x, y);
end;
Shift,X et Y ne sont pas définis dans ta procédure ButtonClick. Ainsi le compilo refuse de faire son job : Shift, X et Y ne sont pas définit.
Pour info, l'objectif de cette procédure était d'avoir les caracteristiques que l'on trouve dans un evenement MouseMove afin de recuperer la position precise de la souris sur un composant.
je comprend pas bien ce que tu cherches à faire : Explique précisément ton objectif dans sa globalité car la j'ai le sentiment que tu es entrain de t'égarer :
Sinon f0xi t'a passé ce bout de code
procedure TFormX.Image1Click(Sender: TObject);
var MP : TPoint;
begin
GetCursorPos(MP);
MP := (sender as TImage).ScreenToClient(MP);
end;
Il suffit de le transformer en fonction
Function Get_X_MousePosition(AImage:TImage):TPoint;
Var
MP:TPoint;
Begin
GetCursorPos(MP);
MP:=AImage.ScreenToClient(MP);
Result:=MP;
End;
procedure TForm1.Button3Click(Sender: TObject);
Var
MP:TPoint;
Begin
MP:=Get_X_MousePosition(Image2):
end;
Puis, tu sélectionnes le composant concerné, et dans l'onglet Evénements de l'inspecteur d'objets, tu mets BoussoleHoraire dans l'événement OnMouseMove.
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014 19 juin 2008 à 00:33
Bonjour et merci de cette reponse, mais ma question n'est pas sur le fait de savoir où placer mon appel de procédure mais sur le fait de savoir comment synthaxiquement appeller ma procédure.
procedure TForm1.Button3Click(Sender: TObject);
Begin
BoussoleHoraire(sender,shift, x, y); <<<-- En gros je ne sais pas quoi mettre entre les parentheses (Delphi attend des parametres ( (Sender: TObject; Shift: TShiftState; X, Y: Integer); )mais je ne sais pas quoi lui mettre)
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 19 juin 2008 à 09:12
salut,
si tu fais comme Caribensila t'as expliqué, tu verra que cela fonctionne tout seul (cad, que l'appel se ferra tout seul lorsque tu bougera la souris sur le composant).
si ce n'as pas ce que tu veux essai avec GetCursorPos(P) ou reformule ta question.
bon code,
Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Vous n’avez pas trouvé la réponse que vous recherchez ?
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014 19 juin 2008 à 09:29
Bonjour,
Je voudrais simplement savoir les parametres probables qu'il faut mettre en parenthéses (voir réponse plus haut), car je souhaite executer la procédure dans un bouton et non dans un evenerment MouseMove.
vieuxpere
Messages postés195Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention17 décembre 2014 20 juin 2008 à 11:12
Merci pour ces réponses, mais je comile pas "Get_x_MousePosition identifcateur non déclaré" savez vous qu'est-ce qu'il faut que je mette ?
Pour rappel l'objectif est de parvenir d'avoir ma position de la souris sur mon image est d'avoir la bonne information de positionnement comme le ferais un MouseDown par exemple.
En substance, j'ai synthétisé vos observations comme ci-dessous est-ce que ça vous parez cohérent ?
Merci par avance,
var NewItem: TMenuItem;
var NomTypeActivite : string;
var x, y : integer;
var MP : TPoint;
var AImage:TImage;
Begin
GetCursorPos(MP);
MP := (sender as TImage).ScreenToClient(MP);
GetCursorPos(MP);
MP:=AImage.ScreenToClient(MP);
MP:=Get_X_MousePosition(Image2):
// Appel la procédure permettant de savoir l'horaire sur lequel se trouve le pointeur de la souris
BoussoleHoraire(sender,[ssLeft], X, Y);
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 20 juin 2008 à 14:31
« je souhaite executer la procédure dans un bouton et non dans un evenerment MouseMove »
+
« l'objectif est de parvenir d'avoir ma position de la souris sur mon image »
________________________________________________________
= C'est clair comme du jus de chique, ton truc. J'entrave queud.