Appel d'une procédure [Résolu]

vieuxpere 199 Messages postés samedi 3 janvier 2004Date d'inscription 17 décembre 2014 Dernière intervention - 18 juin 2008 à 19:58 - Dernière réponse : Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention
- 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.

Merci dans tous les cas pour votre aide.
Afficher la suite 

10 réponses

Répondre au sujet
Utilisateur anonyme - 19 juin 2008 à 13:53
+3
Utile
Salut,

Ca ne fonctionnera pas :

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;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 18 juin 2008 à 21:51
0
Utile
Salut,




procedure TForm1.BoussoleHoraire(Sender: TObject; Shift: TShiftState; X, Y: Integer);


begin


... Ton code ...

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.
Commenter la réponse de Caribensila
vieuxpere 199 Messages postés samedi 3 janvier 2004Date d'inscription 17 décembre 2014 Dernière intervention - 19 juin 2008 à 00:33
0
Utile
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)

Merci par avance,
Commenter la réponse de vieuxpere
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 19 juin 2008 à 09:12
0
Utile
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.
Commenter la réponse de cs_Loda
vieuxpere 199 Messages postés samedi 3 janvier 2004Date d'inscription 17 décembre 2014 Dernière intervention - 19 juin 2008 à 09:29
0
Utile
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.

Merci pour vos réponses.

Cordialement,
Commenter la réponse de vieuxpere
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 19 juin 2008 à 13:48
0
Utile
Je ne vois pas bien où tu veux arriver... Mais tu peux aussi faire ceci :

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  BoussoleHoraire(sender,Shift, X, Y);
end;

OU encore

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  BoussoleHoraire(sender,[ssLeft], X, Y);
end;
Commenter la réponse de Caribensila
Utilisateur anonyme - 19 juin 2008 à 13:55
0
Utile
On s'est croisé dans nos réponses : désolé Cari
Commenter la réponse de Utilisateur anonyme
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 19 juin 2008 à 13:59
0
Utile
Y'a pas de mal Francky.
J'ai même rien senti. 
Commenter la réponse de Caribensila
vieuxpere 199 Messages postés samedi 3 janvier 2004Date d'inscription 17 décembre 2014 Dernière intervention - 20 juin 2008 à 11:12
0
Utile
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);
Commenter la réponse de vieuxpere
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 20 juin 2008 à 14:31
0
Utile
« 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. 
Commenter la réponse de Caribensila

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.