AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters
Thema durchsuchen
Ansicht
Themen-Optionen

Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters

Ein Thema von Sherlock · begonnen am 10. Sep 2010 · letzter Beitrag vom 10. Sep 2010
Antwort Antwort
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#1

Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters

  Alt 10. Sep 2010, 09:28
Delphi-Version: 2007
Hi,
ich habe mir ein kleine Programm zusammengestrickt, daß mir erlaubt Farben auszuwählen. Ganz so wie mit der Pipette in einem Grafikprogramm. Das funktioniert auch ausserhalb des eigenen Fensters. Allerdings nutze ich zwecks Genauigkeit der Auswahl Screen.Cursor := crCross; . Das bleibt verständlicherweise nur im eigenen Fenster gültig. Sobald ich das Fenster verlasse, wird der Mauszeiger wieder zum crDefault .

Meine Suche brachte mich zu Delphi-Referenz durchsuchencontrols.SetCaptureControl. Das scheint aber keine Auswirkungen zu haben. Weiss einer von Euch, wie man den Mauspfeil auch über die Grenzen des eigenen Fensters ändern kann?

Grüßle,
Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters

  Alt 10. Sep 2010, 09:33
Du könntest ein transparentes Fenster über den Desktop legen (es darf nur nicht durchklickbar sein), dann bekommst du auch noch die OnClick mit, wen du z.B. das gewünschte Pixel anklicken würdest.

Wenn du z.B. die Auswahl anders löst, quasi über Drag&Drop, dann sollte sich der Curseor auch nicht ändern.
> in das Farbauswahlfeld klicken, dabei den Cursor setzen
> dann mit "gedrückter" Maustaste die gewünschte Farbe, bzw. das Pixel suchen und die Maustaste loslassen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters

  Alt 10. Sep 2010, 09:43
Transparentes, nicht durchklickbares Fenster...hab ich irgendwo mal gesehen. Das hört sich spannend an, dann kann ich ja sogar auch das MouseClick-Event nutzen. Danke!

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#4

AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters

  Alt 10. Sep 2010, 09:43
Ich werf hier mal kurz SetSystemCursor in den Raum

Das hat halt den Nachteil, dass, wenn deine Anwendung z.B. abraucht, der Cursor bestehen bleibt...
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters

  Alt 10. Sep 2010, 11:13
Naja, gerade deswegen würde ich auf SetSystemCursor verzichten wollen.

Ich habe es fast hinbekommen. Ein zweites (weisses) Fenster erzeuge ich, dessen AlphaBlendValue := 5 ist. Es hat fsStayOnTop und im OnClick dieses Forms wird es wieder versteckt und der Cursor in seinen Urzustand versetzt. Das klappt fast. Nur "fast" weil ich erst dieses Fenster durch Click aktivieren muss. Ich versuch durch SetFocus es zu aktivieren, aber das reicht scheinbar nicht.
Schnpisel aus dem auslösenden ButtonClick dazu:
Delphi-Quellcode:
  Screen.Cursor := crCross;
  SetCaptureControl(Self);
  Application.ProcessMessages;
  Form2.Left :=0;
  Form2.Top := 0;
  Form2.Width := Screen.Width;
  Form2.Height := Screen.Height;
  Form2.Show;
  Form2.SetFocus;
  Timer1.Enabled := True;
Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters

  Alt 10. Sep 2010, 11:27
Vielleicht in einer anderen Reihenfolge?
Delphi-Quellcode:
  Form2.SetBounds(0, 0, Screen.Width, Screen.Height);
  Form2.Show;
  Form2.SetFocus;
  Application.ProcessMessages;
  Screen.Cursor := crCross;
  SetCaptureControl(Self);
  Timer1.Enabled := True;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters

  Alt 10. Sep 2010, 11:41
Leider nein.

Ich schau jetzt mal wie ein "normales" Form sich verhalten würde...

Sherlock
PS: Mit den Fensterboundaries bin ich noch am experiementieren, weil ich Späße wie Googletoolbar und mehrere Monitore habe, deswegen sit es etwas unaufgeräumt an der Stelle.
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters

  Alt 10. Sep 2010, 12:54
OK, nach der Mittagspause fiel es mir dann wie Schuppen von den Haaren: SetCaptureControl, das lässt die Maus nur die Events des zugewiesenen Controls bekommen...Da muss halt erst ein Click her, daß das wieder gerade biegt.

In diesem Sinne, das korrekte Control zugewiesen und nun gehts:
Delphi-Quellcode:
  Form2.SetBounds(0, 0, Screen.DesktopWidth, Screen.DesktopHeight);
  Form2.Show;
  Screen.Cursor := crCross;
  SetCaptureControl(Form2);
Danke!

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  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 18:11 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