Hallo Leute!
Ich habe immer wieder versucht, in Programmen den ?-Button in der Titelleiste zu benutzen, aber mit wenig zufriedenstellendem Ergebnis, vor allem, weil das Programm nicht "weiss", das der Cursor jetzt crHelp ist. Nun habe ich das hier gefunden; das ist es, was ich brauche:
www.delphi-forum.de/...button+++titelleiste
Ich habe das nun so gemacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| procedure TForm1.WMSYSCOMMAND(var Msg: TMessage); begin if Msg.Msg = WM_SYSCOMMAND then begin case Msg.wParam of SC_CONTEXTHELP: begin Screen.Cursor := crHelp; end; else Inherited; end; end; end;
procedure TForm1.FormClick(Sender: TObject); begin if Screen.Cursor = crHelp then begin Screen.Cursor := crDefault; end; end; |
Klappt auch, aber wie bekomme ich den ?-Button wieder in den nicht-gedrückten Zustand zurück? Ansonsten ist der Code genau das, was ich brauche!
//Edit: Der Trick ist, die Titelleiste (oder den Rahmen) neu zeichnen zu lassen. Das geht zB., wenn man ein weiteres Formular öffnet. Soweit ok, denn dieses Formular könnte ja den Hilfetext enthalten. Aber wenn ich nun möchte, dass man beim Drücken der Esc-Taste abbricht (Screen.Cursor := crDefault), wie bringe ich es hin, dass der ?-Button im nicht-gedrückten Zustand dargestellt wird?
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!