📄 u_subjectmanage.pas
字号:
unit U_SubjectManage;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
HGrids, HDBGrids, TB97Tlbr, TB97Ctls, TB97, DBTables, Db, Menus,
HTitleDBGrid;
type
TFm_SubjectManage = 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;
DQuery: TQuery;
DUpSQL: TUpdateSQL;
PPM: TPopupMenu;
M_Add: TMenuItem;
M_Edit: TMenuItem;
M_Delete: TMenuItem;
M_Z01: TMenuItem;
M_Help: TMenuItem;
M_Exit: TMenuItem;
TbBtn_Save: TToolbarButton97;
ToolbarSep971: TToolbarSep97;
DQueryS_KCDHAO: TStringField;
DQueryS_KCMCHENG: TStringField;
DQueryS_KCXHAO: TStringField;
DQuerySI_KCLXING: TSmallintField;
TbBtn_Print: TToolbarButton97;
TbSp01: TToolbarSep97;
PM_Z01: TMenuItem;
PM_Print: TMenuItem;
MGrid: THTitleDBGrid;
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_HelpClick(Sender: TObject);
procedure QueryGetText(Sender: TField; var Text: String; DisplayText: Boolean);
procedure QuerySetText(Sender: TField; const Text: string);
procedure TbBtn_SaveClick(Sender: TObject);
procedure DQueryBeforePost(DataSet: TDataSet);
procedure DQueryAfterPost(DataSet: TDataSet);
procedure MGridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure MGridDblClick(Sender: TObject);
procedure TbBtn_PrintClick(Sender: TObject);
private
procedure RefreshQuery;
public
end;
var
Fm_SubjectManage: TFm_SubjectManage;
procedure Show_SubjectManage;
implementation
uses U_Main, U_GlobalProc, U_GlobalVar, U_DM, U_Print;
{$R *.DFM}
procedure Show_SubjectManage;
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_SubjectManage') then
Fm_Main.MDIChildren[i].Close;
end;
if not Assigned(Fm_SubjectManage) then
begin
Fm_SubjectManage := TFm_SubjectManage.Create(Application);
with Fm_SubjectManage do
begin
DQuery.Open;
ReSetGridColumns(MGrid, 'KC', QueryGetText, QuerySetText);
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_SubjectManage.MGrid);
end;
with Fm_SubjectManage do
begin
if WindowState <> wsMaximized then
WindowState := wsMaximized;
Show;
SetFocus;
end;
end;
procedure TFm_SubjectManage.RefreshQuery;
begin
with DQuery do
try
DisableControls;
Close;
Open;
finally
EnableControls;
end;
end;
procedure TFm_SubjectManage.TbBtn_ExitClick(Sender: TObject);
begin
Close;
end;
procedure TFm_SubjectManage.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if DQuery.State in [dsEdit, dsInsert] then
DQuery.Post;
DQuery.Close;
Action := caFree;
Fm_SubjectManage := nil;
end;
procedure TFm_SubjectManage.TbBtn_EditClick(Sender: TObject);
begin //
MGrid.Options := MGrid.Options + [tgEditing];
MGrid.Col := 2;
DQuery.Edit;
end;
procedure TFm_SubjectManage.TbBtn_AddClick(Sender: TObject);
var
pCode: string;
begin //
pCode := '0001';
try
with DQuery do
begin
DisableControls;
First;
while not Eof do
begin
if pCode <> FieldByName('s_kcdhao').AsString then
Break;
pCode := IntFormatStr(StrToInt(pCode) + 1, 4);
Next;
end;
if Eof then
Append
else
Insert;
FieldByName('s_kcdhao').AsString := pCode;
MGrid.Options := MGrid.Options + [tgEditing];
MGrid.Col := 2;
end;
finally
DQuery.EnableControls;
end;
end;
procedure TFm_SubjectManage.TbBtn_DeleteClick(Sender: TObject);
var
tmQuery: TQuery;
tmCode, tmName: string;
begin //
tmCode := DQuery.FieldByName('s_kcdhao').AsString;
tmName := DQuery.FieldByName('s_kcmcheng').AsString;
tmQuery := TQuery.Create(Application);
with tmQuery do
try
DataBaseName := DataDBase;
// 成绩
SQL.Text := 'SELECT * FROM "kscj.db" d1 WHERE d1.s_kcdhao=''' + tmCode + '''';
Open;
if not IsEmpty then
begin
U_GlobalProc.Show_ErrorMess('课程“' + tmName + '”已经使用并登记成绩了,不能删除。');
Exit;
end else
if not U_GlobalProc.Show_ConfirmMess('真的删除课程“' + tmName + '”吗?') then
Exit;
{if not IsEmpty then // 以前的处理
begin
if not U_GlobalProc.Show_ConfirmMess('课程“' + tmName + '”已经使用并登记成绩了,删除吗?') then
Exit;
end else
if not U_GlobalProc.Show_ConfirmMess('真的删除课程“' + tmName + '”吗?') then
Exit;}
Close;
DataBaseName := DataDBase;
// 成绩
SQL.Text := 'DELETE FROM "kscj.db" d1 WHERE d1.s_kcdhao=''' + tmCode + '''';
ExecSQL;
// 年级课程
SQL.Text := 'DELETE FROM "xqkskc.db" d1 WHERE d1.s_kcdhao=''' + tmCode + '''';
ExecSQL;
// 课程
SQL.Text := 'DELETE FROM "kc.db" d1 WHERE d1.s_kcdhao=''' + tmCode + '''';
ExecSQL;
finally
Close;
Free;
end;
RefreshQuery;
end;
procedure TFm_SubjectManage.TbBtn_HelpClick(Sender: TObject);
begin //
end;
procedure TFm_SubjectManage.QueryGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
DataSetGetText(MGrid, Sender, Text, DisplayText);
end;
procedure TFm_SubjectManage.QuerySetText(Sender: TField;
const Text: string);
begin
DataSetSetText(MGrid, Sender, Text);
end;
procedure TFm_SubjectManage.TbBtn_SaveClick(Sender: TObject);
begin
if DQuery.State in [dsEdit, dsInsert] then
DQuery.Post;
end;
procedure TFm_SubjectManage.DQueryBeforePost(DataSet: TDataSet);
begin
with DQuery do
if Trim(FieldByName('s_kcmcheng').AsString) = '' then
begin
if (State = dsInsert) or ((State = dsEdit) and
(not U_GlobalProc.Show_ConfirmMess(
'课程名称被修改为空值,是否存盘?'))) then
begin
Cancel;
if IsEmpty or (State = dsInsert) then
begin
MGrid.Options := MGrid.Options - [tgEditing];
MGrid.Col := 1;
end;
Abort;
end;
end;
end;
procedure TFm_SubjectManage.DQueryAfterPost(DataSet: TDataSet);
begin
if not DQuery.IsEmpty then
begin
TbBtn_Edit.Enabled := True;
TbBtn_Delete.Enabled := True;
M_Edit.Enabled := True;
M_Delete.Enabled := True;
end else
MGrid.Options := MGrid.Options - [tgEditing];
DQuery.ApplyUpdates;
end;
procedure TFm_SubjectManage.MGridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
U_GlobalProc.GridKeyDown(Sender, Key, Shift);
end;
procedure TFm_SubjectManage.MGridDblClick(Sender: TObject);
begin
U_GlobalProc.GridDblClick(Sender);
end;
procedure TFm_SubjectManage.TbBtn_PrintClick(Sender: TObject);
begin
Show_Print(MGrid);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -