![]() |
TMainmenue: Hint wird nicht angezeigt.
@Alle
In das Projekt Delphi Cleaner habe ich ein TMainmenue eingefügt. Die User wollen ein Hint dazu sehen. Ich habe die Hints enabled und den Text zugewiesen. Porblem: Jedoch erscheinen die Hints des TMenues nicht. (Source mit D7 und TD2006 compiliert). Ist eine Eigenschaft zu setzten die nicht im Eigenschaftenfenster zu sehen ist? Oder bin ich einem Bug auf der Spur? Geht es bei jemandem? Beste Grüße an die DP! Go2EITS |
Re: TMainmenue: Hint wird nicht angezeigt.
Imho kannst du in einem TMainMenu keine Hints anzeigen. Du könntest aber eine StatusBar in dein Programm integrieren und diese mit dem MainMenu verknüpfen, dann wird der Hint-Text dort angezeigt.
|
Re: TMainmenue: Hint wird nicht angezeigt.
@Balu der Bär
Danke für Deine schnelle Antwort. Eine gute Idee! (In den Eigenschaften ist ein Hinteintrag schon möglich, die Eigenschaft Showhint fehlt dagegen.) Ich sehe mir die Eigenschaften an: Ein "MouseoverMenueeintrag" sehe ich leider nicht. Die Eigenschaften sind recht dürftig. Mit "Onclick" könnte ich die Daten in einem Panel anzeigen, aber da ist dann die Aktion leider schon ausgeführt. |
Re: TMainmenue: Hint wird nicht angezeigt.
Zitat:
|
Re: TMainmenue: Hint wird nicht angezeigt.
Und nu? Das Problem besteht weiterhin.
|
Re: TMainmenue: Hint wird nicht angezeigt.
Sieh dir mal das Ereignis "Application.OnHint" an. Entweder kannst du es im Sourcecode zuweisen oder du musst ein AppEvents-Objekt benutzen.
|
Re: TMainmenue: Hint wird nicht angezeigt.
@Flocke
danke für den Hinweis: In der Delphi Hilfe bin ich dank Deines Hinweises fündig geworden: Application.OnHint Ich glaube, dass ist es. Das muss ich mir genau ansehen, wie ich das in meinem Projekt umsetzte. Vielen Dank! :thumb: Go2EITS |
Re: TMainmenue: Hint wird nicht angezeigt.
Normal etwa so:
Delphi-Quellcode:
// Oben im Hauptformular
type TMainForm = class(TForm) // ... public procedure DisplayHint(Sender: TObject); end; // Implementierung procedure TMainForm.DisplayHint(Sender: TObject); begin if Application.Hint <> '' then begin StatusBar.SimplePanel := True; StatusBar.SimpleText := Application.Hint; end else StatusBar.SimplePanel := False; end; // Zuweisung procedure TMainForm.FormCreate(Sender: TObject); begin // ... Application.OnHint := DisplayHint; // ... end; |
Re: TMainmenue: Hint wird nicht angezeigt.
@Flocke
Danke Flocke! Wirklich ein vorbildiches Beispiel, mit Declaration, Implementation und Aufruf. Das bekomme ich sogar mal in meinen Code rein. :thumb: Kleine Frage: Wieso "StatusBar.SimplePanel := True;" und dann False? Die Statusbar wird doch immer angezeigt, oder? :gruebel: |
Re: TMainmenue: Hint wird nicht angezeigt.
Weil das nur funktioniert, wenn die Eigenschaft SimplePanel der Statusbar auf True steht.
|
Re: TMainmenue: Hint wird nicht angezeigt.
@Luckie: Danke! CU!
|
Re: TMainmenue: Hint wird nicht angezeigt.
Alter Thread, aber das Problem war nicht gelöst.
Die noch nicht ganz vollständige Lösung zeigt nun die Hints von TMainMenue in der Statuszeile an: (Es fehlte ein Applikation.ShowHint:=True im Code.)
Delphi-Quellcode:
Weitere Eigenschaften und Methoden bei Hints finden sich in der Hilfe unter Application...
// Oben im Hauptformular
type TMainForm = class(TForm) // ... public procedure DisplayHint(Sender: TObject); end; // Implementierung procedure TMainForm.DisplayHint(Sender: TObject); begin if Application.Hint <> '' then begin StatusBar.SimplePanel := True; StatusBar.SimpleText := Application.Hint; end else StatusBar.SimplePanel := False; end; // Zuweisung procedure TMainForm.FormCreate(Sender: TObject); begin // ... // Ergänzung: Applikation.ShowHint:=True; Application.OnHint := DisplayHint; // ... end; Weiterhin besteht das Problem: Die obenstehende Lösung zeigt jedoch erst die Hints in der Statuszeile an, nachdem auf einen Eintrag (TMenueItem) im TMainmenue geklickt habe. Erst dann zeigen sich auch die anderen Hints in der Statuszeile. Auch mein erster Eintrag im TMainMenue mit z. B. &Backup wird im Editor mir Unterstrich beim B korrekt angezeigt, jedoch bei der Programmausführung nicht. Lästig! Eine MouseOver-Eigenschaft könnte zumindestens die Hint-Problematik lösen. Diese Eigenschaft gibt es allerdings unter TMainmenue nicht. Beste Grüße an die DP! Go2EITS |
Re: TMainmenue: Hint wird nicht angezeigt.
Hallo Go2EITS,
das erste Problem kann ich nur nachvollziehen, wenn es sich um Top-Level-Einträge im Menü handelt. In diesem Fall "schwebst" du mit der Maus über dem angezeigten Menüeintrag und es wird kein Hint angezeigt. Das ist meiner Meinung nach immer so, weil das Menü noch nicht aktiviert ist, und lässt sich auf einfache Weise nicht ändern. Du könntest höchstens einen Ersatz nehmen wie z.B. eine Toolbar (oder eine TBX-Toolbar) im Menümodus. Zur Toolbar ein schnellen Tipp: 1. Packe einfach ein TToolbar auf deine Form 2. Setze die Eigenschaft "Menu" der Toolbar auf dein Hauptmenü 3. Lösche die Eigenschaft "Menu" der Form Aber Vorsicht: die Einträge des Menüs werden nur kopiert, wenn du später etwas daran änderst (Enabled, Visible), dann hat das keine Auswirkungen auf die Toolbar-Buttons (außer du nimmst Actions). Dein zweites Problem tritt bei neueren Windows-Versionen auf: hier werden die Tastenkürzel (&) erst angezeigt, nachdem man die ALT-Taste gedrückt hat. Auch das ist so gewollt (ein Feature und kein Bug), allerdings würde der Trick mit der Toolbar auch das lösen. |
Re: TMainmenue: Hint wird nicht angezeigt.
Hallo Flocke!
besten Dank für Deine Antwort. Das mit dem Menueeintrag habe ich auch so erkannt. Nachdem man auf ein Eintrag gedrückt hat, erscheinen bei schwebender Maus über den Menueeinträgen die Hints in der Statusbar. Die ist natürlich ein nicht hinzunehmender Umstand, wenn man Hints anzeigen möchte. Ich werde die TToolbar und die Actions mal ausprobieren. Das zweite Problem hat mich einige Zeit gekostet. Danke für den Hinweis und die wichtigen Informationen. :thumb: Beste Grüße Go2EITS |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 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