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

📄 mainunit.pas

📁 DELPHI计算机科学系教务管理系统,带论文设计,不错的参考
💻 PAS
字号:
unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Menus, StdCtrls, fcTreeView,ToolWin,ExtCtrls, ImgList,
  ComCtrls, jpeg,shellapi, Buttons;

type
  TMainForm = class(TForm)
    MainMenu: TMainMenu;
    fcTreeView: TfcTreeView;
    ImageList: TImageList;
    StatusBar: TStatusBar;
    Image: TImage;
    Timer: TTimer;
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure fcTreeViewDblClick(TreeView: TfcCustomTreeView;
      Node: TfcTreeNode; Button: TMouseButton; Shift: TShiftState; X,
      Y: Integer);
    procedure TB2Click(Sender: TObject);
    procedure TimerTimer(Sender: TObject);
    function showMDIForm(aFormClass: TFormClass): TForm; //产生子窗体的函数

    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure TB4Click(Sender: TObject);

    procedure fcTreeViewToggleCheckbox(TreeView: TfcCustomTreeView;
      Node: TfcTreeNode);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
  Private
        { Private declarations }
  public
    procedure procebyfno(sender:Tobject); // Tfctreeview 或 mainmenu 时间的调用过程

    procedure showroleform();
    procedure showuserform();
    procedure showdataparamform();
    procedure showteacherform();
    procedure showCourse1Form();
    procedure showTLessonForm();
    procedure showTCourse2Form();
    procedure showTCourseForm();
    procedure showTCourseRewardForm();
    procedure showTCourseStatisticsForm();
    procedure showTTestpaperForm();
    procedure showTeacherFindForm();
    procedure showSelectForm();
    procedure showTCourseSelectForm();
    procedure showAboutBox();
    procedure showHelpForm();

  //  public
    { Public declarations }
  end;
//*******************************************
 const
    OrignWidth=1024;
    OrignHeight=768;

//*******************************************   
var
  MainForm: TMainForm;
  Isparentnode:Boolean=false;
  shelpfile:string;
implementation

uses DataModul,  Role_M, User_M, Longon, dataparam, TeacherUnit,
  public_unit, TCourse1Unit, TLessonUnit, TCourse2Unit, TCourseUnit,
  TCourseRewardUnit, TCourseStatisticsUnit, TTestpaperUnit,
  TeacherFindFormUnit , SelectUnit1, TCourseSelectUnit, AboutUnit,
  HelpUnit;

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
var
  menuitem,childmenuitem:Tmenuitem;
  menunode,childmenunode:TfcTreenode;
  menuquery,childmenuquery:Tadoquery;
  sqlstr,childsqlstr,fno,fname,childfno,childfname:string;
begin
     if not assigned(LogonForm) then
       LogonForm:=TLogonForm.Create(application);
     LogonForm.ShowModal;
 //************************************************************
      Scaled:=True;
      if(Screen.Width<>OrignWidth) then
      begin
        Height := LongInt(Height) * LongInt(Screen.height) div OrignHeight;
        Width := LongInt(Width) * LongInt(Screen.Width) div OrignWidth;
        ScaleBy(Screen.Width, OrignWidth);
      end;
//************************************************************
  menuquery:=Tadoquery.Create(self);
  with menuquery do
  begin
    Connection:=DM.ADOConnection1; //建立查询连接
    sqlStr := 'SELECT DISTINCT b.Fno, c.FName FROM TUserRole a join TRoleFunction b ON a.Rno=b.Rno join TFunction c ON b.Fno=c.Fno WHERE a.Uno='
    + Quotedstr(DM.UNo) +'and c.Flevel= 0';
    sql.Text:=sqlstr;
    open;
    while not eof do              //动态建立主菜单
    begin
      menuitem:=Tmenuitem.Create(nil);
      fno:=FieldByName('Fno').AsString;
      fname:=FieldbyName('Fname').AsString;
      menuitem.Caption:=fname;
      menuitem.Tag:=strtoint(fno);
      MainMenu.Items.Add(menuitem);
      menuitem.ImageIndex:=0;

      menunode:=fcTreeView.Items.Add(nil,fname);
      menunode.StringData:=fno;
      menunode.ImageIndex:=0;

//*******************************************************
      childmenuquery:=Tadoquery.Create(self);
      with childmenuquery do
      begin
        connection:=dm.ADOConnection1;  //建立连接
        childsqlstr:='select distinct F.Fno,F.Fname from TFunction F '
        +'inner join TRoleFunction TF on F.Fno=TF.Fno '
        +'inner join TUserRole TR on TF.Rno=TR.Rno '+'inner join TUser T on TR.Uno=T.Uno '
        +'where T.Uno='+quotedstr(dm.uno)+' and F.Flevel=1 '+ 'and F.Fpater='+quotedstr(fno);
        sql.Text:=childsqlstr;
        active:=true;
        while not eof do
        begin
          childmenuitem:=Tmenuitem.Create(nil);
          childfno:=fieldbyname('Fno').AsString;
          childfname:=fieldbyname('Fname').AsString;
          childmenuitem.Caption:=childfname;
          childmenuitem.Tag:=strtoint(childfno);
          menuitem.Add(childmenuitem);
          childmenuitem.ImageIndex:=1;
          childMenuItem.OnClick := ProceByFno; //主菜单双击事件   调用  procebyFno() 函数
          childmenunode:=fcTreeView.Items.AddChild(menunode,childfname);
          childmenunode.StringData:=childfno;
          childmenunode.ImageIndex:=3;
          next;
        end;
        close;
        childmenuquery.Free;
      end;
      next;
    end;
    close;
    menuquery.Free;
  end;
//*********************************************


end;

