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

📄 mainpanel.pas

📁 感应IC卡电脑考勤、门禁、售饭一卡通管理系统是基于我公司开发生产的ESW型智能卡记录器所具有的对持卡人刷卡卡号、时间、次数进行读取贮存等功能
💻 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 + -