Delphi-PRAXiS
Seite 3 von 3     123   

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 [D2009] MainMenu Hotkey/Unterstriche immer Sichtbar (https://www.delphipraxis.net/197674-%5Bd2009%5D-mainmenu-hotkey-unterstriche-immer-sichtbar.html)

KodeZwerg 27. Aug 2018 23:27

AW: [D2009] MainMenu Hotkey/Unterstriche immer Sichtbar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Dalai (Beitrag 1411783)
Kein Ding, jeder steht mal auf dem Schlauch oder auf welchem Objekt der Flüssigkeitszuführung auch immer ;). Freut mich, wenn es tut, denn getestet habe ich den Code nicht :). Den Einbau der Programmoption in Abhängigkeit von der Systemeinstellung bekommst du ja sicherlich selber hin.

Grüße
Dalai

Es ist bereits über ein Boolean realisiert, default bei mir ist erstmal mit Striche. Ich muss noch ein wenig herum suchen wie ich die Farbe von selektierten Eintrag ändern kann, im OwnerDraw ist Hauptmenu selektionsfarbe vom Hintergrund dunkelblau, im nicht-OwnerDraw wird Windows Theme Farbe verwendet (Untermenu ist anscheinend immer Themed, bei mir so babyblau). Das stört mich noch nicht, wichtiger war mir der permanente Strich da ich je nach Auswahl in Filebox andere Hauptmenu Einträge einblende die halt eigene Hotkeys haben.

Falls es jemand auch so haben möchte, hier zur Vollständigkeit noch mal der Code von Dalai/SO in funktionstüchtig:
Delphi-Quellcode:
type
  TfrmMain = class(TForm)
    ....
    ....
    ....
  protected
    procedure WndProc(var Message: TMessage); override;
  end;

implementation

procedure TfrmMain.WndProc(var Message: TMessage);
const
  ODS_NOACCEL = $100; // <- neuere Delphis könnten das eventuell bereits in Windows.pas haben, meines nicht.
var
  pDIS: PDrawItemStruct;
begin
  if EineCheckBox.Checked then // <- das ist ein Boolean aus Konfiguration für On/Off
   begin
     if (Message.Msg = WM_DRAWITEM) then
      pDIS := PDrawItemStruct(Message.LParam);
      if (pDIS^.CtlType = ODT_MENU) then
       pDIS^.itemState := pDIS^.itemState and not ODS_NOACCEL;
   end;
  inherited;
end;
Anhang 49842 Hier eine Vorschau was euch erwartet.

Dalai 28. Aug 2018 00:14

AW: [D2009] MainMenu Hotkey/Unterstriche immer Sichtbar
 
Bis auf den direkten Vergleich des Boolean mit dem True sieht das soweit gut aus.

Dass die Owner-drawn Menus eine andere Farbe und auch Markierungsfarbe (und ggf. weitere abweichende Farben) haben, ist völlig normal. Wird eben auf eine andere Art gezeichnet.

Grüße
Dalai

KodeZwerg 28. Aug 2018 00:38

AW: [D2009] MainMenu Hotkey/Unterstriche immer Sichtbar
 
Zitat:

Zitat von Dalai (Beitrag 1411786)
Bis auf den direkten Vergleich des Boolean mit dem True sieht das soweit gut aus.

Ja stimmt, war doof so zu schreiben, bei mir ist es ne Checkbox, da kann nichts schiefgehen mit Auswertung, guter Einwand!

Gute Nacht Euch allen

Delphi.Narium 28. Aug 2018 14:14

AW: [D2009] MainMenu Hotkey/Unterstriche immer Sichtbar
 
Statt
Delphi-Quellcode:
 if EinBoolean <> False then
lieber
Delphi-Quellcode:
 if not EinBoolean then

KodeZwerg 28. Aug 2018 14:43

AW: [D2009] MainMenu Hotkey/Unterstriche immer Sichtbar
 
Habe es nun, um es eindeutig zu haben, mit Checkbox Text ersetzt, macht selbst was Ihr für angemessen haltet.
Bevor noch mehr geändert werden muss um es schön zu haben, kürze ich es so ab.

Für mich ist es so Okay, Danke für Vorschlag.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr.
Seite 3 von 3     123   

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-2025 by Thomas Breitkreuz