Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TMainMenu/TMenuItem problem mit Vcl.Themes

  Alt 15. Mai 2021, 14:43
Delphi-Quellcode:
procedure kzTheme.AddNativeStyle(const AMenuItem: TMenuItem);
  procedure AddMenuEntry(const ACaption: string; const AValue: Integer);
  var
    Item: TMenuItem;
  begin
    Item := TMenuItem.Create(FMenuItem);
    Item.Caption := ACaption;
    Item.OnClick := NativeStyleClick;
    Item.AutoCheck := True;
    Item.GroupIndex := 1;
    if TStyleManager.ActiveStyle.Name = ACaption then
      Item.Checked := True;
    if ((AValue) mod 10) = 0 then
      Item.Break := mbBarBreak;
    FMenuItem.Add(Item);
  end;
var
  Arr: TArray<string>;
  SystemStyle: string;
  FoundStyle: String;
  i: Integer;
begin
  FMenuItem := AMenuItem;
  FMenuItem.Clear;
  FMenuItem.AutoLineReduction := maAutomatic;

  arr := TStyleManager.StyleNames;
  TArray.Sort<string>(arr);
  SystemStyle := TStyleManager.SystemStyle.Name;
  AddMenuEntry(SystemStyle, 0);

  i := 1;
  for FoundStyle in arr do
  begin
    if FoundStyle <> SystemStyle then
    begin
      AddMenuEntry(FoundStyle, i);
      Inc(i);
    end;
  end;
end;

procedure kzTheme.NativeStyleClick(Sender: TObject);
var
  StyleName: String;
begin
  StyleName := StripHotkey(TMenuItem(Sender).Caption);
  TStyleManager.SetStyle(StyleName);
end;
Danke für diese Hinweise, aber nun bleibt der Haken (checked) an, je mehr ich rumspiele um so mehr Haken sind gesetzt?!
StripHotkey kannte ich noch nicht, Danke für diese Perle!

(das hauptmenu besitzt nur die grundeinstellungen die delphi setzt wenn man es auf Form platziert, da habe ich weder fürs menu noch für den menupunkt irgendwas verändert, abgesehen vom Namen.)


Also ist es ein Bug das der das Menu ab einem wechsel oben malt bzw automatisch schließt wenn kein platz über dem Formular frei ist?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat