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

📄 advpreviewmenueditor.pas

📁 TMS Component Pack V5.0包含了超过 280 个为 Delphi 以及 C++Builder 设计的 TMS 生产控件
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  if FInternalSubItemChange then
    Exit;

  SubItems := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).GetSubMenuItems;
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedSubItem;
  if (i >= 0) then
    SubItems.Items[i].OfficeHint.ShowHelp := chk_SubShowHelp.Checked;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.btn_SubItemAddClick(Sender: TObject);
var
  i, j: Integer;
begin
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
  if (i >= 0) then
  begin
    with FPreviewMenuControl.AdvPreviewMenu.MenuItems.Items[i].SubItems.Add do
    begin
      Title := 'NewItem';
      j := Index;
    end;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).InitializeAndUpdate;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).ItemHot := i;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SetSelectedSubItem(j);
    FPreviewMenuControl.AdvPreviewMenuPanel.Invalidate;

    btn_AddDefault.Enabled := False;
    btn_RemoveDefault.Enabled := False;
  end;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.btn_SubItemRemoveClick(Sender: TObject);
var
  i, j: Integer;
begin
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
  j := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedSubItem;
  if (i >= 0) and (j >= 0) and (j < FPreviewMenuControl.AdvPreviewMenu.MenuItems.Items[i].SubItems.Count) then
  begin
    FPreviewMenuControl.AdvPreviewMenu.MenuItems.Items[i].SubItems.Delete(j);
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).InitializeAndUpdate;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).ItemHot := i;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SetSelectedSubItem(j-1);
    FPreviewMenuControl.AdvPreviewMenuPanel.Invalidate;

    btn_AddDefault.Enabled := (FPreviewMenuControl.AdvPreviewMenu.MenuItems.Items[i].SubItems.Count = 0);
    btn_RemoveDefault.Enabled := (FPreviewMenuControl.AdvPreviewMenu.MenuItems.Items[i].SubItems.Count = 0);
  end;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.UpdatePreview;
var
  i: Integer;
begin
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
  TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).InitializeAndUpdate;
  if (i >= 0) then
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).ItemHot := i;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.btn_AddDefaultClick(Sender: TObject);
var
  i, j: Integer;
begin
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
  if (i >= 0) then
  begin
    with FPreviewMenuControl.AdvPreviewMenu.SubMenuItems.Add do
    begin
      Title := 'NewItem';
      j := Index;
    end;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).InitializeAndUpdate;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).ItemHot := i;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SetSelectedSubItem(j);
    FPreviewMenuControl.AdvPreviewMenuPanel.Invalidate;
  end;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.btn_RemoveDefaultClick(Sender: TObject);
var
  i, j: Integer;
begin
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
  j := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedSubItem;
  if (i >= 0) and (j >= 0) and (j < FPreviewMenuControl.AdvPreviewMenu.SubMenuItems.Count) then
  begin
    FPreviewMenuControl.AdvPreviewMenu.SubMenuItems.Delete(j);
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).InitializeAndUpdate;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).ItemHot := i;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SetSelectedSubItem(j-1);
    FPreviewMenuControl.AdvPreviewMenuPanel.Invalidate;
  end;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.btn_PictureClick(Sender: TObject);
var
  i: Integer;
begin
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
  if (i >= 0) then
  begin
    if Opendialog.Execute then
    begin
      FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].Picture.LoadFromFile(Opendialog.FileName);
      UpdatePreview;
    end;
  end;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.btn_DisabledPicClick(Sender: TObject);
var
  i: Integer;
begin
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
  if (i >= 0) then
  begin
    if Opendialog.Execute then
    begin
      FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].DisabledPicture.LoadFromFile(Opendialog.FileName);
      UpdatePreview;
    end;
  end;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.btn_SubPictureClick(Sender: TObject);
var
  SubItems: TAdvPreviewSubMenuItems;
  i: Integer;
begin
  SubItems := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).GetSubMenuItems;
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedSubItem;
  if (i >= 0) and Assigned(SubItems) then
  begin
    if Opendialog.Execute then
    begin
      SubItems.Items[i].Picture.LoadFromFile(Opendialog.FileName);
      UpdatePreview;
      TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).DrawSubMenuItem(i);
    end;
  end;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.btn_SubDisabledPicClick(Sender: TObject);
var
  SubItems: TAdvPreviewSubMenuItems;
  i: Integer;
begin
  SubItems := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).GetSubMenuItems;
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedSubItem;
  if (i >= 0) and Assigned(SubItems) then
  begin
    if Opendialog.Execute then
    begin
      SubItems.Items[i].DisabledPicture.LoadFromFile(Opendialog.FileName);
      UpdatePreview;
      TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).DrawSubMenuItem(i);
    end;
  end;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.cmb_SubImageIndexDrawItem(
  Control: TWinControl; Index: Integer; Rect: TRect;
  State: TOwnerDrawState);
var
  ImgList: TCustomImageList;
  ACanvas: TCanvas;
  X, Y: Integer;
begin
  ACanvas := cmb_SubImageIndex.Canvas;
  ACanvas.FillRect (Rect);
  ImgList := FPreviewMenuControl.AdvPreviewMenu.SubMenuImages;
  X := Rect.Left + 2;

  if Assigned(ImgList) then
  begin
    if (cmb_SubImageIndex.Items[Index] <> '-1') then
      ImgList.Draw (ACanvas, X, Rect.Top + 2, StrToInt(cmb_SubImageIndex.Items[Index]));
    Inc (X, ImgList.Width);
  end;

  Y := Rect.Top + 1 + (cmb_SubImageIndex.ItemHeight - ACanvas.TextHeight('None')) div 2;
  if (cmb_SubImageIndex.Items[Index] = '-1') then
    ACanvas.TextOut (X + 3, Y, '(None)')
  else
    ACanvas.TextOut (X + 3, Y, cmb_SubImageIndex.Items[Index]);
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.Loaded;
begin
  inherited;

end;

//------------------------------------------------------------------------------

function TPreviewMenuEditor.ShowModal: Integer;
var
  i: Integer;
begin
  // Manu Images
  if Assigned(FPreviewMenuControl.AdvPreviewMenu.MenuImages) then
  begin
    cmb_ImageIndex.Enabled := True;
    cmb_ImageIndex.ItemHeight := FPreviewMenuControl.AdvPreviewMenu.MenuImages.Height;
    cmb_ImageIndex.Clear;
    for i := 0 to FPreviewMenuControl.AdvPreviewMenu.MenuImages.Count-1 do
    begin
      cmb_ImageIndex.Items.Add(InttoStr(i));
    end;
    cmb_ImageIndex.Items.Add(InttoStr(-1));
  end
  else
    cmb_ImageIndex.Enabled := False;
  
  // SubMenu Images
  if Assigned(FPreviewMenuControl.AdvPreviewMenu.SubMenuImages) then
  begin
    cmb_SubImageIndex.Enabled := True;
    cmb_SubImageIndex.ItemHeight := FPreviewMenuControl.AdvPreviewMenu.SubMenuImages.Height;
    cmb_SubImageIndex.Clear;
    for i:= 0 to FPreviewMenuControl.AdvPreviewMenu.SubMenuImages.Count -1 do
    begin
      cmb_SubImageIndex.Items.Add(InttoStr(i));
    end;
    cmb_SubImageIndex.Items.Add(InttoStr(-1));
  end
  else
    cmb_SubImageIndex.Enabled := False;

  if (FPreviewMenuControl.AdvPreviewMenu.MenuItems.Count > 0) then
  begin
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).ItemHot := 0;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SetSelectedItem(0);
  end;
  Result := inherited ShowModal;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.cmb_ImageIndexDrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  ImgList: TCustomImageList;
  ACanvas: TCanvas;
  X, Y: Integer;
begin
  ACanvas := cmb_ImageIndex.Canvas;
  ACanvas.FillRect (Rect);
  ImgList := FPreviewMenuControl.AdvPreviewMenu.MenuImages;
  X := Rect.Left + 2;

  if Assigned(ImgList) then
  begin
    if (cmb_ImageIndex.Items[Index] <> '-1') then
      ImgList.Draw (ACanvas, X, Rect.Top + 2, StrToInt(cmb_ImageIndex.Items[Index]));
    Inc (X, ImgList.Width);
  end;

  Y := Rect.Top + 1 + (cmb_ImageIndex.ItemHeight - ACanvas.TextHeight('None')) div 2;
  if (cmb_ImageIndex.Items[Index] = '-1') then
    ACanvas.TextOut(X + 3, Y, '(None)')
  else
    ACanvas.TextOut(X + 3, Y, cmb_ImageIndex.Items[Index]);
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.cmb_ActionChange(Sender: TObject);
var
  i: Integer;
begin
  if FInternalItemChange then
    Exit;

  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
  if (i >= 0) then
  begin
    if (cmb_Action.ItemIndex >= 0) then
      FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].Action := TBasicAction(cmb_Action.Items.Objects[cmb_Action.ItemIndex])
    else
      FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].Action := nil;
    UpdatePreview;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).DrawItem(i);
  end;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.cmb_SubActionChange(Sender: TObject);
var
  SubItems: TAdvPreviewSubMenuItems;
  i: Integer;
begin
  if FInternalSubItemChange then
    Exit;

  SubItems := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).GetSubMenuItems;
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedSubItem;
  if (i >= 0) and Assigned(SubItems) then
  begin
    if (cmb_SubAction.ItemIndex >= 0) then
      SubItems.Items[i].Action := TBasicAction(cmb_SubAction.Items.Objects[cmb_SubAction.ItemIndex])
    else
      SubItems.Items[i].Action := nil;
    UpdatePreview;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).DrawSubMenuItem(i);
  end;
end;

//------------------------------------------------------------------------------

procedure TPreviewMenuEditor.cmb_SubMenuChange(Sender: TObject);
var
  SubItems: TAdvPreviewSubMenuItems;
  i: Integer;
begin
  if FInternalSubItemChange then
    Exit;

  SubItems := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).GetSubMenuItems;
  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedSubItem;
  if (i >= 0) and Assigned(SubItems) then
  begin
    if (cmb_SubMenu.ItemIndex >= 0) then
      SubItems.Items[i].SubMenu := TPopupMenu(cmb_SubMenu.Items.Objects[cmb_SubMenu.ItemIndex])
    else
      SubItems.Items[i].SubMenu := nil;
    UpdatePreview;
    TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).DrawSubMenuItem(i);
  end;
end;

procedure TPreviewMenuEditor.spn_SubMenuHeightChange(Sender: TObject);
var
  i: Integer;
begin
  if FInternalItemChange then
    Exit;

  if (spn_SubMenuHeight.Value < 0) then
    spn_SubMenuHeight.Value := 0;

  if (spn_SubMenuHeight.Value = 1) then
    spn_SubMenuHeight.Value := 12;

  if (spn_SubMenuHeight.Value <= 11) then
    spn_SubMenuHeight.Value := 0;

  i := TProPreviewMenuPanel(FPreviewMenuControl.AdvPreviewMenuPanel).SelectedItem;
  if (i >= 0) then
  begin
    FPreviewMenuControl.AdvPreviewMenu.MenuItems[i].SubMenuItemHeight := spn_SubMenuHeight.Value;
    UpdatePreview;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -