📄 uotherset.pas
字号:
unit uOtherset;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, Grids, DBGrids, DB, ADODB,
DBGridEh, Buttons, ExtCtrls, uModalbase;
type
TSortType = (stSort, stCap, stFolk, stLevel, stSpe);
TfrmOtherset = class(TfrmModalBase)
btnAdd: TBitBtn;
btnEdit: TBitBtn;
btnDel: TBitBtn;
btnClose: TBitBtn;
dgInfo: TDBGridEh;
dsInfo: TDataSource;
aqOInfo: TADOQuery;
Panel1: TPanel;
Label1: TLabel;
rbSort: TRadioButton;
rbCap: TRadioButton;
rbFolk: TRadioButton;
rbLevel: TRadioButton;
rbSpe: TRadioButton;
Panel2: TPanel;
lblName: TLabel;
Label3: TLabel;
deSName: TDBEdit;
deDes: TDBEdit;
procedure btnEditClick(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure btnDelClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure dsInfoDataChange(Sender: TObject; Field: TField);
procedure rbSortClick(Sender: TObject);
procedure rbCapClick(Sender: TObject);
procedure rbFolkClick(Sender: TObject);
procedure rbLevelClick(Sender: TObject);
procedure rbSpeClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
procedure SetState(ViewState: Boolean);
procedure SetSort(ASortType: TSortType);
public
{ Public declarations }
end;
var
frmOtherset: TfrmOtherset;
implementation
uses udata, uglobal, ustainfo, ustadetail;
{$R *.dfm}
procedure TfrmOtherset.SetState(ViewState: Boolean);
begin
deSName.ReadOnly := ViewState;
deDes.ReadOnly := ViewState;
btnDel.Visible := ViewState;
dgInfo.Enabled := ViewState;
if ViewState then
begin
btnAdd.Caption := '添 加';
btnEdit.Caption := '修 改';
dgInfo.Color := ViewColor;
deSName.Color := ViewColor;
deDes.Color := ViewColor;
end
else
begin
if aqOInfo.State = dsInsert then
btnAdd.Caption := '提 交'
else btnAdd.Caption := '确 定';
btnEdit.Caption := '取 消';
deSName.SetFocus;
deSName.Color := clWindow;
deDes.Color := clWindow;
end;
end;
procedure TfrmOtherset.SetSort(ASortType: TSortType);
var
sFilter: string;
begin
if aqOInfo.State in [dsInsert, dsEdit] then
begin
aqOInfo.CancelBatch();
SetState(True);
end;
case ASortType of
stSort:
begin
dgInfo.Columns[0].Title.Caption := '工 种';
lblName.Caption := '工种:';
sFilter := 'iflag=1';
end;
stCap:
begin
dgInfo.Columns[0].Title.Caption := '职 称';
lblName.Caption := '职称:';
sFilter := 'iflag=2';
end;
stFolk:
begin
dgInfo.Columns[0].Title.Caption := '民 族';
lblName.Caption := '民族:';
sFilter := 'iflag=3';
end;
stLevel:
begin
dgInfo.Columns[0].Title.Caption := '学 历';
lblName.Caption := '学历:';
sFilter := 'iflag=4';
end;
stSpe:
begin
dgInfo.Columns[0].Title.Caption := '专 业';
lblName.Caption := '专业:';
sFilter := 'iflag=5';
end;
end;
aqOInfo.Filtered := False;
aqOInfo.Filter := sFilter;
aqOInfo.Filtered := True;
if dgInfo.CanFocus then dgInfo.SetFocus;
end;
{以iflag字段标志分类: 1-工种, 2-积称, 3-民族, 4-学历, 5-专业}
procedure TfrmOtherset.FormCreate(Sender: TObject);
begin
Log.Write('进入其它信息设置模块');
DM.OpenQuery(aqOInfo, 'select sname, des, iflag from oinfo');
dsInfo.DataSet := aqOInfo;
SetState(True);
end;
procedure TfrmOtherset.FormShow(Sender: TObject);
begin
inherited;
SetSort(stSort);
end;
procedure TfrmOtherset.btnAddClick(Sender: TObject);
var
aqCheck: TADOQuery;
iFlag: Integer;
begin
if btnAdd.Caption = '添 加' then
begin
aqOInfo.Append;
SetState(False);
end
else
begin
if deSName.Text <> '' then
begin
if aqOInfo.State = dsInsert then
begin
if rbSort.Checked then iFlag := 1
else if rbCap.Checked then iFlag := 2
else if rbFolk.Checked then iFlag := 3
else if rbLevel.Checked then iFlag := 4
else iFlag := 5;
aqCheck := TADOQuery.Create(self);
aqCheck.Clone(aqOInfo, ltReadOnly);
if aqCheck.Locate('sname; iflag', VarArrayOf([deSName.Text, iFlag]), []) then
begin
MessageBox(Handle, '此项目已存在!', '提示', mb_IconInformation + mb_Ok);
deSName.SetFocus;
Abort;
end;
aqOInfo.FieldByName('iflag').AsInteger := iFlag;
aqCheck.Free;
end;
if aqOInfo.State = dsInsert then
Log.Write('添加信息[' + aqOInfo.FieldByName('sname').AsString + ']')
else
Log.Write('更新信息[' + aqOInfo.FieldByName('sname').AsString + ']');
aqOInfo.UpdateBatch();
SetState(True);
end
else
begin
MessageBox(Handle, '请输入类别名!', '提示', mb_IconInformation + mb_Ok);
deSName.SetFocus;
end;
end;
end;
procedure TfrmOtherset.btnEditClick(Sender: TObject);
begin
if btnedit.Caption ='修 改' then
begin
aqOInfo.Edit;
SetState(False);
end
else
begin
aqOInfo.CancelBatch();
SetState(True);
end;
end;
procedure TfrmOtherset.btnDelClick(Sender: TObject);
begin
if MessageBox(handle, '真的要删除此项目么?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
begin
Log.Write('删除信息[' + aqOInfo.FieldByName('sname').AsString + ']');
aqOInfo.Delete;
aqOInfo.UpdateBatch();
end;
end;
procedure TfrmOtherset.btnCloseClick(Sender: TObject);
begin
Close();
end;
procedure TfrmOtherset.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if aqOInfo.State in [dsInsert, dsEdit] then
begin
if MessageBox(Handle, '还有信息没有保存,确定要退出吗?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
begin
aqOInfo.CancelBatch();
CanClose := True;
end
else CanClose := False;
end
else CanClose := True;
end;
procedure TfrmOtherset.dsInfoDataChange(Sender: TObject; Field: TField);
begin
if not (aqOInfo.State in [dsInsert, dsEdit]) then
btnEdit.Enabled := aqOInfo.RecordCount <> 0
else btnEdit.Enabled := True;
btnDel.Enabled := aqOInfo.RecordCount <> 0;
end;
procedure TfrmOtherset.rbSortClick(Sender: TObject);
begin
SetSort(stSort);
end;
procedure TfrmOtherset.rbCapClick(Sender: TObject);
begin
SetSort(stCap);
end;
procedure TfrmOtherset.rbFolkClick(Sender: TObject);
begin
SetSort(stFolk);
end;
procedure TfrmOtherset.rbLevelClick(Sender: TObject);
begin
SetSort(stLevel);
end;
procedure TfrmOtherset.rbSpeClick(Sender: TObject);
begin
SetSort(stSpe);
end;
procedure TfrmOtherset.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Assigned(frmStaInfo) then
if frmStainfo.fraStaDetail.pcSta.ActivePageIndex = 0 then
frmStainfo.fraStaDetail.FillData;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -