2009-05-05 5 views

Répondre

19

Cette valeur est en coordonnées globales, donc vous pouvez traduire dans votre formulaire en utilisant la routine ScreenToClient qui traduira les coordonnées de l'écran en coordonnées de fenêtre. Selon le fichier d'aide Delphi, Windows.GetCursorPos peut échouer, Mouse.CursorPos l'enveloppe pour déclencher une exception EOsException en cas d'échec.

var 
    pt : tPoint; 
begin 
    pt := Mouse.CursorPos; 
    // now have SCREEN position 
    Label1.Caption := 'X = '+IntToStr(pt.x)+', Y = '+IntToStr(pt.y); 
    pt := ScreenToClient(pt); 
    // now have FORM position 
    Label2.Caption := 'X = '+IntToStr(pt.x)+', Y = '+IntToStr(pt.y); 
end; 
3

Que pensez-vous de cela?

procedure TForm1.Button1Click(Sender: TObject); 
var 
MausPos: TPoint; 
begin 
    GetCursorPos(MausPos); 
    label1.Caption := IntToStr(MausPos.x); 
    label2.Caption := IntToStr(MausPos.y); 
end; 


procedure TForm1.Button2Click(Sender: TObject); 
begin 
    SetCursorPos(600, 600); 
end; 

en ligne quelque part à cet une fois sauvé dans mon codesnippet DB :)

This page résoudra probablement toutes vos questions ... Mais il semble y avoir des fonctions pour aller du client aux coordonnées de l'écran et à l'arrière etc.

Bonne chance! Mouse.CursorPos contient le TPoint, qui à son tour contient les positions X et Y.

4

Comme d'autres l'ont dit, vous pouvez utiliser Mouse.CursorPos ou la fonction GetCursorPos, mais vous pouvez aussi simplement gérer l'événement OnMouseDown ou OnMouseUp au lieu de OnClick. De cette façon, vous obtenez vos valeurs X et Y en tant que paramètres de votre gestionnaire d'événements, sans devoir effectuer d'appels de fonction supplémentaires.

5

La propriété Mouse.CursorPos vous indiquera le position actuelle de la souris. Si l'ordinateur s'exécute lentement ou si votre programme tarde à répondre aux messages, il se peut qu'il ne soit pas le même que la position de la souris lorsque l'événement OnClick s'est produit pour la première fois. Pour obtenir la position de la souris au moment où le bouton de la souris a été cliqué sur, utilisez GetMessagePos. Il signale coordonnées de l'écran; traduire aux coordonnées du client avec TImage.ScreenToClient.

L'alternative est de gérer les événements OnMouseDown et OnMouseUp vous-même; leurs paramètres incluent les coordonnées. N'oubliez pas que les deux événements doivent se produire pour qu'un clique sur. Vous pouvez également détecter les opérations glisser, car vous ne voudriez probablement pas considérer un glisser comme un clic.

Questions connexes