📄 ygdagl.pas
字号:
unit ygdagl;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, ImgList, ToolWin, ExtCtrls,
LbButton, DB, DBTables, DBCtrls, Mask, ToolEdit, RXDBCtrl, DBCtrlsEh;
type
Tfrmygdagl = class(TForm)
CoolBar1: TCoolBar;
oToolBar: TToolBar;
ygaddButton: TToolButton;
ygDeleteButton: TToolButton;
PrintButton: TToolButton;
PrintviewButton: TToolButton;
ToolButton7: TToolButton;
ToolButton14: TToolButton;
ImageList: TImageList;
ygbmddButton: TToolButton;
Splitter1: TSplitter;
Panel1: TPanel;
bmmlView: TTreeView;
Panel2: TPanel;
Image1: TImage;
BitBtnSave: TLbButton;
BitBtnCancel: TLbButton;
ygxxQuery: TQuery;
ygdaDataSource: TDataSource;
BmmlQuery: TQuery;
Panel3: TPanel;
ScrollBox1: TScrollBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
ygbhDBEditEh: TDBEditEh;
ygxmDBEditEh: TDBEditEh;
DBComboBoxEh1: TDBComboBoxEh;
DBImage1: TDBImage;
DBNumberEditEh1: TDBNumberEditEh;
DBEditEh3: TDBEditEh;
DBDateTimeEditEh1: TDBDateTimeEditEh;
DBComboBoxEh2: TDBComboBoxEh;
DBDateTimeEditEh2: TDBDateTimeEditEh;
DBEditEh4: TDBEditEh;
DBComboBoxEh3: TDBComboBoxEh;
DBDateTimeEditEh3: TDBDateTimeEditEh;
DBEditEh5: TDBEditEh;
DBEditEh6: TDBEditEh;
DBEditEh7: TDBEditEh;
DBEditEh8: TDBEditEh;
DBEditEh9: TDBEditEh;
DBEditEh10: TDBEditEh;
Query1: TQuery;
Label20: TLabel;
zjmDBEditEh: TDBEditEh;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ToolButton14Click(Sender: TObject);
procedure BitBtnCancelClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ygbhDBEditEhChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure bmmlViewClick(Sender: TObject);
procedure BitBtnSaveClick(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure ygaddButtonClick(Sender: TObject);
procedure bmmlViewChange(Sender: TObject; Node: TTreeNode);
procedure ygDeleteButtonClick(Sender: TObject);
procedure ygbmddButtonClick(Sender: TObject);
private
{ Private declarations }
function dataverify(Verify_lx: string): Boolean; //数据校验事件
function datasave: Boolean; //数据保存函数
function Getmaxygbh: string; //员工编号生成器;
public
{ Public declarations }
end;
var
frmygdagl: Tfrmygdagl;
ygdagl_bjzt, ygdagl_ybh, ygdagl_bmbh: string;
firstNode: TTreeNode;
ygdagl_first: integer;
implementation
uses ygbmdd;
{$R *.dfm}
procedure Tfrmygdagl.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
frmygdagl := nil;
end;
procedure Tfrmygdagl.ToolButton14Click(Sender: TObject);
begin
Close;
end;
procedure Tfrmygdagl.BitBtnCancelClick(Sender: TObject);
begin
Close;
end;
procedure Tfrmygdagl.FormShow(Sender: TObject);
begin
if bmmlView.Items.Count <> 0 then
begin
bmmlView.Items[0].Selected := True;
end
else
begin
ygDeleteButton.Enabled := False;
ygbmddButton.Enabled := False;
end;
BitBtnSave.Enabled := False;
ygdagl_bjzt := 'ygdaedit';
if ygdagl_first = 1 then firstNode.Selected := True;
bmmlView.OnClick(sender);
end;
procedure Tfrmygdagl.ygbhDBEditEhChange(Sender: TObject);
begin
BitBtnSave.Enabled := True;
end;
procedure Tfrmygdagl.FormCreate(Sender: TObject);
var
pCode, yCode, pName, lsbl_bmbh, lsbl_ygbh, lsbl_ygxm: string;
MainNode, yNode, zNode, ygNode: TTreeNode;
begin
MainNode := TTreeNode.Create(bmmlView.Items);
yNode := TTreeNode.Create(bmmlView.Items);
zNode := TTreeNode.Create(bmmlView.Items);
ygdagl_first := 0;
bmmlView.Items.Clear;
with BmmlQuery do
begin
Prepare;
Open;
end;
BmmlQuery.first;
yCode := Trim(BmmlQuery.FieldByName('bm_bh').AsString);
bmmlView.Items.BeginUpdate;
while not bmmlQuery.eof do
begin
pCode := Trim(BmmlQuery.FieldByName('bm_bh').AsString);
pName := Trim(BmmlQuery.FieldByName('bm_mc').AsString);
lsbl_bmbh := pCode;
case length(pCode) of
3:
begin
MainNode := bmmlView.Items.AddChild(nil, pCode + ' ' + pName);
yNode := MainNode;
end;
6:
begin
pCode := Copy(pCode, 4, 3);
MainNode := bmmlView.Items.AddChild(yNode, pCode + ' ' + pName);
zNode := MainNode;
end;
9:
begin
pCode := Copy(pCode, 7, 3);
MainNode := bmmlView.Items.AddChild(zNode, pCode + ' ' + pName)
end;
end;
Mainnode.SelectedIndex := 16;
Mainnode.ImageIndex := 17;
with ygxxQuery do
begin
SQL.clear;
SQL.Add('select * from ygdasjk where Trim(yg_bmbh)=:ygcx_dqbh');
ParamByName('ygcx_dqbh').AsString := lsbl_bmbh;
Prepare;
open;
First;
if Trim(FieldByName('yg_bh').AsString) <> '' then
begin
while not eof do
begin
lsbl_ygbh := Trim(FieldByName('yg_bh').AsString);
lsbl_ygxm := Trim(FieldByName('yg_xm').AsString);
ygNode := bmmlView.Items.AddChild(MainNode, lsbl_ygbh + ' ' + lsbl_ygxm);
if ygdagl_first = 0 then
begin
firstNode := ygNode;
ygdagl_first := 1;
end;
ygNode.SelectedIndex := 19;
ygNode.ImageIndex := 19;
Next;
end;
end;
Close;
end;
bmmlQuery.Next;
end;
bmmlView.Items.EndUpdate;
BmmlQuery.Close;
with ygxxquery do
begin
SQL.Clear;
SQL.Add('select * from ygdasjk where yg_bh=:ygcx_ygbh');
RequestLive := True;
end;
end;
procedure Tfrmygdagl.bmmlViewClick(Sender: TObject);
var
lsbl_cxygbh, lsbl_bmbh, lsbl_bmbh2: string;
lsbl_word: integer;
lsbl_bmjb, lsbl_x: Integer;
lsbl_node: TTreeNode;
begin
LockWindowUpdate(handle);
ygdagl_bjzt := 'ygdaedit';
ygdagl_ybh := '';
BitBtnSave.Enabled := True;
if bmmlView.Selected <> nil then
begin
if bmmlView.Selected.ImageIndex = 19 then
begin
lsbl_cxygbh := bmmlView.Selected.Text;
lsbl_word := Pos(' ', lsbl_cxygbh);
lsbl_cxygbh := Copy(lsbl_cxygbh, 1, lsbl_word - 1);
with ygxxquery do
begin
Close;
ParamByName('ygcx_ygbh').AsString := lsbl_cxygbh;
Prepare;
open;
if FieldByName('yg_bh').AsString = '' then
begin
MessageDlg('没有找到此员工的详细信息,可能已被其他用户删除', mtError, [mbOk], 0);
Scrollbox1.Visible := False;
ygDeleteButton.Enabled := False;
ygbmddButton.Enabled := False;
end
else
begin
Scrollbox1.Visible := True;
ygDeleteButton.Enabled := True;
ygbmddButton.Enabled := True;
ygdagl_ybh := Trim(FieldByName('yg_bh').AsString);
ygdagl_bmbh := Trim(FieldByName('yg_bmbh').AsString);
end;
end;
end
else
begin
Scrollbox1.Visible := False;
ygDeleteButton.Enabled := False;
ygbmddButton.Enabled := False;
lsbl_node := bmmlView.Selected;
lsbl_bmjb := bmmlView.Selected.Level;
lsbl_bmbh := Trim(bmmlView.Selected.Text);
lsbl_word := Pos(' ', lsbl_bmbh);
lsbl_bmbh := Copy(lsbl_bmbh, 1, lsbl_word - 1);
for lsbl_x := 0 to lsbl_bmjb - 1 do
begin
lsbl_bmbh2 := Trim(lsbl_node.Parent.Text);
lsbl_word := Pos(' ', lsbl_bmbh2);
lsbl_bmbh2 := Copy(lsbl_bmbh2, 1, lsbl_word - 1);
lsbl_bmbh := lsbl_bmbh2 + lsbl_bmbh;
lsbl_node := lsbl_node.Parent;
end;
ygdagl_bmbh := lsbl_bmbh; //当前选中地区的编号
end;
end;
BitBtnSave.Enabled := False;
LockWindowUpdate(0);
end;
procedure Tfrmygdagl.BitBtnSaveClick(Sender: TObject);
var
lsbl_node: TTreeNode;
lsbl_text: string;
begin
if dataverify('11') = True then
begin
if datasave() = True then
begin
lsbl_text := Trim(ygbhDBEditEh.Text) + ' ' + Trim(ygxmDBEditEh.Text);
BitBtnSave.Enabled := False;
if ygdagl_bjzt = 'ygdaadd' then
begin
if bmmlView.selected.ImageIndex = 19 then
lsbl_Node := bmmlView.Items.AddChild(bmmlView.selected.Parent, lsbl_text)
else
lsbl_Node := bmmlView.Items.AddChild(bmmlView.selected, lsbl_text);
lsbl_Node.ImageIndex := 19;
lsbl_Node.SelectedIndex := 19;
ygaddButton.OnClick(Sender);
end;
if ygdagl_bjzt = 'ygdaedit' then
begin
bmmlView.Selected.text := lsbl_text;
end;
end;
end;
end;
function Tfrmygdagl.datasave: Boolean; //数据保存函数
begin
try
ygxxquery.Post;
Result := True;
except
MessageDlg('数据保存失败', mtError, [mbOk], 0);
Result := False;
end;
end;
function Tfrmygdagl.dataverify(Verify_lx: string): Boolean; //数据校验函数
var
lsbl_message: string;
begin
Result := True;
if (copy(Verify_lx, 1, 1) = '1') then
if ygbhDBEditEh.Text = '' then
begin
MessageDlg('员工编号不能为空', mtError, [mbOk], 0);
Result := False;
exit;
end;
if (copy(Verify_lx, 2, 1) = '1') then
if ygxmDBEditEh.Text = '' then
begin
MessageDlg('员工姓名不能为空', mtError, [mbOk], 0);
Result := False;
exit;
end;
if (ygdagl_bjzt = 'ygdaadd') or ((ygdagl_bjzt = 'ygdaedit') and (Trim(ygbhDBEditEh.Text) <> ygdagl_ybh)) then
begin
with query1 do
begin
SQL.Clear;
SQL.Add('select yg_bh,yg_xm from ygdasjk where Trim(yg_bh)=:ygbhcx_bh');
ParamByName('ygbhcx_bh').AsString := Trim(ygbhDBEditEh.Text);
Prepare;
open;
if FieldByName('yg_bh').AsString <> '' then
begin
lsbl_message := '已存在编号为【' + FieldByName('yg_bh').AsString + ' ';
lsbl_message := lsbl_message + FieldByName('yg_xm').AsString + '】的员工';
Messagedlg(lsbl_message, mtError, [mbOk], 0);
Close;
Result := False;
ygbhDBEditEh.Text := ygdagl_ybh;
ygbhDBEditEh.SetFocus;
ygbhDBEditEh.SelectAll;
exit;
end
else
begin
Close;
result := True;
end;
end;
end;
end;
procedure Tfrmygdagl.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
key := #0;
SelectNext(ActiveControl, True, True);
if ActiveControl is TDBEditEh then
begin
TDBEditEh(ActiveControl).Text := Trim(TDBEditEh(ActiveControl).Text);
TDBEditEh(ActiveControl).SelectAll;
end;
end;
end;
procedure Tfrmygdagl.ygaddButtonClick(Sender: TObject);
begin
ygdagl_bjzt := 'ygdaadd';
ygxxQuery.Append;
ygxxQuery.FieldByName('yg_bmbh').AsString := ygdagl_bmbh;
ygbhDBEditEh.text := Getmaxygbh();
ygbhDBEditEh.SelectAll;
BitBtnSave.Enabled := False;
Scrollbox1.Visible := True;
ygbhDBEditEh.SetFocus;
end;
function Tfrmygdagl.Getmaxygbh: string; //员工编号生成器;
var
lsbl_ygbh: string;
begin
with query1 do
begin
SQL.Clear;
SQL.Add('select max(yg_bh) as yg_maxbh from ygdasjk');
Prepare;
open;
if FieldByName('yg_maxbh').AsString <> '' then
begin
lsbl_ygbh := FieldByName('yg_maxbh').AsString;
lsbl_ygbh := inttostr(strtoint(lsbl_ygbh) + 1);
lsbl_ygbh := Copy('000000', 1, 6 - length(lsbl_ygbh)) + lsbl_ygbh;
Result := lsbl_ygbh
end
else
begin
Result := '000001';
end;
Close;
end;
end;
procedure Tfrmygdagl.bmmlViewChange(Sender: TObject; Node: TTreeNode);
begin
bmmlView.OnClick(Sender);
end;
procedure Tfrmygdagl.ygDeleteButtonClick(Sender: TObject);
var
lsbl_text: string;
begin
if Bmmlview.selected <> nil then
begin
lsbl_text := '确定要删除员工【' + Bmmlview.selected.Text + '】码?';
if Messagedlg(lsbl_text, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
BmmlView.Selected.Delete;
ygxxquery.Delete;
end;
end;
end;
procedure Tfrmygdagl.ygbmddButtonClick(Sender: TObject);
var
lsbl_word: integer;
lsbl_bmmc: string;
begin
if Scrollbox1.Visible = True then
begin
frmygbmdd := Tfrmygbmdd.Create(Self);
with frmygbmdd do
begin
lsbl_bmmc := BmmlView.Selected.Parent.Text;
lsbl_word := Pos(' ', lsbl_bmmc);
lsbl_bmmc := Copy(lsbl_bmmc, lsbl_word + 1, length(lsbl_bmmc));
Label1.Caption := '将员工【' + BmmlView.Selected.Text + '】从';
Edit1.Text := ygdagl_bmbh + ' ' + lsbl_bmmc;
ShowModal;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -