AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maus positionieren Problem

Ein Thema von API · begonnen am 13. Jul 2011 · letzter Beitrag vom 15. Jul 2011
Antwort Antwort
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#1

Maus positionieren Problem

  Alt 13. Jul 2011, 20:38
Hello,

versuche die Maus über einem Button zu positionieren, da es möchte mir nicht gelingen.
Der Maus-Cursor erscheint etwas verschoben unterhalb des Buttons. Was mache ich falsch?

Delphi-Quellcode:
var
  MousePos: TPoint;
begin
    MousePos.X := Button1.Left + Button1.Width div 2;
    MousePos.Y := Button1.Top + Button1.Height div 2;
    Mouse.CursorPos := ClientToScreen(MousePos);
end;
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Maus positionieren Problem

  Alt 13. Jul 2011, 20:40
Hallo,

also bei mir wandert der Maus-Zeiger direkt auf den Button und zwar mittig mit deinem Code
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#3

AW: Maus positionieren Problem

  Alt 13. Jul 2011, 21:01
Wenn der Code nach einem Buttonklick ausgeführt wird, funktioniert es. Jedoch nich im OnShow|OnCreate. Schicke nun im OnShow eine Message per PostMessage und positioniere dann die Maus.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Maus positionieren Problem

  Alt 13. Jul 2011, 21:11
mmh - also ich kanns auch im OnShow nicht nachvollziehen.

Anbei mein Test-Code bei dem es problemlos funktioniert:

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
   MousePos: TPoint;
 begin
     MousePos.X := Button1.Left + Button1.Width div 2;
     MousePos.Y := Button1.Top + Button1.Height div 2;
     Mouse.CursorPos := ClientToScreen(MousePos);
 end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled := true;

  Hide;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := false;
  Show;
end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Maus positionieren Problem

  Alt 13. Jul 2011, 21:19
Warum schickst du an die Schaltfläche keine WM_COMMAND Nachricht? Das was du da machst ist Frickelei.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#6

AW: Maus positionieren Problem

  Alt 13. Jul 2011, 22:23
Zitat:
Delphi-Quellcode:
var
  MousePos: TPoint;
begin
    MousePos.X := Button1.Left + Button1.Width div 2;
    MousePos.Y := Button1.Top + Button1.Height div 2;
    Mouse.CursorPos := ClientToScreen(MousePos);
end;
ClientToScreen ist eine nette Methode und nicht irgendeine billige Funktion.
Hier fragst du die Form (Self.ClientToScreen), mit der Client-Position des Buttons ... eventuell rechnet ClientToScreen der Form aber nicht mit der Clientposition, sondern mit der Fensterposition?
Und dein Fenster hat doch bestimmt einen Rahmen+Titelleiste?

Warum fragst du nicht also direkt den Button?
Delphi-Quellcode:
var
  MousePos: TPoint;
begin
    MousePos.X := Button1.Width div 2;
    MousePos.Y := Button1.Height div 2;
    Mouse.CursorPos := Button1.ClientToScreen(MousePos);
end;
Nja, ansonsten kann es gut sein, daß Form/Button nochmal etwas verschoben werden, bevor es angezeigt wird.



Deshalb stimme ich Luckie vollkommen zu.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (13. Jul 2011 um 22:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Maus positionieren Problem

  Alt 13. Jul 2011, 22:30
Ach auch noch im eigenem Fenster? Wozu soll das gut sein?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#8

AW: Maus positionieren Problem

  Alt 14. Jul 2011, 07:04
Ach auch noch im eigenem Fenster? Wozu soll das gut sein?
Ist eine Art mouse-follows-the-focus (oder -the-default-button) Option, welche Windows auch zur Verfügung stellt.

Wie soll das mit WM_COMMAND funktionieren?
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#9

AW: Maus positionieren Problem

  Alt 15. Jul 2011, 05:57
Ach auch noch im eigenem Fenster? Wozu soll das gut sein?
Wie soll das mit WM_COMMAND funktionieren?
*p.u.s.h*
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz