Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Definierte Zugriffstasten werden nicht unterstrichen angezeigt (https://www.delphipraxis.net/173049-definierte-zugriffstasten-werden-nicht-unterstrichen-angezeigt.html)

Dalai 12. Feb 2013 15:05

AW: Definierte Zugriffstasten werden nicht unterstrichen angezeigt
 
Ich habe dieses Problem mit einem TPopupMenu ebenfalls gehabt und so gelöst:
Delphi-Quellcode:
type TMyMenuItem = class(TMenuItem)
  protected
     procedure AdvancedDrawItem(ACanvas: TCanvas; ARect: TRect;
      State: TOwnerDrawState; TopLevel: Boolean); override;
  end;

type
  TMainForm = class(TForm)
    procedure popupMenuMainPopup(Sender: TObject);
  end;

var
  ShowAccel : BOOL;


procedure TMyMenuItem.AdvancedDrawItem(ACanvas: TCanvas; ARect: TRect;
      State: TOwnerDrawState; TopLevel: Boolean);
begin
    if ShowAccel AND Assigned(Self.GetParentMenu.Images) then
        State:= State - [odNoAccel];
    inherited;
end;


procedure TMainForm.popupMenuMainPopup(Sender: TObject);
begin
    SystemParametersInfo(SPI_GETMENUUNDERLINES, 0, @ShowAccel, 0);
end;

procedure TMainForm.FormShow(Sender: TObject);
begin
    if Assigned(Self.PopupMenu) then
    begin
      for i:=0 to 8 do
          Self.PopupMenu.Items.Add(TMyMenuItem.Create(Self));
    end;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Self.PopupMenu.Items.Clear;
end;
Ob der Code in der Form funktioniert, weiß ich nicht, weil ich das jetzt aus dem Projekt aus dem verlinkten Thread zusammenkopiert habe. Das Grundprinzip ist aber recht einfach: bei jedem Popup wird der Status der Einstellung ermittelt und in einer globalen Variable gespeichert. Ja, ich weiß, is böse :stupid:, geht aber an der Stelle nicht anders, weil 2 Klassen auf diese Variable zugreifen können müssen, es sei denn, man manscht das alles zu einer Klasse zusammen, aber man kann's auch übertreiben. Beim Zeichnen eines MenuItems wird der entsprechende Status der Einstellung mit berücksichtigt, weil die VCL das nicht tut.

MfG Dalai

gandalf100 18. Feb 2013 13:27

AW: Definierte Zugriffstasten werden nicht unterstrichen angezeigt
 
Erst mal vielen Dank - ich werd mir das mal in Ruhe anschauen und versuchen das nachzubauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr.
Seite 2 von 2     12   

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