⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 advpreviewmenueditor.pas

📁 TMS Component Pack V5.0包含了超过 280 个为 Delphi 以及 C++Builder 设计的 TMS 生产控件
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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 + -