📄 udep.pas
字号:
unit udep;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMenu, StdCtrls, Mask, DBCtrls, Grids, DBGrids, DB, ADODB,
DBGridEh;
type
TfrmDep = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
dbedep: TDBEdit;
dbeDes: TDBEdit;
btnAdd: TButton;
btnEdit: TButton;
btnUp: TButton;
btnDown: TButton;
btnDel: TButton;
btnTrs: TButton;
btnClose: TButton;
dgDep: TDBGridEh;
dsdep: TDataSource;
aqdep: TADOQuery;
procedure btnEditClick(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure btnUpClick(Sender: TObject);
procedure btnDownClick(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 dsdepDataChange(Sender: TObject; Field: TField);
private
{ Private declarations }
procedure SetState(aState: Boolean = true);
public
{ Public declarations }
end;
var
frmDep: TfrmDep;
implementation
uses udata;
{$R *.dfm}
procedure TfrmDep.SetState(aState: Boolean);
begin
dbedep.ReadOnly := aState;
dbedes.ReadOnly := aState;
if aState = true then
begin
btnadd.Caption := '添 加';
btnEdit.Caption := '更 新';
btnUp.Visible := true;
btnDown.Visible := true;
btnDel.Visible := true;
dgDep.Enabled := true;
dbedep.Color := clSkyBlue;
dbeDes.Color := clSkyBlue;
end
else
begin
if aqDep.State = dsInsert then
btnadd.Caption := '提 交'
else
btnadd.Caption := '确 定';
btnedit.Caption := '取 消';
btnUp.Visible := false;
btnDown.Visible := false;
btnDel.Visible := false;
dgDep.Enabled := false;
dbeDep.SetFocus;
dbeDep.Color := clWindow;
dbeDes.Color := clWindow;
end;
end;
procedure TfrmDep.FormCreate(Sender: TObject);
begin
SetState(true);
end;
procedure TfrmDep.btnAddClick(Sender: TObject);
var
queryc, queryt: TADOQuery;
begin
if btnadd.Caption = '添 加' then
begin
aqdep.Append;
SetState(false);
end
else
begin
if dbedep.Text <> '' then
begin
if btnadd.Caption = '提 交' then
begin
queryc := TADOquery.Create(self);
queryc.Connection:= dmPer.acPer;
queryc.SQL.Text := 'select * from dept where dep="' + dbeDep.Text + '"' ;
queryc.open;
if not queryc.Eof then
begin
MessageBox(self.Handle, '此部门已存在!', '提示', mb_IconInformation + mb_Ok);
aqDep.Cancel;
aqDep.CancelBatch();
Abort;
end
else
begin
queryt := TADOquery.Create(nil);
Try
queryt.Connection:= dmper.acper;
queryt.SQL.Text := 'update dept set ornum=ornum+1';
queryt.ExecSQL;
finally
FreeAndNil(queryt);
end;
aqDep.Post;
aqDep.UpdateBatch();
SetState(true);
end;
end
else
begin
aqDep.Post;
aqDep.UpdateBatch();
SetState(true);
end;
end
else
begin
MessageBox(self.Handle, '请输入部门名!', '提示', mb_IconInformation + mb_Ok);
dbedep.SetFocus;
Abort;
end;
end;
end;
procedure TfrmDep.btnEditClick(Sender: TObject);
begin
if btnedit.Caption ='更 新' then
begin
aqDep.Edit;
SetState(false);
end
else
begin
aqDep.Cancel;
aqdep.CancelBatch();
SetState(true);
end;
end;
procedure TfrmDep.btnUpClick(Sender: TObject);
var
id, ornum: integer;
begin
id := aqdep.FieldByName('id').AsInteger;
ornum := aqdep.FieldByName('ornum').AsInteger - 1;
aqDep.Close;
aqDep.SQL.Clear;
aqDep.sql.add('update dept set [ornum]=ornum-1 where id=' + inttostr(id));
aqDep.ExecSQL;
aqDep.Close;
aqDep.SQL.Clear;
aqDep.sql.add('update dept set [ornum]=ornum+1 where id<>' + inttostr(id) + ' and ornum=' + inttostr(ornum));
aqDep.ExecSQL;
aqDep.Close;
aqDep.SQL.Clear;
aqDep.sql.Text := 'select * from dept order by ornum';
aqDep.Open;
aqDep.Locate('id', id, []);
end;
procedure TfrmDep.btnDownClick(Sender: TObject);
var
id, ornum: integer;
begin
id := aqDep.FieldByName('id').AsInteger;
ornum := aqDep.FieldByName('ornum').AsInteger + 1;
aqDep.Close;
aqDep.SQL.Clear;
aqDep.sql.add('update dept set [ornum]=ornum+1 where id=' + inttostr(id));
aqDep.ExecSQL;
aqDep.Close;
aqDep.SQL.Clear;
aqDep.sql.add('update dept set [ornum]=ornum-1 where id<>' + inttostr(id) + ' and ornum=' + inttostr(ornum));
aqDep.ExecSQL;
aqDep.Close;
aqDep.SQL.Clear;
aqDep.sql.Text := 'select * from dept order by ornum';
aqDep.Open;
aqDep.Locate('id', id, []);
end;
procedure TfrmDep.btnDelClick(Sender: TObject);
var
ornum: integer;
begin
if MessageBox(handle, '真的要删除此部门么?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
begin
ornum := aqDep.FieldByName('ornum').AsInteger;
aqDep.Delete;
aqDep.UpdateBatch();
aqDep.Close;
aqDep.SQL.Clear;
aqDep.sql.add('update dept set [ornum]=ornum-1 where ornum>' + inttostr(ornum));
aqDep.ExecSQL;
aqDep.Close;
aqDep.SQL.Clear;
aqDep.sql.Text := 'select * from dept order by ornum';
aqDep.Open;
end;
end;
procedure TfrmDep.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 TfrmDep.btnCloseClick(Sender: TObject);
begin
Close();
end;
procedure TfrmDep.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if aqDep.State in [dsInsert, dsEdit] then
begin
if MessageBox(self.Handle, '还有信息没有保存,确定要退出吗?', '提示', mb_IconQuestion + mb_YesNo) = idYes then
begin
aqDep.Cancel;
aqDep.CancelBatch();
CanClose := true;
end
else
CanClose := false;
end
else
CanClose := true;
end;
procedure TfrmDep.dsdepDataChange(Sender: TObject; Field: TField);
begin
if aqDep.RecNo = 1 then
btnup.Enabled := false
else
btnup.Enabled := true;
if aqDep.RecNo = aqDep.RecordCount then
btndown.Enabled := false
else
btndown.Enabled := true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -