AGB  ·  Datenschutz  ·  Impressum  







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

Relative Positionierung der Maus

Ein Thema von Jan · begonnen am 3. Dez 2005 · letzter Beitrag vom 4. Dez 2005
Antwort Antwort
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#1

Relative Positionierung der Maus

  Alt 3. Dez 2005, 13:40
Hallo DPler!

Ich habe folgendes Problem:
Ich will den Mauszeiger in der Mitte des Forms platzieren.

bisher mache ich das so:


Delphi-Quellcode:
var muh : Types.TPoint;
    maus : TMouse;
...

    muh.x:=Round(ClientWidth/2)+form1.Left+4;
    muh.y:=Round(ClientHeight/2)+form1.Top+26;
    maus.CursorPos:=muh;
Allerdings ist diese Methode abhängig von der Breite des Rahmens, und da dieser Rahmen anscheinend nicht überall gleich ist funktioniert diese Methode nicht 100%ig auf anderen Rechnern. Außerdem glaube ich nicht, dass diese Methode auch im Vollbildmodus klappen würde.
Dass ich die Maus nur über die Bildschirmkoordinaten positionieren kann finde ich etwas ärgerlich und ich glaube, dass das auch anders gehen muss, da man im onMouseMove event ja auch relative Form-Mauskoordinaten bekommt.
Kann man also die Maus irgendwie mit relativen Form-koordinaten positionieren?

Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Relative Positionierung der Maus

  Alt 3. Dez 2005, 13:44
Mit MSDN-Library durchsuchengetSystemmetrics kannst du ermitteln, wie breit der Rand eines Fenster und wie hoch dessen Titelzeile ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Relative Positionierung der Maus

  Alt 3. Dez 2005, 14:23
Hallo Luckie!

Danke für den Tip,
allerdings bekomme ich da andere Werte raus, als die, die ich durch ausprobieren an meinem Rechner herausbekommen habe.

Ich bekomme jetzt statt der 4px für den Horizontalen Rahmen und der 26px für den vertikalen, oberen Rahmen mit folgendem Code:


Delphi-Quellcode:
    muh.x:=Round(ClientWidth/2)+form1.Left+GetSystemMetrics(SM_CXBORDER);
    muh.y:=Round(ClientHeight/2)+GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYBORDER);
einen pixel und 23 pixel raus.
Welche Befehle brauche ich da genau?

Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Relative Positionierung der Maus

  Alt 3. Dez 2005, 14:40
Hallo,
hab nochmal intensiv und mit abgewandelten Suchbegriffen und ich weniger eindeutig benannten threads hier gesucht und bin auf die function clienttoscreen gestoßen.
Mit folgendem Code geht das ganze jetzt:

Delphi-Quellcode:
    muh.x:=Round(ClientWidth/2);
    muh.Y:=Round(ClientHeight/2);
    muh:=form1.ClientToScreen(muh);
    maus.CursorPos:=muh;
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: Relative Positionierung der Maus

  Alt 3. Dez 2005, 15:22
Warum nimmst du denn nicht Width und Height statt ClientWidth und ClientHeight?
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Relative Positionierung der Maus

  Alt 3. Dez 2005, 19:26
Hallo Robert,
das liegt daran, dass das ganze ein OpenGL Projekt ist, wo ich den Mauszeiger zentriert halte und die Auslenkung des Mauszeigers von der Mitte des Viewports im MouseMove event ermittle, welche ich dann in meinen Kamerakoordinaten berücksichtige und den Mauszeiger wieder auf die Mitte des Viewports setze. Und wenn ich da dann jetzt einfach nur height und width nehmen würde, dann wäre die vertikale Blickrichtung nicht mittig im Viewport, da ich ja oben einen höheren Rahmen habe als unten.
Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Relative Positionierung der Maus

  Alt 4. Dez 2005, 07:12
Es sind jetzt aber alle noetigen Elemente da. Mit ClientRect und Width und Height kann man bestimmen wie das
ClientRect relativ zum Fenster steht. ClientToScreen der Form kann dann Positionen relativ zum Fenster der Formm umrechnen.
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Relative Positionierung der Maus

  Alt 4. Dez 2005, 09:43
Hallo Robert,
hast du meinen Beitrag direkt vor deiner Frage gelesen?
Mit clienttoscreen und mit clientwidth und clientheight klappt das ganze doch jetzt einwandfrei.
Da muss ich garnichts mehr großartig berechnen.
Aber danke für deine Bemühung.
Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  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 07:36 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