![]() |
Delphi-Version: 2007
Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters
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
Delphi-Quellcode:
. Das bleibt verständlicherweise nur im eigenen Fenster gültig. Sobald ich das Fenster verlasse, wird der Mauszeiger wieder zum
Screen.Cursor := crCross;
Delphi-Quellcode:
.
crDefault
Meine Suche brachte mich zu ![]() Grüßle, Sherlock |
AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters
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 |
AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters
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 |
AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters
Ich werf hier mal kurz
![]() Das hat halt den Nachteil, dass, wenn deine Anwendung z.B. abraucht, der Cursor bestehen bleibt... |
AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters
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:
Sherlock
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; |
AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters
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; |
AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters
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. ;) |
AW: Mauszeiger Fadenkreuz auch ausserhalb des eigenen Fensters
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:
Danke!
Form2.SetBounds(0, 0, Screen.DesktopWidth, Screen.DesktopHeight);
Form2.Show; Screen.Cursor := crCross; SetCaptureControl(Form2); Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz