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?