📄 mainunit.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 + -