📄 umain.pas
字号:
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DBCtrls, Grids, DBGridEh, Mask, ExtCtrls,
ComCtrls, ToolWin, XPMan, Menus, ActnList, ImgList, ExtDlgs, DB, FR_Class;
type
TfrmMain = class(TForm)
CoolBar: TCoolBar;
ToolBar2: TToolBar;
StatusBar: TStatusBar;
pNav: TPanel;
Splitter: TSplitter;
pData: TPanel;
pNavTitle: TPanel;
tvGrade: TTreeView;
pDetail: TPanel;
pcDetail: TPageControl;
TabSheet1: TTabSheet;
Bevel1: TBevel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
dbeXH: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
DBEdit9: TDBEdit;
DBEdit10: TDBEdit;
DBMemo1: TDBMemo;
DBComboBox1: TDBComboBox;
DBEdit11: TDBEdit;
TabSheet2: TTabSheet;
GridFamily: TDBGridEh;
TabSheet3: TTabSheet;
DBGridEh2: TDBGridEh;
TabSheet4: TTabSheet;
GridEvents: TDBGridEh;
TabSheet5: TTabSheet;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
DBMemo2: TDBMemo;
GSPhoto: TDBImage;
JHSPhoto: TDBImage;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
pDetailTitle: TPanel;
sbCloseNav: TSpeedButton;
sbCloseDetail: TSpeedButton;
TabSheet6: TTabSheet;
GridGraduate: TDBGridEh;
pDataTitle: TPanel;
ImageListH: TImageList;
ImageList: TImageList;
ImageListD: TImageList;
ImageListM: TImageList;
ActionList1: TActionList;
MainMenu1: TMainMenu;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
F1: TMenuItem;
N1: TMenuItem;
V1: TMenuItem;
T1: TMenuItem;
H1: TMenuItem;
aNew: TAction;
aEdit: TAction;
aDelete: TAction;
aPrint: TAction;
aExit: TAction;
aAbout: TAction;
aImport: TAction;
aExport: TAction;
N2: TMenuItem;
P1: TMenuItem;
N3: TMenuItem;
X1: TMenuItem;
E1: TMenuItem;
D1: TMenuItem;
I1: TMenuItem;
O1: TMenuItem;
A1: TMenuItem;
aViewGrade: TAction;
aViewCard: TAction;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
G1: TMenuItem;
S1: TMenuItem;
Image1: TImage;
Image2: TImage;
Image3: TImage;
aClassSetup: TAction;
N4: TMenuItem;
N5: TMenuItem;
aSchoolSetup: TAction;
H2: TMenuItem;
labClassName: TLabel;
GridCard: TDBGridEh;
pFilter: TPanel;
sbOpenFilter: TSpeedButton;
sbCloseFilter: TSpeedButton;
cbField: TComboBox;
cbValue: TComboBox;
ToolButton13: TToolButton;
aFilter: TAction;
ToolButton14: TToolButton;
labDatasetState: TLabel;
aSave: TAction;
ToolButton15: TToolButton;
S2: TMenuItem;
F2: TMenuItem;
aDefaultValue: TAction;
ToolButton16: TToolButton;
aCancel: TAction;
C1: TMenuItem;
ToolButton17: TToolButton;
SaveDialog: TSaveDialog;
OpenDialog1: TOpenDialog;
ToolButton18: TToolButton;
aMoveClass: TAction;
N6: TMenuItem;
M1: TMenuItem;
pmGrid: TPopupMenu;
N7: TMenuItem;
E2: TMenuItem;
D2: TMenuItem;
N8: TMenuItem;
M2: TMenuItem;
procedure aClassSetupExecute(Sender: TObject);
procedure aSchoolSetupExecute(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure tvGradeClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure aViewGradeExecute(Sender: TObject);
procedure aViewCardExecute(Sender: TObject);
procedure sbCloseNavClick(Sender: TObject);
procedure sbCloseDetailClick(Sender: TObject);
procedure aNewExecute(Sender: TObject);
procedure aEditExecute(Sender: TObject);
procedure aDeleteExecute(Sender: TObject);
procedure aExitExecute(Sender: TObject);
procedure aNewUpdate(Sender: TObject);
procedure cbFieldSelect(Sender: TObject);
procedure aFilterExecute(Sender: TObject);
procedure sbOpenFilterClick(Sender: TObject);
procedure sbCloseFilterClick(Sender: TObject);
procedure cbValueKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure aSaveExecute(Sender: TObject);
procedure GridCardDblClick(Sender: TObject);
procedure aDefaultValueExecute(Sender: TObject);
procedure aCancelExecute(Sender: TObject);
procedure aExportExecute(Sender: TObject);
procedure aAboutExecute(Sender: TObject);
procedure aImportExecute(Sender: TObject);
procedure aMoveClassExecute(Sender: TObject);
procedure aPrintExecute(Sender: TObject);
private
{ Private declarations }
FilterHint: string;
procedure IniGradeTree;
procedure FillFieldList;
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
FirstActivate: Boolean = True;
implementation
uses uGlobe, uDM, uSetGrade, uSetSchool, uFlash, uLoginPrompt,
uSetDefaultValue, uAbout, uImportData, uSelectClass;
{$R *.dfm}
procedure TfrmMain.aClassSetupExecute(Sender: TObject);
begin
SetGrade;
IniGradeTree;
DM.adSSCard.Close;
CurClass := '';
labClassName.Caption := CurClass;
end;
procedure TfrmMain.aSchoolSetupExecute(Sender: TObject);
begin
SetSchool;
end;
procedure TfrmMain.FormActivate(Sender: TObject);
var r : TRect;
begin
if FirstActivate then begin
SystemParametersInfo(SPI_GETWORKAREA,0,@r,0);
self.Top := 0;
self.Left := 0;
self.Width := r.Right-r.Left;
self.Height := r.Bottom-r.Top;
Application.Title := self.Caption ;
if not Login then Close;
FirstActivate := False;
IniGradeTree;
end;
end;
procedure TfrmMain.IniGradeTree;
begin
GetGradeTree;
tvGrade.LoadFromFile(GradeTreeFileName);
tvGrade.FullExpand;
end;
procedure TfrmMain.tvGradeClick(Sender: TObject);
procedure SetEvents;
begin
GridEvents.Columns[0].PickList.Delimiter := gDelimiter;
GridEvents.Columns[0].PickList.DelimitedText := SchoolInfo.Events;
end;
procedure SetCourse;
begin
if tvGrade.Selected.Text = UnknowClass then exit;
GridGraduate.Columns[0].PickList.Delimiter := gDelimiter;
if tvGrade.Selected.Parent.Parent.Text = '小学' then
GridGraduate.Columns[0].PickList.DelimitedText := SchoolInfo.ElementaryCourse
else
GridGraduate.Columns[0].PickList.DelimitedText := SchoolInfo.JuniorCourse;
end;
procedure SetFamilyTitle;
begin
GridFamily.Columns[0].PickList.Delimiter := gDelimiter;
GridFamily.Columns[0].PickList.DelimitedText := SchoolInfo.Family;;
end;
begin
if (tvGrade.Selected = nil) then exit;
//未分班
if tvGrade.Selected.Text = UnknowClass then begin
CurClass := UnknowClass;
end else begin
if tvGrade.Selected.Level<2 then exit;
CurClass := GetClassName(tvGrade.Selected);
end;
labClassName.Caption := CurClass;
OpenClass(CurClass);
FillFieldList;
SetFamilyTitle;
SetEvents;
SetCourse;
end;
procedure TfrmMain.BitBtn1Click(Sender: TObject);
begin
SetPhotoToField('GSPhoto', DM.adSSCard);
end;
procedure TfrmMain.BitBtn3Click(Sender: TObject);
begin
SetPhotoToField('JHSPhoto', DM.adSSCard);
end;
procedure TfrmMain.BitBtn2Click(Sender: TObject);
begin
ClearPhotoFromFeid('GSPhoto', DM.adSSCard);
end;
procedure TfrmMain.BitBtn4Click(Sender: TObject);
begin
ClearPhotoFromFeid('JHSPhoto', DM.adSSCard);
end;
procedure TfrmMain.aViewGradeExecute(Sender: TObject);
begin
aViewGrade.Checked := not aViewGrade.Checked;
pNav.Visible := aViewGrade.Checked;
end;
procedure TfrmMain.aViewCardExecute(Sender: TObject);
begin
aViewCard.Checked := not aViewCard.Checked;
pDetail.Visible := aViewCard.Checked;
end;
procedure TfrmMain.sbCloseNavClick(Sender: TObject);
begin
aViewGrade.Execute;
end;
procedure TfrmMain.sbCloseDetailClick(Sender: TObject);
begin
aViewCard.Execute;
end;
procedure TfrmMain.aNewExecute(Sender: TObject);
begin
if not aViewCard.Checked then
aViewCard.Execute;
pcDetail.ActivePageIndex := 0;
dbeXH.SetFocus;
DM.adSSCard.Append;
end;
procedure TfrmMain.aEditExecute(Sender: TObject);
begin
if not aViewCard.Checked then
aViewCard.Execute;
DM.adSSCard.Edit;
end;
procedure TfrmMain.aDeleteExecute(Sender: TObject);
begin
DM.adSSCard.Delete;
end;
procedure TfrmMain.aExitExecute(Sender: TObject);
begin
if DM.adSSCard.Active then DM.adSSCard.Close;
Close;
end;
procedure TfrmMain.aNewUpdate(Sender: TObject);
const
DatasetStatue = '%s %d/%d';
var
NowDatasetStatue: string;
begin
aNew.Enabled := DM.adSSCard.Active;
aEdit.Enabled := DM.adSSCard.Active;
aDelete.Enabled := DM.adSSCard.Active;
aSave.Enabled := DM.adSSCard.Active and ((DM.adSSCard.State=dsEdit) or (DM.adSSCard.State=dsInsert));
aPrint.Enabled := DM.adSSCard.Active;
aImport.Enabled := DM.adSSCard.Active;
aExport.Enabled := DM.adSSCard.Active;
aFilter.Enabled := DM.adSSCard.Active;
aCancel.Enabled := DM.adSSCard.Active and ((DM.adSSCard.State=dsEdit) or (DM.adSSCard.State=dsInsert));
aMoveClass.Enabled := DM.adSSCard.Active and (GridCard.SelectedRows.Count>0);
if (DM.adSSCard.Active) then begin
if DM.adSSCard.Filtered then
NowDatasetStatue :=
format(DatasetStatue, ['( ' + FilterHint +' )', DM.adSSCard.RecNo, DM.adSSCard.RecordCount])
else
NowDatasetStatue :=
format(DatasetStatue, ['', DM.adSSCard.RecNo, DM.adSSCard.RecordCount]);
if labDatasetState.Caption <> NowDatasetStatue then
labDatasetState.Caption := NowDatasetStatue;
end;
end;
procedure TfrmMain.FillFieldList;
var i: integer;
begin
if (not DM.adSSCard.Active) then exit;
cbField.Items.Clear;
for i:=0 to DM.adSSCard.FieldCount-1 do
cbField.Items.Append(DM.adSSCard.Fields[i].DisplayLabel);
if cbField.Items.Count>0 then cbfield.ItemIndex := 0;
end;
procedure TfrmMain.cbFieldSelect(Sender: TObject);
begin
if (not DM.adSSCard.Active) or (cbField.ItemIndex < 0) then
exit;
cbValue.Text := '';
cbValue.Items.Text := GetLocalValueList(DM.adSSCard, GetFieldName(DM.adSSCard, cbField.Text));;
end;
procedure TfrmMain.aFilterExecute(Sender: TObject);
begin
if (not DM.adSSCard.Active) then exit;
self.pFilter.Visible := not self.pFilter.Visible;
aFilter.Checked := self.pFilter.Visible;
if self.pFilter.Visible then begin
self.FillFieldList;
self.cbFieldSelect(Sender);
end else
DM.adSSCard.Filtered := False;
end;
procedure TfrmMain.sbOpenFilterClick(Sender: TObject);
const
fFilterStr = '%s like ''%%%s%%''';
fFilterHint = '%s=''%s''';
begin
if (not DM.adSSCard.Active) then exit;
if DM.adSSCard.Filtered then DM.adSSCard.Filtered := False;
if (cbField.Text = '') or (cbValue.Text = '') then exit;
DM.adSSCard.Filter := format(fFilterStr, [GetFieldName(DM.adSSCard, cbField.Text), cbValue.Text]);
DM.adSSCard.Filtered := True;
FilterHint := format(fFilterHint, [cbField.Text, cbValue.Text]);
end;
procedure TfrmMain.sbCloseFilterClick(Sender: TObject);
begin
if (not DM.adSSCard.Active) then exit;
if DM.adSSCard.Filtered then DM.adSSCard.Filtered := False;
end;
procedure TfrmMain.cbValueKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
sbOpenFilter.Click;
end;
procedure TfrmMain.aSaveExecute(Sender: TObject);
begin
DM.adSSCard.Post;
end;
procedure TfrmMain.GridCardDblClick(Sender: TObject);
begin
if (not DM.adSSCard.Active) then exit;
if not aViewCard.Checked then
aViewCard.Execute;
end;
procedure TfrmMain.aDefaultValueExecute(Sender: TObject);
begin
SetDefalueValueForm;
end;
procedure TfrmMain.aCancelExecute(Sender: TObject);
begin
DM.adSSCard.Cancel;
end;
procedure TfrmMain.aExportExecute(Sender: TObject);
begin
SaveDialog.FileName := CurClass;
if self.SaveDialog.Execute then
ExportDataToExcel(CurClass, SaveDialog.FileName);
end;
procedure TfrmMain.aAboutExecute(Sender: TObject);
begin
ShowAboutBox;
end;
procedure TfrmMain.aImportExecute(Sender: TObject);
begin
ImportDataFromExcel(DM.adSSCard, CurClass);
end;
procedure TfrmMain.aMoveClassExecute(Sender: TObject);
const
Hint_MoveClass = '所选学生已经转班到"%s"!';
var
NewClassName: string;
begin
if GridCard.SelectedRows.Count>0 then begin
NewClassName := SelectClass;
if (NewClassName <> '') and (NewClassName <> CurClass) then begin
MoveClass(DM.adSSCard, GridCard.SelectedRows, NewClassName);
showmessage(format(Hint_MoveClass, [NewClassName]));
end;
end;
end;
procedure TfrmMain.aPrintExecute(Sender: TObject);
begin
if FileExists(ReportFileName) then begin
frVariables['SchoolCity'] := SchoolInfo.City;
frVariables['SchoolName'] := SchoolInfo.Name;
DM.frReport.LoadFromFile(ReportFileName);
DM.frReport.ShowReport;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -