📄 uoinfo.pas
字号:
unit uoinfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMenu, StdCtrls, Mask, DBCtrls, Grids, DBGrids, DB, ADODB,
DBGridEh;
type
TSortType = (stSort, stCap, stFolk, stLevel, stSpe);
TfrmOInfo = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
deSName: TDBEdit;
deDes: TDBEdit;
btnAdd: TButton;
btnEdit: TButton;
btnDel: TButton;
btnTrs: TButton;
btnClose: TButton;
dgInfo: TDBGridEh;
dsInfo: TDataSource;
aqOInfo: TADOQuery;
rbSort: TRadioButton;
rbCap: TRadioButton;
rbFolk: TRadioButton;
rbLevel: TRadioButton;
rbSpe: TRadioButton;
procedure btnEditClick(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure btnDelClick(Sender: TObject);
procedure btnTrsClick(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);
private
{ Private declarations }
procedure SetState(aState: Boolean = true);
procedure SetSort(aSortType: TSortType = stSort);
public
{ Public declarations }
end;
var
frmOInfo: TfrmOInfo;
implementation
uses udata, uglobal, ustainfo;
{$R *.dfm}
procedure TfrmOInfo.SetState(aState: Boolean);
begin
deSName.ReadOnly := aState;
deDes.ReadOnly := aState;
if aState = true then
begin
btnadd.Caption := '添 加';
btnEdit.Caption := '更 新';
btnDel.Visible := true;
dgInfo.Enabled := true;
dgInfo.Color := clSkyBlue;
dgInfo.Color := clSkyBlue;
deSName.Color := clSkyBlue;
deDes.Color := clSkyBlue;
end
else
begin
if aqOInfo.State = dsInsert then
btnAdd.Caption := '提 交'
else
btnAdd.Caption := '确 定';
btnEdit.Caption := '取 消';
btnDel.Visible := false;
dgInfo.Enabled := false;
deSName.SetFocus;
deSName.Color := clWindow;
deDes.Color := clWindow;
end;
end;
procedure TfrmOInfo.SetSort(aSortType: TSortType);
var
sFilter: string;
begin
if aqOInfo.State in [dsInsert, dsEdit] then
begin
aqOInfo.Cancel;
aqOInfo.CancelBatch();
SetState(true);
end;
case aSortType of
stSort:
begin
dgInfo.Columns[0].Title.Caption := '工 种';
Label2.Caption := '工种:';
sFilter := 'iflag=1';
end;
stCap:
begin
dgInfo.Columns[0].Title.Caption := '职 称';
Label2.Caption := '职称:';
sFilter := 'iflag=2';
end;
stFolk:
begin
dgInfo.Columns[0].Title.Caption := '民 族';
Label2.Caption := '民族:';
sFilter := 'iflag=3';
end;
stLevel:
begin
dgInfo.Columns[0].Title.Caption := '学 历';
Label2.Caption := '学历:';
sFilter := 'iflag=4';
end;
stSpe:
begin
dgInfo.Columns[0].Title.Caption := '专 业';
Label2.Caption := '专业:';
sFilter := 'iflag=5';
end;
end;
aqOInfo.Filtered := false;
aqOInfo.Filter := sFilter;
aqOInfo.Filtered := true;
end;
{以iflag字段标志分类: 1-工种, 2-积称, 3-民族, 4-学历, 5-专业}
procedure TfrmOInfo.FormCreate(Sender: TObject);
begin
dmPer.OpenQuery(aqOInfo, 'select sname, des, iflag from oinfo');
dsInfo.DataSet := aqOInfo;
SetState(true);
SetSort(stSort);
end;
procedure TfrmOInfo.btnAddClick(Sender: TObject);
var
queryc: TADOQuery;
begin
if btnadd.Caption = '添 加' then
begin
aqOInfo.Append;
SetState(false);
end
else
begin
if deSName.Text <> '' then
begin
if btnadd.Caption = '提 交' then
begin
queryc := TADOquery.Create(self);
queryc.Connection:= dmPer.acPer;
queryc.SQL.Text := 'select sname from oinfo where sname=' + QuotedStr(deSName.Text);
queryc.open;
if not queryc.Eof then
begin
MessageBox(self.Handle, '此项目已存在!', '提示', mb_IconInformation + mb_Ok);
aqOInfo.Cancel;
aqOInfo.CancelBatch();
Abort;
end
else
begin
if rbSort.Checked then
aqOInfo.FieldByName('iflag').AsInteger := 1
else if rbCap.Checked then
aqOInfo.FieldByName('iflag').AsInteger := 2
else if rbFolk.Checked then
aqOInfo.FieldByName('iflag').AsInteger := 3
else if rbLevel.Checked then
aqOInfo.FieldByName('iflag').AsInteger := 4
else
aqOInfo.FieldByName('iflag').AsInteger := 5;
aqOInfo.Post;
aqOInfo.UpdateBatch();
SetState(true);
end;
end
else
begin
aqOInfo.Post;
aqOInfo.UpdateBatch();
SetState(true);
end;
end
else
begin
MessageBox(self.Handle, '请输入类别名!', '提示', mb_IconInformation + mb_Ok);
deSName.SetFocus;
Abort;
end;
end;
end;
procedure TfrmOInfo.btnEditClick(Sender: TObject);
begin
if btnedit.Caption ='更 新' then
begin
aqOInfo.Edit;
SetState(false);
end
else
begin
aqOInfo.Cancel;
aqOInfo.CancelBatch();
SetState(true);
end;
end;
procedure TfrmOInfo.btnDelClick(Sender: TObject);
begin
if MessageBox(handle, '真的要删除此项目么?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
begin
aqOInfo.Delete;
aqOInfo.UpdateBatch();
end;
end;
procedure TfrmOInfo.btnTrsClick(Sender: TObject);
begin
if btntrs.Caption = '半透明' then
begin
self.AlphaBlend := true;
self.AlphaBlendValue := 125;
btntrs.Caption := '还 原';
end
else
begin
self.AlphaBlend := false;
btntrs.Caption := '半透明';
end;
end;
procedure TfrmOInfo.btnCloseClick(Sender: TObject);
begin
Close();
end;
procedure TfrmOInfo.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if aqOInfo.State in [dsInsert, dsEdit] then
begin
if MessageBox(self.Handle, '还有信息没有保存,确定要退出吗?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
begin
aqOInfo.Cancel;
aqOInfo.CancelBatch();
CanClose := true;
end
else
CanClose := false;
end
else
CanClose := true;
end;
procedure TfrmOInfo.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 TfrmOInfo.rbSortClick(Sender: TObject);
begin
SetSort(stSort);
end;
procedure TfrmOInfo.rbCapClick(Sender: TObject);
begin
SetSort(stCap);
end;
procedure TfrmOInfo.rbFolkClick(Sender: TObject);
begin
SetSort(stFolk);
end;
procedure TfrmOInfo.rbLevelClick(Sender: TObject);
begin
SetSort(stLevel);
end;
procedure TfrmOInfo.rbSpeClick(Sender: TObject);
begin
SetSort(stSpe);
end;
procedure TfrmOInfo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Assigned(frmStaInfo) then
if frmStainfo.pcSta.ActivePageIndex = 0 then
begin
frmStainfo.FillData;
frmStainfo.tsStainfoShow(Sender);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -