Kod: Tümünü seç
procedure TForm1.MainMenuToRibbon(AMainMenu: TMainMenu; ARibbon: TdxRibbon; ABarManager: TdxBarManager);
var
Int1: Integer;
Tab1: TdxRibbonTab;
Grp1: TdxRibbonTabGroup;
Bar1: TdxBar;
LButton1: TdxBarLargeButton;
function ClearAmpersand(Str1: string): string;
begin
Str1 := StringReplace(Str1, '&&', '$#~', [rfReplaceAll]);
Str1 := StringReplace(Str1, '&', '', [rfReplaceAll]);
Str1 := StringReplace(Str1, '$#~', '&', [rfReplaceAll]);
Result := Str1;
end;
procedure ConvertMenuItem(AMenuItem: TMenuItem; ATab: TdxRibbonTab);
var
Int2: Integer;
begin
if AMenuItem.IsLine then Exit;
if AMenuItem.Count = 0 then Exit;
if not AMenuItem.Enabled then Exit;
if not AMenuItem.Visible then Exit;
Bar1 := ABarManager.Bars.Add;
Bar1.Caption := ClearAmpersand(AMenuItem.Caption);
Bar1.DockingStyle := dsTop;
Bar1.IsMainMenu := True;
Bar1.Visible := True;
for Int2 := 0 to AMenuItem.Count - 1 do
begin
if AMenuItem.Items[Int2].IsLine then Continue;
if AMenuItem.Items[Int2].Count > 0 then Continue;
LButton1 := ABarManager.AddItem(TdxBarLargeButton) as TdxBarLargeButton;
LButton1.Category := 0;
LButton1.Action := AMenuItem.Items[Int2].Action;
Bar1.ItemLinks.Add(LButton1);
end;
Grp1 := Tab1.Groups.Add;
Grp1.Caption := ClearAmpersand(AMenuItem.Caption);
Grp1.ToolBar := Bar1;
// Submenus
for Int2 := 0 to AMenuItem.Count - 1 do ConvertMenuItem(AMenuItem.Items[Int2], ATab);
end;
begin
ARibbon.Tabs.Clear;
ABarManager.Bars.Clear;
for Int1 := 0 to AMainMenu.Items.Count - 1 do
begin
if (not AMainMenu.Items[Int1].Visible) or (not AMainMenu.Items[Int1].Enabled) then Continue;
Tab1 := ARibbon.Tabs.Add;
Tab1.Caption := ClearAmpersand(AMainMenu.Items[Int1].Caption);
ConvertMenuItem(AMainMenu.Items[Int1], Tab1);
end;
Menu := nil;
end;