Appel d'une procédure

Résolu
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014 - 18 juin 2008 à 19:58
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 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.

Merci dans tous les cas pour votre aide.

10 réponses

Utilisateur anonyme
19 juin 2008 à 13:53
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;
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
18 juin 2008 à 21:51
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.
0
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 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)

Merci par avance,
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 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.

Merci pour vos réponses.

Cordialement,
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
19 juin 2008 à 13:48
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;
0
Utilisateur anonyme
19 juin 2008 à 13:55
On s'est croisé dans nos réponses : désolé Cari
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
19 juin 2008 à 13:59
Y'a pas de mal Francky.
J'ai même rien senti. 
0
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 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);
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
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. 
0
Rejoignez-nous