📄 tj_gxdw.pas
字号:
bbtn_gkgx.Enabled := True
end;
procedure Tfrm_gxdw.bbtn_AddClick(Sender: TObject);
begin
Set_State(1);
qry_Table.CancelUpdates;
qry_Table.Append;
with qry_Table do
begin
FieldByName('BJ').AsString := '0';
FieldByName('ZJSJ').AsString := '0';
FieldByName('SJFH').AsString := '0';
FieldByName('ZJXJ').AsString := '0';
FieldByName('KH').AsString := '0';
FieldByName('GYS').AsString := '0';
FieldByName('JYYW').AsString := '0';
FieldByName('TXYW').AsString := '0';
FieldByName('FHDX').AsString := '0';
FieldByName('PXM').AsInteger := Create_Default_PXM;
end;
end;
{删除按钮}
procedure Tfrm_gxdw.bbtn_DelClick(Sender: TObject);
begin
if qry_Table.IsEmpty = True then Exit;
rb_ViewTable.Checked := True;
if CHQMsgBox('确实要删除吗?', 2) = mrNo then
Exit;
if Test_Can_Del = False then Exit; {测试是否能够删除}
qry_Table.Database.StartTransaction;
try
Adjust_PXM(2);
qry_Table.Delete;
qry_Table.ApplyUpdates;
qry_Table.Database.Commit;
Ever_Change := True;
except
if qry_Table.Database.InTransaction then qry_Table.Database.Rollback;
CHQMsgBox('删除失败!');
end;
Refresh_Data('');
end;
{-------------------------------------------------------------------------------}
{判断能否进行删除}
function Tfrm_gxdw.Test_Can_Del: Boolean;
var
l_gkgx: string;
begin
{如果是直接下级关系,则判断是否存在下级关系}
if qry_Table.FieldByName('ZJXJ').AsString = '1' then
begin
l_gkgx := qry_Table.FieldByName('GKGX').AsString;
if Copy(l_gkgx, 4, 3) = '000' then
with qry_Tmp do
begin
Close;
SQL.Text := 'Select Count(DWDM) as l_Count From TGS_GXDWSJB where SubStr(GKGX,4,3)<>''000'' and SubStr(GKGX,1,3)=''' + Copy(l_gkgx, 1, 3) + '''';
Open;
if FieldByName('l_Count').AsInteger > 0 then
begin
CHQMsgBox('当前单位存在下级关系,不能删除!');
Result := False;
Exit;
end;
end;
end;
{如果是本局,则判断是否存在其他任何与本局有关系的单位存在,如果存在一个,则不能删除}
if qry_Table.FieldByName('BJ').AsString = '1' then
begin
with qry_Tmp do
begin
Close;
SQL.Text := 'Select Count(DWDM) as l_Count From TGS_GXDWSJB where DWDM>''0''';
Open;
if FieldByName('l_Count').AsInteger > 1 then
begin
CHQMsgBox('已经存在与其相关的单位,不能删除本局!');
Result := False;
Exit;
end;
end;
end;
Result := True;
end;
{-------------------------------------------------------------------------------}
{对数据库进行保存}
procedure Tfrm_gxdw.bbtn_SaveClick(Sender: TObject);
var
Modify_PXM: Boolean;
l_DWDM: string;
begin
if Test_NULL = False then Exit; {测试是否存在非空必录项}
if Test_DWDM = False then Exit; {判断输入的单位代码是否存在}
if Test_GX = False then Exit; {测试是否指定与本局关系}
if Test_Exist_BJ = False then Exit; {测试是否存在本局}
if Test_Exist_ZJSJ = False then Exit; {测试是否存在直接上级}
Fit_PXM; {调整排序码}
Modify_PXM := True;
try
if qry_Table.FieldByName('PXM').OldValue = qry_Table.FieldByName('PXM').AsInteger then
Modify_PXM := False;
except
end;
qry_Table.Database.StartTransaction;
try
if Modify_PXM = True then
if Edit_State = 1 then
Adjust_PXM(1)
else
Adjust_PXM(0);
qry_Table.ApplyUpdates;
qry_Table.Database.Commit;
except
if qry_Table.Database.InTransaction then
qry_Table.Database.Rollback;
CHQMsgBox('保存出错!');
end;
l_DWDM := qry_Table.FieldByName('DWDM').AsString;
Set_State(0);
Refresh_Data(l_DWDM);
Ever_Change := True;
end;
{-------------------------------------------------------------------------------}
{取消保存,给出提示,然后进入浏览状态}
procedure Tfrm_gxdw.bbtn_CancelClick(Sender: TObject);
begin
if CHQMsgBox('确实要取消修改吗?', 2) = mrNo then
Exit;
qry_Table.CancelUpdates;
qry_TableAfterScroll(nil);
Set_State(0);
end;
{刷新数据}
procedure Tfrm_gxdw.Refresh_Data(l_DWDM: string);
begin
with qry_Table do
begin
Close;
Open;
Locate('DWDM', l_DWDM, [loCaseInsensitive]);
end;
end;
{==========================设置一些相互依存关系=================================}
{如果是直接下级,则需要填写归口关系,生成默认的归口关系,同时还需要判断能否取消归口关系}
procedure Tfrm_gxdw.dbck_ZJXJClick(Sender: TObject);
var
l_gkgx: string;
begin
if Edit_State = 0 then Exit; {如果处于浏览状态,则不需要进行任何操作} {}
{处于修改状态,需要自动生成归口关系或者判断归口关系}
if dbck_ZJXJ.Checked = True then
begin
{如果原来存在归口关系,则显示出来,否则需要进行判断,生成默认值}
if _GKGX <> '' then
begin
qry_Table.Edit;
qry_Table.FieldByName('GKGX').AsString := _GKGX;
edt_GKGX.Text := _GKMC;
end
else
begin
{动态产生归口关系}
qry_Table.Edit;
qry_Table.FieldByName('GKGX').AsString := Create_Default_GKGX;
with qry_Tmp do
begin
Close;
SQL.Text := 'Select DWMC From TGS_GXDWSJB where BJ=''1''';
Open;
edt_GKGX.Text := FieldByName('DWMC').AsString;
end;
_GKGX := qry_Table.FieldByName('GKGX').AsString;
_GKMC := edt_GKGX.Text;
end;
end
else
begin
{如果原始代码后三位为0,则表示可能含有下级,如果本级进行了修改,则需要处理下级关系}
l_gkgx := qry_Table.FieldByName('GKGX').AsString;
if Copy(l_gkgx, 4, 3) = '000' then
with qry_Tmp do
begin
Close;
SQL.Text := 'Select Count(*) as l_Count From TGS_GXDWSJB where SubStr(GKGX,4,3)<>''000'' and SubStr(GKGX,1,3)=''' + Copy(l_gkgx, 1, 3) + '''';
Open;
if FieldByName('l_Count').AsInteger > 0 then
begin
CHQMsgBox('已经存在下级关系,不能再进行设置!');
qry_Table.Edit;
qry_Table.FieldByName('ZJXJ').AsString := '1';
Exit;
end;
end;
{符合修改条件了,进行修改}
qry_Table.Edit;
qry_Table.FieldByName('GKGX').AsString := '';
edt_GKGX.Text := '';
end;
if dbck_ZJXJ.Checked = True then
begin
with qry_Table do
begin
Edit;
FieldByName('BJ').AsString := '0';
FieldByName('ZJSJ').AsString := '0';
FieldByName('SJFH').AsString := '0';
FieldByName('KH').AsString := '0';
FieldByName('GYS').AsString := '0';
end;
{生成默认的归口关系}
bbtn_gkgx.Enabled := True;
end
else
bbtn_gkgx.Enabled := False;
end;
{-------------------------------------------------------------------------------}
{产生默认的归口关系}
function Tfrm_gxdw.Create_Default_GKGX: string;
const
Three_Zero = '000';
var
i: Integer;
Tmp_Str: string;
begin
with qry_Tmp do
begin
Close;
SQL.Text := 'Select GKGX From TGS_GXDWSJB Where SubStr(GKGX,4,3)=''000''';
Open;
for i := 1 to 999 do
begin
Tmp_Str := Copy(Three_Zero, 1, 3 - Length(IntToStr(i))) + IntToStr(i) + '000';
First;
while not Eof do
begin
if FieldByName('GKGX').AsString = Tmp_Str then
break;
Next;
end;
if Eof then Break;
end;
Result := Tmp_Str;
end;
end;
{本局}
procedure Tfrm_gxdw.dbck_BJClick(Sender: TObject);
begin
if (dbck_BJ.Checked = True) and (Edit_State <> 0) then
with qry_Table do
begin
Edit;
FieldByName('ZJSJ').AsString := '0';
FieldByName('SJFH').AsString := '0';
FieldByName('ZJXJ').AsString := '0';
FieldByName('KH').AsString := '0';
FieldByName('GYS').AsString := '0';
FieldByName('JYYW').AsString := '0';
FieldByName('TXYW').AsString := '0';
FieldByName('FHDX').AsString := '0';
end;
end;
{直接上级}
procedure Tfrm_gxdw.dbck_ZJSJClick(Sender: TObject);
begin
if (dbck_ZJSJ.Checked = True) and (Edit_State <> 0) then
with qry_Table do
begin
Edit;
FieldByName('BJ').AsString := '0';
FieldByName('SJFH').AsString := '0';
FieldByName('ZJXJ').AsString := '0';
FieldByName('KH').AsString := '0';
FieldByName('GYS').AsString := '0';
FieldByName('JYYW').AsString := '0';
FieldByName('TXYW').AsString := '0';
FieldByName('FHDX').AsString := '0';
end;
end;
{上级发货}
procedure Tfrm_gxdw.dbck_SJFHClick(Sender: TObject);
begin
if (dbck_SJFH.Checked = True) and (Edit_State <> 0) then
with qry_Table do
begin
Edit;
FieldByName('BJ').AsString := '0';
FieldByName('ZJSJ').AsString := '0';
FieldByName('ZJXJ').AsString := '0';
FieldByName('KH').AsString := '0';
FieldByName('GYS').AsString := '0';
FieldByName('JYYW').AsString := '0';
FieldByName('TXYW').AsString := '0';
FieldByName('FHDX').AsString := '0';
end;
end;
{客户}
procedure Tfrm_gxdw.dbck_KHClick(Sender: TObject);
begin
if (dbck_KH.Checked = True) and (Edit_State <> 0) then
with qry_Table do
begin
Edit;
FieldByName('BJ').AsString := '0';
FieldByName('ZJSJ').AsString := '0';
FieldByName('SJFH').AsString := '0';
FieldByName('ZJXJ').AsString := '0';
end;
end;
{供应商}
procedure Tfrm_gxdw.dbck_GYSClick(Sender: TObject);
begin
if (dbck_GYS.Checked = True) and (Edit_State <> 0) then
with qry_Table do
begin
Edit;
FieldByName('BJ').AsString := '0';
FieldByName('ZJSJ').AsString := '0';
FieldByName('SJFH').AsString := '0';
FieldByName('ZJXJ').AsString := '0';
end;
end;
{集邮业务}
procedure Tfrm_gxdw.dbck_JYYWClick(Sender: TObject);
begin
if (dbck_JYYW.Checked = True) and (Edit_State <> 0) then
if (dbck_BJ.Checked = True) or (dbck_ZJSJ.Checked = True) or (dbck_SJFH.Checked = True) then
begin
qry_Table.Edit;
qry_Table.FieldByName('JYYW').AsString := '0';
end;
end;
{零枚业务}
procedure Tfrm_gxdw.dbck_TXYWClick(Sender: TObject);
begin
if (dbck_TXYW.Checked = True) and (Edit_State <> 0) then
if (dbck_BJ.Checked = True) or (dbck_ZJSJ.Checked = True) or (dbck_SJFH.Checked = True) then
begin
qry_Table.Edit;
qry_Table.FieldByName('TXYW').AsString := '0';
end;
end;
{发货对象}
procedure Tfrm_gxdw.dbck_FHDXClick(Sender: TObject);
begin
if (dbck_FHDX.Checked = True) and (Edit_State <> 0) then
if (dbck_BJ.Checked = True) or (dbck_ZJSJ.Checked = True) or (dbck_SJFH.Checked = True) then
begin
qry_Table.Edit;
qry_Table.FieldByName('FHDX').AsString := '0';
end;
end;
procedure Tfrm_gxdw.dbe_MKeyPress(Sender: TObject; var Key: Char);
begin
if Key = Chr(VK_RETURN) then
begin
PostMessage(Handle, WM_KEYDOWN, VK_TAB, MakeLong(0, MapVirtualKey(VK_TAB, 0)));
PostMessage(Handle, WM_KEYUP, VK_TAB, MakeLong(1, MapVirtualKey(VK_TAB, 0) or $C000));
// Perform(WM_KEYDOWN, VK_TAB, MakeLong(0, MapVirtualKey(VK_TAB, 0)));
// Perform(WM_KEYUP, VK_TAB, MakeLong(1, MapVirtualKey(VK_TAB, 0) or $C000));
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -