📄 mainpanel.pas
字号:
unit MainPanel;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
jpeg, ExtCtrls, StdCtrls, Buttons, ComCtrls, ToolWin, ImgList, Menus,
menuLabel;
type
TfrmMainPanel = class(TForm)
PopupMenu1: TPopupMenu;
imgGrpButton: TImage;
ImageList2: TImageList;
mnuKaoQin: TMenuItem;
mnuPaiBan: TMenuItem;
mnuXzhs: TMenuItem;
mnuJjgz: TMenuItem;
mnuShiTang: TMenuItem;
mnuChuRu: TMenuItem;
mnuSys: TMenuItem;
imgBoard: TImage;
panPopup: TPanel;
imgPopup: TImage;
mnuZlEmp: TMenuItem;
mnuQEmp: TMenuItem;
mnuRoom: TMenuItem;
mnuJiaoYu: TMenuItem;
mnuJiangCheng: TMenuItem;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
protected
aLabels1,aLabels2 :Array[0..200] of TMenuLabel;
aLines2 :Array[0..200] of TShape;
nLabels1,nLabels2 :Integer;
procedure CreateButtons;
procedure OnBtnMouseEnter1(sender: TObject);
procedure OnBtnMouseEnter2(sender: TObject);
procedure OnBtnMouseExit(sender: TObject);
procedure OnBtnClick1(sender: TObject);
procedure OnMenuClick1(sender: TObject);
procedure OnBtnClick2(sender: TObject);
public
{ Public declarations }
procedure SetBtnEnable;
end;
var
frmMainPanel: TfrmMainPanel;
implementation
uses CaleClock, Login, Main, SelfFunc;
{$R *.DFM}
procedure TfrmMainPanel.CreateButtons;
var i,k,nHeight,nHeight2 :integer;
begin
with PopupMenu1 do
begin
nLabels2 :=0;
nLabels1 :=0;
nHeight :=432 div Items.Count;
for i :=0 to Items.Count -1 do
begin
aLabels1[i] :=TMenuLabel.Create(Self);
aLabels1[i].onMouseEnter :=OnBtnMouseEnter1;
aLabels1[i].onMouseExit :=OnBtnMouseExit;
aLabels1[i].OnClick :=OnBtnClick1;
aLabels1[i].Tag :=i;
aLabels1[i].Transparent :=True;
aLabels1[i].Cursor :=crHandPoint;
aLabels1[i].Caption :=Items[i].Caption;
aLabels1[i].Left :=61;
aLabels1[i].Top :=70 +nHeight *i;
imgBoard.Canvas.Draw(172, aLabels1[i].Top +3, imgGrpButton.Picture.Graphic);
Images.Draw(imgBoard.Canvas, 36, aLabels1[i].Top, Items[i].ImageIndex);
aLabels1[i].Parent :=Self;
nLabels1 :=nLabels1 +1;
nHeight2 :=300 div (Items[i].Count +1);
for k :=0 to Items[i].Count -1 do
if not Items[i].Items[k].IsLine then
begin
aLabels2[nLabels2] :=TMenuLabel.Create(Self);
aLabels2[nLabels2].onMouseEnter :=OnBtnMouseEnter2;
aLabels2[nLabels2].onMouseExit :=OnBtnMouseExit;
aLabels2[nLabels2].OnClick :=OnBtnClick2; //Items[i].Items[k].OnClick;
aLabels2[nLabels2].Tag :=i*10000 +k;
aLabels2[nLabels2].Transparent :=True;
aLabels2[nLabels2].Cursor :=crHandPoint;
aLabels2[nLabels2].Caption :=Items[i].Items[k].Caption;
aLabels2[nLabels2].Left :=33;
aLabels2[nLabels2].Top :=nHeight2 *(k+1) -15;
aLabels2[nLabels2].Visible :=False;
aLabels2[nLabels2].Parent :=panPopup;
aLines2[nLabels2] :=TShape.Create(Self);
aLines2[nLabels2].Tag :=i*10000 +k;
aLines2[nLabels2].Left :=17;
aLines2[nLabels2].Width :=200;
aLines2[nLabels2].Top :=aLabels2[nLabels2].Top +18;
aLines2[nLabels2].Height :=1;
aLines2[nLabels2].Visible :=False;
aLines2[nLabels2].Parent :=panPopup;
nLabels2 :=nLabels2 +1;
end;
end;
end;
end;
procedure TfrmMainPanel.OnBtnMouseEnter1(sender: TObject);
begin
if TLabel(Sender).Font.Color =clBlack
then TLabel(Sender).Font.Color :=clYellow;
end;
procedure TfrmMainPanel.OnBtnMouseEnter2(sender: TObject);
begin
TLabel(Sender).Font.Color :=clBlue;
end;
procedure TfrmMainPanel.OnBtnMouseExit(sender: TObject);
begin
if (TLabel(Sender).Font.Color =clYellow) or (TLabel(Sender).Font.Color =clBlue)
then TLabel(Sender).Font.Color :=clBlack;
end;
procedure TfrmMainPanel.OnMenuClick1(sender: TObject);
var oMenuItem :TMenuItem;
begin
oMenuItem :=TMenuItem(TComponent(sender).Tag);
oMenuItem.Click();
end;
procedure TfrmMainPanel.OnBtnClick2(sender: TObject);
var oMenuItem :TMenuItem;
begin
oMenuItem :=PopupMenu1.Items[TComponent(sender).Tag div 10000]
.Items[TComponent(sender).Tag mod 10000];
oMenuItem.OnClick(oMenuItem);
end;
procedure TfrmMainPanel.OnBtnClick1(sender: TObject);
var i,nIndex :integer;
begin
for i :=0 to nLabels1 -1 do
if aLabels1[i].Font.Color =clWhite then
aLabels1[i].Font.Color :=clBlack;
TLabel(Sender).Font.Color :=clWhite;
nIndex :=TLabel(Sender).Tag;
for i :=0 to nLabels2 -1 do
begin
aLabels2[i].Visible :=((aLabels2[i].Tag div 10000) =nIndex);
aLines2[i].Visible :=((aLines2[i].Tag div 10000) =nIndex);
end;
panPopup.Visible :=True;
end;
procedure TfrmMainPanel.SetBtnEnable;
var i,k :Integer;
begin
//exit;
panPopup.Visible :=False;
with PopupMenu1 do
begin
for i :=0 to Items.Count -1 do
begin
Items[i].Enabled :=TMenuItem(Items[i].Tag).Enabled;
if TMenuItem(Items[i].Tag).Parent <>nil then
if not TMenuItem(Items[i].Tag).Parent.Enabled
then Items[i].Enabled :=False;
for k :=0 to Items[i].Count -1 do
Items[i].Items[k].Enabled :=TMenuItem(Items[i].Items[k].Tag).Enabled;
end;
for i :=0 to nLabels1 -1 do
aLabels1[i].Enabled :=Items[i].Enabled;
for k :=0 to nLabels2 -1 do
aLabels2[k].Enabled :=Items[aLabels2[k].Tag div 10000]
.Items[aLabels2[k].Tag mod 10000].Enabled;
end;
end;
procedure TfrmMainPanel.FormCreate(Sender: TObject);
var oBitmap :TBitmap;
i,k :Integer;
GrpMenu,NewMenu: TMenuItem;
begin
//exit;
// 锣 JPG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -