Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TMainmenue: Hint wird nicht angezeigt. (https://www.delphipraxis.net/79369-tmainmenue-hint-wird-nicht-angezeigt.html)

Go2EITS 21. Okt 2006 08:44


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

Balu der Bär 21. Okt 2006 08:49

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.

Go2EITS 21. Okt 2006 09:08

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.

Balu der Bär 21. Okt 2006 09:10

Re: TMainmenue: Hint wird nicht angezeigt.
 
Zitat:

Zitat von Go2EITS
In den Eigenschaften ist ein Hinteintrag schon möglich, die Eigenschaft Showhint fehlt dagegen.

Richtig, diese Property Hint gilt aber AFAIR nicht für das MainMenu selbst, sondern z.B. dann wenn ich z.B. einen ToolButton mit dem MainMenu verknüpfe, trägt dieser das Hint welches man beim MainMenu eingestellt hat.

Go2EITS 21. Okt 2006 09:16

Re: TMainmenue: Hint wird nicht angezeigt.
 
Und nu? Das Problem besteht weiterhin.

Flocke 21. Okt 2006 10:05

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.

Go2EITS 21. Okt 2006 10:23

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

Flocke 21. Okt 2006 10:48

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;

Go2EITS 21. Okt 2006 11:56

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:

Luckie 21. Okt 2006 12:14

Re: TMainmenue: Hint wird nicht angezeigt.
 
Weil das nur funktioniert, wenn die Eigenschaft SimplePanel der Statusbar auf True steht.

Go2EITS 21. Okt 2006 12:40

Re: TMainmenue: Hint wird nicht angezeigt.
 
@Luckie: Danke! CU!

Go2EITS 25. Sep 2007 10:23

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:
// 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;
Weitere Eigenschaften und Methoden bei Hints finden sich in der Hilfe unter Application...

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

Flocke 29. Sep 2007 14:05

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.

Go2EITS 30. Sep 2007 06:44

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 11:43 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