?? tj_gxdw.pas
字號(hào):
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('確實(shí)要?jiǎng)h除嗎?', 2) = mrNo then
Exit;
if Test_Can_Del = False then Exit; {測(cè)試是否能夠刪除}
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;
{-------------------------------------------------------------------------------}
{判斷能否進(jìn)行刪除}
function Tfrm_gxdw.Test_Can_Del: Boolean;
var
l_gkgx: string;
begin
{如果是直接下級(jí)關(guān)系,則判斷是否存在下級(jí)關(guān)系}
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('當(dāng)前單位存在下級(jí)關(guān)系,不能刪除!');
Result := False;
Exit;
end;
end;
end;
{如果是本局,則判斷是否存在其他任何與本局有關(guān)系的單位存在,如果存在一個(gè),則不能刪除}
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('已經(jīng)存在與其相關(guān)的單位,不能刪除本局!');
Result := False;
Exit;
end;
end;
end;
Result := True;
end;
{-------------------------------------------------------------------------------}
{對(duì)數(shù)據(jù)庫(kù)進(jìn)行保存}
procedure Tfrm_gxdw.bbtn_SaveClick(Sender: TObject);
var
Modify_PXM: Boolean;
l_DWDM: string;
begin
if Test_NULL = False then Exit; {測(cè)試是否存在非空必錄項(xiàng)}
if Test_DWDM = False then Exit; {判斷輸入的單位代碼是否存在}
if Test_GX = False then Exit; {測(cè)試是否指定與本局關(guān)系}
if Test_Exist_BJ = False then Exit; {測(cè)試是否存在本局}
if Test_Exist_ZJSJ = False then Exit; {測(cè)試是否存在直接上級(jí)}
Fit_PXM; {調(diào)整排序碼}
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('保存出錯(cuò)!');
end;
l_DWDM := qry_Table.FieldByName('DWDM').AsString;
Set_State(0);
Refresh_Data(l_DWDM);
Ever_Change := True;
end;
{-------------------------------------------------------------------------------}
{取消保存,給出提示,然后進(jìn)入瀏覽狀態(tài)}
procedure Tfrm_gxdw.bbtn_CancelClick(Sender: TObject);
begin
if CHQMsgBox('確實(shí)要取消修改嗎?', 2) = mrNo then
Exit;
qry_Table.CancelUpdates;
qry_TableAfterScroll(nil);
Set_State(0);
end;
{刷新數(shù)據(jù)}
procedure Tfrm_gxdw.Refresh_Data(l_DWDM: string);
begin
with qry_Table do
begin
Close;
Open;
Locate('DWDM', l_DWDM, [loCaseInsensitive]);
end;
end;
{==========================設(shè)置一些相互依存關(guān)系=================================}
{如果是直接下級(jí),則需要填寫歸口關(guān)系,生成默認(rèn)的歸口關(guān)系,同時(shí)還需要判斷能否取消歸口關(guān)系}
procedure Tfrm_gxdw.dbck_ZJXJClick(Sender: TObject);
var
l_gkgx: string;
begin
if Edit_State = 0 then Exit; {如果處于瀏覽狀態(tài),則不需要進(jìn)行任何操作} {}
{處于修改狀態(tài),需要自動(dòng)生成歸口關(guān)系或者判斷歸口關(guān)系}
if dbck_ZJXJ.Checked = True then
begin
{如果原來存在歸口關(guān)系,則顯示出來,否則需要進(jìn)行判斷,生成默認(rèn)值}
if _GKGX <> '' then
begin
qry_Table.Edit;
qry_Table.FieldByName('GKGX').AsString := _GKGX;
edt_GKGX.Text := _GKMC;
end
else
begin
{動(dòng)態(tài)產(chǎn)生歸口關(guān)系}
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,則表示可能含有下級(jí),如果本級(jí)進(jìn)行了修改,則需要處理下級(jí)關(guān)系}
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('已經(jīng)存在下級(jí)關(guān)系,不能再進(jìn)行設(shè)置!');
qry_Table.Edit;
qry_Table.FieldByName('ZJXJ').AsString := '1';
Exit;
end;
end;
{符合修改條件了,進(jìn)行修改}
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;
{生成默認(rèn)的歸口關(guān)系}
bbtn_gkgx.Enabled := True;
end
else
bbtn_gkgx.Enabled := False;
end;
{-------------------------------------------------------------------------------}
{產(chǎn)生默認(rèn)的歸口關(guān)系}
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;
{直接上級(jí)}
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;
{上級(jí)發(fā)貨}
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;
{供應(yīng)商}
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;
{集郵業(yè)務(wù)}
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;
{零枚業(yè)務(wù)}
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;
{發(fā)貨對(duì)象}
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.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -