📄 u_matricsubject.pas
字号:
unit U_MatricSubject;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
HGrids, HDBGrids, TB97Tlbr, TB97Ctls, TB97, DBTables, Db, Menus;
type
TFm_MatricSubject = class(TForm)
DDS: TDataSource;
Dock: TDock97;
Tb97_Func: TToolbar97;
TbBtn_Edit: TToolbarButton97;
TbBtn_Add: TToolbarButton97;
TbBtn_Delete: TToolbarButton97;
TbSep01: TToolbarSep97;
TbBtn_Help: TToolbarButton97;
TbBtn_Exit: TToolbarButton97;
TbBtn_Power: TToolbarButton97;
TbSep02: TToolbarSep97;
MGrid: THDBGrid;
DQuery: TQuery;
DUpSQL: TUpdateSQL;
PPM: TPopupMenu;
M_Add: TMenuItem;
M_Edit: TMenuItem;
M_Delete: TMenuItem;
M_Z01: TMenuItem;
M_Copy: TMenuItem;
M_Help: TMenuItem;
M_Exit: TMenuItem;
M_Z02: TMenuItem;
DQuerys_kmhao: TStringField;
DQuerys_rxkmu: TStringField;
TbBtn_Print: TToolbarButton97;
TbSp01: TToolbarSep97;
PM_Print: TMenuItem;
PM_Z03: TMenuItem;
procedure TbBtn_ExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TbBtn_EditClick(Sender: TObject);
procedure TbBtn_AddClick(Sender: TObject);
procedure TbBtn_DeleteClick(Sender: TObject);
procedure TbBtn_PowerClick(Sender: TObject);
procedure TbBtn_HelpClick(Sender: TObject);
procedure TbBtn_PrintClick(Sender: TObject);
private
procedure RefreshQuery;
public
end;
var
Fm_MatricSubject: TFm_MatricSubject;
procedure Show_MatricSubject;
implementation
uses U_Main, U_GlobalProc, U_GlobalVar, U_DM, U_MatricSubjectAction, U_Print;
{$R *.DFM}
procedure Show_MatricSubject;
var
i: integer;
begin
for i := Fm_Main.MDIChildCount - 1 downto 0 do
begin
if (Fm_Main.MDIChildren[i].Name <> 'Fm_Wizard') and
(Fm_Main.MDIChildren[i].Name <> 'Fm_MatricSubject') then
Fm_Main.MDIChildren[i].Close;
end;
if not Assigned(Fm_MatricSubject) then
begin
Fm_MatricSubject := TFm_MatricSubject.Create(Application);
with Fm_MatricSubject do
begin
// 带"0" 格式化数字
IntFormatStr(W_CurYear, 2);
DQuery.ParamByName('ps_kmhao').AsString := IntFormatStr(W_CurYear, 2) + '%';
DQuery.Open;
if DQuery.IsEmpty then
begin
TbBtn_Edit.Enabled := False;
TbBtn_Delete.Enabled := False;
M_Edit.Enabled := False;
M_Delete.Enabled := False;
end;
end;
RefreshGridStyle(Fm_MatricSubject.MGrid);
end;
with Fm_MatricSubject do
begin
if WindowState <> wsMaximized then
WindowState := wsMaximized;
Show;
SetFocus;
end;
end;
procedure TFm_MatricSubject.RefreshQuery;
begin
with DQuery do
try
DisableControls;
Close;
Open;
finally
EnableControls;
end;
end;
procedure TFm_MatricSubject.TbBtn_ExitClick(Sender: TObject);
begin
Close;
end;
procedure TFm_MatricSubject.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DQuery.Close;
Action := caFree;
Fm_MatricSubject := nil;
end;
procedure TFm_MatricSubject.TbBtn_EditClick(Sender: TObject);
var
pCode, pName: string;
begin //
with DQuery do
begin
pCode := FieldByName('s_kmhao').AsString;
pName := FieldByName('s_rxkmu').AsString;
end;
if Show_MatricSubjectAction(pCode, pName, 2) then
with DQuery do
begin
Edit;
FieldByName('s_kmhao').AsString := pCode;
FieldByName('s_rxkmu').AsString := pName;
Post;
ApplyUpdates;
end;
end;
procedure TFm_MatricSubject.TbBtn_AddClick(Sender: TObject);
var
pCode, pName: string;
begin //
pCode := IntFormatStr(W_CurYear, 2) + '01';
try
with DQuery do
begin
DisableControls;
First;
while not Eof do
begin
if pCode <> FieldByName('s_kmhao').AsString then
Break;
pCode := IntFormatStr(StrToInt(pCode) + 1, 4);
Next;
end;
end;
finally
DQuery.EnableControls;
end;
if Show_MatricSubjectAction(pCode, pName, 1) then
begin
with DQuery do
begin
Append;
FieldByName('s_kmhao').AsString := pCode;
FieldByName('s_rxkmu').AsString := pName;
Post;
ApplyUpdates;
TbBtn_Edit.Enabled := True;
TbBtn_Delete.Enabled := True;
M_Edit.Enabled := True;
M_Delete.Enabled := True;
end;
end;
end;
procedure TFm_MatricSubject.TbBtn_DeleteClick(Sender: TObject);
var
tmQuery: TQuery;
tmCode, tmName: string;
begin //
tmCode := DQuery.FieldByName('s_kmhao').AsString;
tmName := DQuery.FieldByName('s_rxkmu').AsString;
if U_GlobalProc.Show_ConfirmMess('真的删除科目“' + tmName + '”吗?') then
begin
tmQuery := TQuery.Create(Application);
with tmQuery do
try
DataBaseName := DataDBase;
SQL.Text := 'DELETE FROM "xsrxkm.db" d1 WHERE d1.s_kmhao=''' + tmCode + '''';
ExecSQL;
finally
Free;
end;
end;
RefreshQuery;
end;
procedure TFm_MatricSubject.TbBtn_PowerClick(Sender: TObject);
var
tmQuery: TQuery;
tmS: string;
begin //
tmQuery := TQuery.Create(Application);
with tmQuery do
try
DataBaseName := DataDBase;
SQL.Text := 'SELECT * FROM xsrxkm WHERE s_kmhao LIKE :ps_kmhao';
ParamByName('ps_kmhao').AsString := IntFormatStr(W_CurYear - 1, 2) + '%';
Prepare;
Open;
if not IsEmpty then
begin
if (not DQuery.IsEmpty) and
U_GlobalProc.Show_ConfirmMess('拷贝去年的科目将覆盖已经输入的科目。拷贝吗?') then
begin
DQuery.DisableControls;
DQuery.First;
while not DQuery.Eof do
DQuery.Delete;
DQuery.ApplyUpdates;
end;
First;
tmS := IntFormatStr(W_CurYear, 2) + '01';
while not Eof do
begin
DQuery.AppendRecord([tmS, FieldByName('s_rxkmu').AsString]);
tmS := IntFormatStr(StrToInt(tmS) + 1, 4);
Next;
end;
end else
begin
U_GlobalProc.Show_ErrorMess('没有发现去年的学生入学科目。');
Exit;
end;
finally
while DQuery.ControlsDisabled do
DQuery.EnableControls;
Free;
end;
end;
procedure TFm_MatricSubject.TbBtn_HelpClick(Sender: TObject);
begin //
end;
procedure TFm_MatricSubject.TbBtn_PrintClick(Sender: TObject);
begin//
Show_Print(MGrid);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -