![]() |
Delphi-Version: XE8
Mouse-Symbol abfragen
Hi zusammen
Dies ist ein ![]() Wiedereinmal versuch ich mich in die CHM-Help einzuarbeiten - und diesmal ist das, dank guter Tutorials, sehr viel vielversprechender. Hier mal einige Seiten, die ich besucht habe: ![]() ![]() ![]() Und natürlich: ![]() ![]() Soweit ist das bisherige Resultat gar nicht so schlecht, wenn dies auch erst die Help in eines meiner Testprogramme 'einbindet'. Will heissen: bis es dann wirklich soweit ist, gibts doch noch das eine oder andere zu tun. Vielleicht etwas voreilig bin ich im Moment beim 'Whats this' hängengeblieben. Die entsprechende Zeile hab ich zwar in ein Buttonclick-Ereignis eingebaut, und der Mauszeigger zeigt mir auch das Fragezeichen - nur, wie Frage ich den jetzt ab? TMouse enthält keine Eigenschaft, die sowas erlaubt. Übrigens - die Codes unter Link 2 und Link 5 tun das gleiche. Gruss Delbor PS: Übrigens - meine bisherige Umsetzung mit einer Boolean: Delphi-Code procedure TSQLiteTestMain.TLBWhatsThisClick(Sender: TObject); begin DefWindowProc(handle, WM_SYSCOMMAND, SC_CONTEXTHELP, 0); FToolHelp := True; end; Hier sehe ich das Problem, dass ich überall da, wo es eigentlich nicht sinnvoll wäre, ein OnClick-Ereignis implementieren muss, nur um die Variable FToolhelp zrücksetzen zu können und dem User zu sagen, dass es hierzu keine spezielle Hilfe gibt. Das andere wäre, überhaupt nicht zu reagieren - bei einem Click wandelt sich das Mousesymbol wieder, die Variable wird aber nicht zurückgesetzt. roase.ch/ Delbor alias Zoran |
AW: Mouse-Symbol abfragen
Was genau ist denn das Problem? Und wofür ist
Delphi-Quellcode:
gedacht?
FToolHelp
Habe das noch nicht gemacht aber wenn ich ![]()
Delphi-Quellcode:
dein Form in einen speziellen Modus. Der nächste Klick wird dadurch keine Klick-Messages sondern ein WM_HELP auslösen, was wiederum das Hilfesystem des Programms triggered. Nach dem Klick ist der Cursor wieder normal.
DefWindowProc(handle, WM_SYSCOMMAND, SC_CONTEXTHELP, 0);
Wenn die Variabel sein muss, dann kannst du sie auch in deiner Hilfebehandlungsroutine wieder zurücksetzen. Dann hast du nur eine zentrale Stelle. Und an sich kannst du den Mauszeiger deines Programms mit
Delphi-Quellcode:
setzen und abfragen...
Screen.Cursor
|
AW: Mouse-Symbol abfragen
Hi bebe
Zitat:
Ein Problem zeigte sich, da ich keine Ahnung hatte, wie's denn nach einem Help-Button.OnClick bei folgenden Prozeduren weitergeht:
Delphi-Quellcode:
und
procedure TForm1.WhatsThisToolButtonClick(Sender: TObject);
begin DefWindowProc(handle, WM_SYSCOMMAND, SC_CONTEXTHELP, 0); end;
Delphi-Quellcode:
Beide setzen SC_CONTEXTHELP und machen somit, wenigstens rein optisch, dasselbe. Hier bringt mir deine Antwort sehr viel:
procedure TForm1.Button1Click(Sender: TObject);
begin Perform( WM_SYSCOMMAND, SC_CONTEXTHELP, 0 ); end; Zitat:
Da aber gar keine OnKlick-Prozeduren für die angeklickten Elemente definiert waren, bestand scheinbar auch keine Möglichkeit, FToolhelp zurückzusetzen. Nach deiner Antwort ist klar: auch wenn dies der Fall gewesen wäre, hätte es mir herzlich wenig genützt. So, wie ich das jetzt sehe, ist dabei FToolhelp gar nicht nötig. Gruss Delbor PS: Zitat:
Delphi-Quellcode:
procedure TSQLiteTestMain.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if FToolhelp then begin FToolhelp := False; Screen.Cursor := crdefault; Showmessage('Das ist die Mainform'); end; end; |
AW: Mouse-Symbol abfragen
Warum ein Tastaturevent? Ich dachte, es geht um die Maus?
|
AW: Mouse-Symbol abfragen
Hi Redeemer
Das war ein versehen meinerseits - darauf falle ich schonmal öfters rein. Andrerseits wärs ja doch schön, wenns sowas wie TForm.FormMouseDown gäbe(nicht: Form.OnMousedown). Gruss Delbor |
AW: Mouse-Symbol abfragen
TForm.OnMouseDown (Standardname der Ereignisbehandlungsmethode ist eben FormMouseDown) reagiert auf alle Mausevents auf die TForm selbst. Um das zu nutzen, packe alle Komponenten auf ein Panel. Wenn Hilfemodus gestartet, setze Panel.Enabled := False. Dann kannst du mit Form.OnMouseDown, Mouse.CursorPos, Form.Components und TControl.ClientToScreen/ScreenToClient und von mir aus noch Math.InRange herausfinden, worauf geklickt wurde.
|
AW: Mouse-Symbol abfragen
Hi Redeemer
, Zitat:
Gruss Delbor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 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