//************************************************************
//树状菜单双击事件  调用  procebyFno() 函数
procedure TMainForm.fcTreeViewDblClick(TreeView: TfcCustomTreeView;
  Node: TfcTreeNode; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
      procebyFno(Node);
end;


procedure TMainForm.TB2Click(Sender: TObject);
begin
    if fcTreeView.Visible=true then
      fcTreeView.Visible:=false;
end;

procedure TMainForm.TimerTimer(Sender: TObject);
begin
  StatusBar.Panels[1].Text:='  '+dm.uname;
  StatusBar.Panels[3].Text:='  '+datetimetostr(now);

end;

function TMainForm.showMDIForm(aFormClass: TFormClass): TForm;
begin
  MainForm.StatusBar.Panels[4].Text := '  正在打开窗口,请稍候.....';
  MainForm.StatusBar.Refresh;
  screen.Cursor := crHourGlass;
  LockWindowUpdate(MainForm.Handle);
  result := aFormClass.Create(Application);
  with result do
  begin
    FormStyle :=fsMDIChild;
    WindowState := wsMaximized;
  end;

  MainForm.StatusBar.Refresh;
  LockWindowUpdate(0);
  screen.Cursor := crDefault;
  MainForm.StatusBar.Panels[4].Text := '';
end;

procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin

  if Application.MessageBox('真的要退出吗?', '退出消息',
     MB_ICONINFORMATION + MB_YESNO)= id_yes then
    CanClose:=true
  else
    CanClose := false;
    
end;

procedure TMainForm.TB4Click(Sender: TObject);
begin
  Cascade;
end;


procedure TMainForm.procebyfno(sender: Tobject);
var
  fno:integer;
begin
  fno:=-1;
  if (sender is Tmenuitem) then
    begin
      fno:= (sender as Tmenuitem).Tag;
    end;
  if (sender is TfcTreeNode) then
    begin
      if (sender as Tfctreenode).Parent<>nil then
         begin
           fno:=strtoint((sender as TfcTreenode).StringData);
         end;
    end; 
 case fno of
          2:showuserform;
          3:showroleform;
          4:showdataparamform;
          6:showTCourse2Form;
          7:showCourse1Form;
          8:showteacherform;
          9:showTCourseForm;
          10:showTCourseRewardForm;
          12:showTCourseStatisticsForm;
          13:showTTestpaperForm;
          20:showTLessonForm;
          22:showTeacherFindForm;
          23:showSelectForm;
          26:showTCourseSelectForm;
          31:showHelpForm;
          32:showAboutBox;
     end;
end;

procedure TMainForm.fcTreeViewToggleCheckbox(TreeView: TfcCustomTreeView;
  Node: TfcTreeNode);
var
  i:integer;
  Ischildnode:integer;
begin
  if isparentnode=true then
    exit;
  if node.Parent=nil then
  begin
    if node.Checked then
      for i:=0 to node.Count-1 do
        node.Item[i].Checked:=true
    else
      for i:=0 to node.Count-1 do
        node.Item[i].Checked:=false;
  end
  else
  begin
    Ischildnode:=0;
    for i:=0 to node.Parent.Count - 1 do
      if node.Parent.Item[i].Checked=true then
        Ischildnode:=1;
    isparentnode:=true;
    if Ischildnode=1 then
      node.Parent.Checked:=true
    else
      node.Parent.Checked:=false;
    Isparentnode:=false;
  end;
end;
//************************************************************
procedure TMainForm.showroleform;
begin
  if not assigned(RoleForm) then
    RoleForm:=TRoleForm(showMDIForm(TRoleForm));
  RoleForm.show;
end;

procedure TMainForm.showuserform;
begin
  if not assigned(UserForm) then
    UserForm:=TUserForm(showMDIForm(TUserForm));
  UserForm.show;
end;

procedure TMainForm.showdataparamform;
begin
  if not assigned(DataParamForm) then
    DataParamForm:=TDataParamForm(showMDIForm(TDataParamForm));
  DataParamForm.show;
end;




procedure TMainForm.FormShow(Sender: TObject);
begin
   fcTreeView.FullExpand; 
end;


procedure TMainForm.BitBtn1Click(Sender: TObject);
begin
  if fcTreeView.Visible=false then
  begin
    fcTreeView.Visible:=true;
    fcTreeView.FullExpand;
  end
  else
       fcTreeView.Visible:=false;
end;

procedure TMainForm.BitBtn2Click(Sender: TObject);
begin
  if messagebox(handle,'您确定要退出系统吗?','提示',MB_YESNO + MB_ICONQUESTION)=ID_yes  then
  begin
    application.Terminate;
  end;
end;

procedure TMainForm.BitBtn3Click(Sender: TObject);
begin
  Cascade;
end;

procedure TMainForm.BitBtn4Click(Sender: TObject);
begin
  Tile;
end;

procedure TMainForm.showteacherform;
begin
  if not assigned(TeacherForm) then
    TeacherForm:=TTeacherForm(showMDIForm(TTeacherForm));
  TeacherForm.show;
end;

procedure TMainForm.showCourse1Form;
begin
  if not assigned(TCourse1Form) then
    TCourse1Form:=TTCourse1Form(showMDIForm(TTCourse1Form));
  TCourse1Form.show;
end;

procedure TMainForm.showTLessonForm;
begin
    TLessonForm.ShowModal;
end;

procedure TMainForm.showTCourse2Form;
begin
  if not assigned(TCourse2Form) then
    TCourse2Form:=TTCourse2Form(showMDIForm(TTCourse2Form));
  TCourse2Form.show;
end;

procedure TMainForm.showTCourseForm;
begin
  if not assigned(TCourseForm) then
    TCourseForm:=TTCourseForm(showMDIForm(TTCourseForm));
  TCourseForm.show;
end;

procedure TMainForm.showTCourseRewardForm;
begin
  if not assigned(TCourseRewardForm) then
    TCourseRewardForm:=TTCourseRewardForm(showMDIForm(TTCourseRewardForm));
  TCourseRewardForm.show;
end;

procedure TMainForm.showTCourseStatisticsForm;
begin
  if not assigned(TCourseStatisticsForm) then
    TCourseStatisticsForm:=TTCourseStatisticsForm(showMDIForm(TTCourseStatisticsForm));
  TCourseStatisticsForm.show;
end;

procedure TMainForm.showTTestpaperForm;
begin
  if not assigned(TTestpaperForm) then
    TTestpaperForm:=TTTestpaperForm(showMDIForm(TTTestpaperForm));
  TTestpaperForm.show;
end;


procedure TMainForm.showTeacherFindForm;
begin
  if not assigned(TeacherFindForm) then
    TeacherFindForm:=TTeacherFindForm(showMDIForm(TTeacherFindForm));
    TeacherFindForm.Show;
end;

procedure TMainForm.showSelectForm;
begin
   SelectForm1.ShowModal;
end;

procedure TMainForm.showTCourseSelectForm;
begin
   TCourseSelectForm.ShowModal;
end;


procedure TMainForm.showAboutBox;
begin
   AboutBox.ShowModal;
end;

procedure TMainForm.showHelpForm;
begin
   HelpForm.ShowModal;
end;

end.



⌨️ 快捷键说明

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