Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#11

AW: Definierte Zugriffstasten werden nicht unterstrichen angezeigt

  Alt 12. Feb 2013, 15:05
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 , 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

Geändert von Dalai (12. Feb 2013 um 15:21 Uhr) Grund: Methode FormClose ergänzt
  Mit Zitat antworten Zitat