📄 advpreviewmenueditor.pas
字号:
unit AdvPreviewMenuEditor;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, Buttons, AdvPreviewMenu, ComCtrls, ExtCtrls, Math,
ExtDlgs, ImgList, Menus;
type
TPreviewMenuEditor = class(TForm)
gb_OfficeHint: TGroupBox;
mem_Notes: TMemo;
edt_HintTitle: TEdit;
lbl_HintTitle: TLabel;
btn_HintPicture: TButton;
chk_HintShowHelp: TCheckBox;
lbl_HintNotes: TLabel;
chk_CanSelect: TCheckBox;
chk_Visible: TCheckBox;
chk_Enabled: TCheckBox;
chk_Separator: TCheckBox;
edt_Caption: TEdit;
lbl_Caption: TLabel;
cmb_ImageIndex: TComboBox;
lbl_ImageIndex: TLabel;
btn_Picture: TButton;
btn_DisabledPic: TButton;
edt_SubMenuCaption: TEdit;
lbl_SubMenuCaption: TLabel;
spn_SubMenuSpacing: TSpinEdit;
Label1: TLabel;
edt_ShortCutHint: TEdit;
lbl_ShortCutHint: TLabel;
edt_ShortCutSubHint: TEdit;
lbl_ShortCutSubHint: TLabel;
spn_Tag: TSpinEdit;
lbl_Tag: TLabel;
lbl_Title: TLabel;
lbl_SubImageIndex: TLabel;
lbl_SubShortCutHint: TLabel;
lbl_SubTag: TLabel;
gb_SubOfficeHint: TGroupBox;
lbl_SubHintTile: TLabel;
lbl_SubHintNotes: TLabel;
mem_SubHintNotes: TMemo;
edt_SubHintTitle: TEdit;
btn_SubHintPicture: TButton;
chk_SubShowHelp: TCheckBox;
chk_SubVisible: TCheckBox;
chk_SubEnabled: TCheckBox;
chk_SubSeparator: TCheckBox;
edt_Title: TEdit;
cmb_SubImageIndex: TComboBox;
btn_SubPicture: TButton;
btn_SubDisabledPic: TButton;
edt_SubShortCutHint: TEdit;
spn_SubTag: TSpinEdit;
mem_SubNotes: TMemo;
lbl_SubNotes: TLabel;
btn_SubItemAdd: TButton;
btn_SubItemRemove: TButton;
btn_Add: TButton;
btn_Remove: TButton;
pnl_Items: TPanel;
pg_Items: TPageControl;
ts_MenuItems: TTabSheet;
ts_SubMenuItems: TTabSheet;
btn_RemoveDefault: TButton;
btn_AddDefault: TButton;
OpenDialog: TOpenPictureDialog;
cmb_Action: TComboBox;
lbl_Action: TLabel;
cmb_SubAction: TComboBox;
lbl_SubAction: TLabel;
btn_Ok: TButton;
Button1: TButton;
cmb_SubMenu: TComboBox;
lbl_SubMenu: TLabel;
spn_SubMenuHeight: TSpinEdit;
lbl_SubMenuHeight: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure cmb_ImageIndexChange(Sender: TObject);
procedure spn_SubMenuSpacingChange(Sender: TObject);
procedure spn_TagChange(Sender: TObject);
procedure mem_NotesChange(Sender: TObject);
procedure chk_CanSelectClick(Sender: TObject);
procedure chk_VisibleClick(Sender: TObject);
procedure chk_EnabledClick(Sender: TObject);
procedure chk_SeparatorClick(Sender: TObject);
procedure chk_HintShowHelpClick(Sender: TObject);
procedure edt_CaptionKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edt_SubMenuCaptionKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edt_ShortCutHintKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edt_ShortCutSubHintKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edt_HintTitleKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure btn_AddClick(Sender: TObject);
procedure btn_RemoveClick(Sender: TObject);
procedure edt_TitleKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edt_SubShortCutHintKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure cmb_SubImageIndexChange(Sender: TObject);
procedure spn_SubTagChange(Sender: TObject);
procedure chk_SubVisibleClick(Sender: TObject);
procedure chk_SubEnabledClick(Sender: TObject);
procedure chk_SubSeparatorClick(Sender: TObject);
procedure mem_SubNotesChange(Sender: TObject);
procedure edt_SubHintTitleKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure mem_SubHintNotesChange(Sender: TObject);
procedure chk_SubShowHelpClick(Sender: TObject);
procedure btn_SubItemAddClick(Sender: TObject);
procedure btn_SubItemRemoveClick(Sender: TObject);
procedure btn_AddDefaultClick(Sender: TObject);
procedure btn_RemoveDefaultClick(Sender: TObject);
procedure btn_PictureClick(Sender: TObject);
procedure btn_DisabledPicClick(Sender: TObject);
procedure btn_SubPictureClick(Sender: TObject);
procedure btn_SubDisabledPicClick(Sender: TObject);
procedure cmb_SubImageIndexDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
procedure cmb_ImageIndexDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure cmb_ActionChange(Sender: TObject);
procedure cmb_SubActionChange(Sender: TObject);
procedure cmb_SubMenuChange(Sender: TObject);
procedure spn_SubMenuHeightChange(Sender: TObject);
private
{ Private declarations }
FPreviewMenuControl: TPreviewMenuControl;
FInternalItemChange: Boolean;
FInternalSubItemChange: Boolean;
procedure OnMenuItemClick(Sender: TObject; ItemIndex: Integer);
procedure OnSubMenuItemClick(Sender: TObject; ItemIndex, SubMenuItemIndex: Integer);
procedure OnPreviewMenuControlResize(Sender: TObject);
procedure UpdatePreview;
protected
procedure Loaded; override;
public
{ Public declarations }
function ShowModal: Integer; override;
property PreviewMenuControl: TPreviewMenuControl read FPreviewMenuControl;
end;
var
PreviewMenuEditor: TPreviewMenuEditor;
implementation
{$R *.dfm}
type
TProPreviewMenuPanel = class(TAdvPreviewMenuPanel);
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.FormCreate(Sender: TObject);
begin
FPreviewMenuControl := TPreviewMenuControl.Create(Self);
FPreviewMenuControl.Parent := Self;
FPreviewMenuControl.Left := 0;
FPreviewMenuControl.Top := 0;
FPreviewMenuControl.Visible := True;
FPreviewMenuControl.AdvPreviewMenu.OnMenuItemClick := OnMenuItemClick;
FPreviewMenuControl.AdvPreviewMenu.OnSubMenuItemClick := OnSubMenuItemClick;
FPreviewMenuControl.OnResize := OnPreviewMenuControlResize;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.OnPreviewMenuControlResize(Sender: TObject);
var
h: Integer;
begin
h := Max(FPreviewMenuControl.Height, pnl_Items.Height);
Height := h + 40;
Width := FPreviewMenuControl.Width + pnl_Items.Width + 15;
pnl_Items.Left := FPreviewMenuControl.Left + FPreviewMenuControl.Width + 4;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.OnMenuItemClick(Sender: TObject;
ItemIndex: Integer);
begin
FInternalItemChange := True;
pg_Items.ActivePage := ts_MenuItems;
if (ItemIndex < 0) then
begin
edt_Caption.Text := '';
edt_SubMenuCaption.Text := '';
edt_ShortCutHint.Text := '';
edt_ShortCutSubHint.Text := '';
if cmb_ImageIndex.Enabled and (cmb_ImageIndex.Items.Count > 0) then
cmb_ImageIndex.Text := InttoStr(-1);
spn_SubMenuSpacing.Value := 0;
spn_Tag.Value := 0;
spn_SubMenuHeight.Value := 0;
chk_CanSelect.Checked := False;
chk_Visible.Checked := False;
chk_Enabled.Checked := False;
chk_Separator.Checked := False;
edt_HintTitle.Text := '';
mem_Notes.Lines.Clear;
chk_HintShowHelp.Checked := False;
btn_AddDefault.Enabled := False;
btn_RemoveDefault.Enabled := False;
cmb_Action.Text := '';
ts_SubMenuItems.Enabled := False;
end
else
begin
with FPreviewMenuControl.AdvPreviewMenu.MenuItems[ItemIndex] do
begin
ts_SubMenuItems.Enabled := True;
edt_Caption.Text := Caption;
edt_SubMenuCaption.Text := SubMenuCaption;
edt_ShortCutHint.Text := ShortCutHint;
edt_ShortCutSubHint.Text := ShortCutSubItemsHint;
cmb_ImageIndex.Text := InttoStr(ImageIndex);
spn_SubMenuSpacing.Value := SubMenuItemSpacing;
spn_Tag.Value := Tag;
spn_SubMenuHeight.Value := SubMenuItemHeight;
chk_CanSelect.Checked := CanSelect;
chk_Visible.Checked := Visible;
chk_Enabled.Checked := Enabled;
chk_Separator.Checked := Separator;
if cmb_ImageIndex.Enabled and (ImageIndex < cmb_ImageIndex.Items.Count) then
begin
cmb_ImageIndex.ItemIndex := ImageIndex;
end;
edt_HintTitle.Text := FPreviewMenuControl.AdvPreviewMenu.MenuItems[ItemIndex].OfficeHint.title;
mem_Notes.Lines.Clear;
mem_Notes.Lines.AddStrings(FPreviewMenuControl.AdvPreviewMenu.MenuItems[ItemIndex].OfficeHint.Notes);
chk_HintShowHelp.Checked := FPreviewMenuControl.AdvPreviewMenu.MenuItems[ItemIndex].OfficeHint.ShowHelp;
btn_AddDefault.Enabled := (SubItems.Count = 0);
btn_RemoveDefault.Enabled := (SubItems.Count = 0);
if Assigned(FPreviewMenuControl.AdvPreviewMenu.MenuItems[ItemIndex].Action) then
cmb_Action.Text := FPreviewMenuControl.AdvPreviewMenu.MenuItems[ItemIndex].Action.Name
else
cmb_Action.Text := '';
end;
end;
FInternalItemChange := False;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.cmb_ImageIndexChange(Sender: TObject);
var
i: Integer;
begin
if FInternalItemChange then
Exit;
i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
if (i >= 0) then
begin
FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].ImageIndex := StrToInt(cmb_ImageIndex.Items[cmb_ImageIndex.ItemIndex]);
UpdatePreview;
TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).DrawItem(i);
end;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.spn_SubMenuSpacingChange(Sender: TObject);
var
i: Integer;
begin
if FInternalItemChange then
Exit;
i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
if (i >= 0) then
begin
FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].SubMenuItemSpacing := spn_SubMenuSpacing.Value;;
UpdatePreview;
TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).DrawItem(i);
end;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.spn_TagChange(Sender: TObject);
var
i: Integer;
begin
if FInternalItemChange then
Exit;
i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
if (i >= 0) then
FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].Tag := spn_Tag.Value;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.mem_NotesChange(Sender: TObject);
var
i: Integer;
begin
if FInternalItemChange then
Exit;
i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
if (i >= 0) then
begin
FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].OfficeHint.Notes.Clear;
FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].OfficeHint.Notes.AddStrings(mem_Notes.Lines);
end;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.chk_CanSelectClick(Sender: TObject);
var
i: Integer;
begin
if FInternalItemChange then
Exit;
i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
if (i >= 0) then
FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].CanSelect := chk_CanSelect.Checked;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.chk_VisibleClick(Sender: TObject);
var
i: Integer;
begin
if FInternalItemChange then
Exit;
i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
if (i >= 0) then
FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].Visible := chk_Visible.Checked;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.chk_EnabledClick(Sender: TObject);
var
i: Integer;
begin
if FInternalItemChange then
Exit;
i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
if (i >= 0) then
FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].Enabled := chk_Enabled.Checked;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.chk_SeparatorClick(Sender: TObject);
var
i: Integer;
begin
if FInternalItemChange then
Exit;
i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
if (i >= 0) then
FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].Separator := chk_Separator.Checked;
end;
//------------------------------------------------------------------------------
procedure TPreviewMenuEditor.chk_HintShowHelpClick(Sender: TObject);
var
i: Integer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -