📄 advpreviewmenueditor.pas
字号:
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 + -