Cursor-/XBP-Position
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Cursor-/XBP-Position
Hallo,
gibt es eine Möglichkeit, die Position des Cursors oder die des aktiven XB-Parts festzustellen?
Jan
gibt es eine Möglichkeit, die Position des Cursors oder die des aktiven XB-Parts festzustellen?
Jan
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jan,
ich weiß jetzt nicht, worauf Du genau hinaus willst. Aber wenn Du wissen möchtest, welches Eingabeelement als letztes (bzw. aktuell) den Eingabefokus hat, so solltest Du Dir mal den Callback :setInputFocus anschauen - mit dessen Hilfe und einer Klassenvariable kannst Du Dir immer "merken", welches Element gerade aktiv ist, bzw. war (wenn Du z.B. nach Schließen eines Hinweisfensters wieder das zuletzt aktive Control aktivieren willst).
Ansonsten hilft Dir vielleicht :hasInputFocus() weiter - einfach durch die Getlist laufen und bei jedem Element prüfen.
Viele Grüße,
Martin
ich weiß jetzt nicht, worauf Du genau hinaus willst. Aber wenn Du wissen möchtest, welches Eingabeelement als letztes (bzw. aktuell) den Eingabefokus hat, so solltest Du Dir mal den Callback :setInputFocus anschauen - mit dessen Hilfe und einer Klassenvariable kannst Du Dir immer "merken", welches Element gerade aktiv ist, bzw. war (wenn Du z.B. nach Schließen eines Hinweisfensters wieder das zuletzt aktive Control aktivieren willst).
Ansonsten hilft Dir vielleicht :hasInputFocus() weiter - einfach durch die Getlist laufen und bei jedem Element prüfen.
Viele Grüße,
Martin
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Hallo Martin,
worauf ich hinaus will ist im Prinzip ganz einfach: Ich möchte wissen, wo der Mauscursor gerade steht. Zur Not würde es mir reichen wenn ich wüsste, wo der Mauszeiger gerade steht. Lieber wäre mir aber, wenn ich die Koordinaten des XB-Parts haben könnte, über dem die Maus gerade steht.
Den Cursor bekomme ich im Prinzip ganz einfach raus, es ist der erste Parameter von AppEvent(). Das ganze hat nur einen Haken: Wenn ich das aufrufe lande ich in der Endlosschleife der AppEvent-Abfrage der aufrufenden Funktion. Und beende damit einfach so die Funktion, in der ich die Mausposition herausfinden möchte. Komme also garnicht erst weiter bis zur Auswertung.
Jan
worauf ich hinaus will ist im Prinzip ganz einfach: Ich möchte wissen, wo der Mauscursor gerade steht. Zur Not würde es mir reichen wenn ich wüsste, wo der Mauszeiger gerade steht. Lieber wäre mir aber, wenn ich die Koordinaten des XB-Parts haben könnte, über dem die Maus gerade steht.
Den Cursor bekomme ich im Prinzip ganz einfach raus, es ist der erste Parameter von AppEvent(). Das ganze hat nur einen Haken: Wenn ich das aufrufe lande ich in der Endlosschleife der AppEvent-Abfrage der aufrufenden Funktion. Und beende damit einfach so die Funktion, in der ich die Mausposition herausfinden möchte. Komme also garnicht erst weiter bis zur Auswertung.
Jan
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Hallo, Martin.
Das sollte er. oXbp ist ein beliebiges Xbase-Part:vielleicht hilft Dir dann ja der :motion()-callback weiter?
Code: Alles auswählen
oXbp:motion := {|a,b,o|MyFunction(a,o)}
...
FUNCTION MyFunction(a,o)
* a enthält das Positionsarray (bezogen auf o), o eine Referenz auf das ;
Objekt
RETURN NIL
Herzlich,
Tom
Tom
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Hallo Martin
Auf jeden Fall wäre ich "nur" mit Deiner Angabe zu :motion nicht weitergekommen. Der Hinweis von Tom, wie ich das Ding einsetzen sollte, ist da schon sehr hilfreich.
Jan
Mal sehen. Sieht jedenfalls sehr gut für mich aus. Versuch ich am Wochenende und gebe dann Bescheid.Martin hat geschrieben:aber ob er damit sein Problem vernünftig gelöst bekommt
Auf jeden Fall wäre ich "nur" mit Deiner Angabe zu :motion nicht weitergekommen. Der Hinweis von Tom, wie ich das Ding einsetzen sollte, ist da schon sehr hilfreich.
Jan
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jan,
Viele Grüße,
Martin
OK - ich gelobe Besserung! Ich bin davon ausgegangen, dass Du Dir die Beschreibung zu dem Callback in der Xbase++-Dokumentation anschaust - ich wollte Dir ja nur einen Denkanstoß gebenJan hat geschrieben:Auf jeden Fall wäre ich "nur" mit Deiner Angabe zu :motion nicht weitergekommen. Der Hinweis von Tom, wie ich das Ding einsetzen sollte, ist da schon sehr hilfreich.
Viele Grüße,
Martin
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Moin Martin,
entschuldige bitte. Ich meinte das nicht böse!
Das Problem liegt darin, daß ich noch immer Probleme mit OOP habe. Mit einigen Dingen komme ich inzwischen ganz gut klar, aber viel zu oft fehlt mir einfach noch der Durchblick. Da bin ich einfach noch zu Clipper-behaftet.
Vielleicht hätte ich das nach eingehendem Studium der Onlinehilfe wirklich hinbekommen, wie Du vorausgesetzt hast. Allerdings hatte ich bis jetzt noch keine Zeit, mir die anzuschauen, und daher war der Hinweis von Tom für ich einfach Gold wert (oder zumindest sehr sehr viel Zeit).
Also nicht Dein Fehler, wenn Du das entsprechende Wissen bei mir vorausgesetzt hast.
Jan
entschuldige bitte. Ich meinte das nicht böse!
Das Problem liegt darin, daß ich noch immer Probleme mit OOP habe. Mit einigen Dingen komme ich inzwischen ganz gut klar, aber viel zu oft fehlt mir einfach noch der Durchblick. Da bin ich einfach noch zu Clipper-behaftet.
Vielleicht hätte ich das nach eingehendem Studium der Onlinehilfe wirklich hinbekommen, wie Du vorausgesetzt hast. Allerdings hatte ich bis jetzt noch keine Zeit, mir die anzuschauen, und daher war der Hinweis von Tom für ich einfach Gold wert (oder zumindest sehr sehr viel Zeit).
Also nicht Dein Fehler, wenn Du das entsprechende Wissen bei mir vorausgesetzt hast.
Jan
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Tom,
irgendwie stehe ich jetzt auf dem Schlauch.
Woher bekomme ich denn jetzt die Position? Ich brauche die (wenn irgendwie möglich) in der Funktion, wo ich aufrufe. Aber irgendwie bekomme ich das nicht hin.
Ein total hilfloser und gefrusteter Jan
irgendwie stehe ich jetzt auf dem Schlauch.
Woher bekomme ich denn jetzt die Position? Ich brauche die (wenn irgendwie möglich) in der Funktion, wo ich
Code: Alles auswählen
oXbp:motion := {|a,b,o|MyFunction(a,o)}
Ein total hilfloser und gefrusteter Jan
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jan,
gerade eben hat Günter Beyes auf eine entsprechende Anfrage in der Newsgroup von Alaska public.xbase++.gui entsprechend gepostet:
Martin
gerade eben hat Günter Beyes auf eine entsprechende Anfrage in der Newsgroup von Alaska public.xbase++.gui entsprechend gepostet:
Viele Grüße,Günter Beyes hat geschrieben:Dies sollte das Win32 API-Pendant zu dem .NETs System.Windows.Forms.Control.MousePosition sein.
Beachte jedoch, dass die Funktion die Position in Pixeln von der oberen linken Ecke liefert.
Günter
----
Code: Alles auswählen
FUNCTION GetCursorPos() STATIC GetCursorPos LOCAL sPoint := replicate(chr(0),8) IF GetCursorPos = NIL GetCursorPos := DllPrepareCall("user32.dll", DLL_STDCALL,; "GetCursorPos" ) ENDIF DllExecuteCall( GetCursorPos, @sPoint ) RETURN { Bin2L( substr(sPoint, 1, 4) ),; // x coordinate Bin2L( substr(sPoint, 5, 4) ) ; // y coordinate }
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Hubert,
einfach ausprobieren.
Viele Grüße,
Martin
einfach ausprobieren.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.