?? ckjh_jjw.pas
字號(hào):
qry_Detail.FieldByName('JJ').AsFloat := FieldByName('JJ').AsFloat / 100;
qry_Detail.FieldByName('ZK').AsString := FieldByName('ZK').AsString;
if Trim(FieldByName('XJ').AsString) <> '' then
qry_Detail.FieldByName('XJ').AsFloat := FieldByName('XJ').AsFloat / 100;
if Trim(FieldByName('JSJ').AsString) <> '' then
qry_Detail.FieldByName('JSJ').AsFloat := FieldByName('JSJ').AsFloat / 100;
qry_Detail.FieldByName('FPSL_Old').AsFloat := 0;
qry_Detail.FieldByName('FPSL').AsFloat := 0;
if qry_Detail.State in [dsEdit, dsInsert] then
qry_Detail.Post;
VL_CanPost := True;
end;
Next;
end;
end;
end;
{-------------------------------------------------------------------------------}
{取得該明細(xì)中所有票品的的庫(kù)存,并且顯示}
procedure TFrm_CKJH_JJW.pgc_JYChange(Sender: TObject);
begin
if pgc_JY.ActivePageIndex = 0 then
Exit;
Get_PPKCInfo; {得到庫(kù)存信息}
qry_Detail.AfterScroll(nil);
end;
{-------------------------------------------------------------------------------}
{雙擊顯示詳細(xì)信息}
procedure TFrm_CKJH_JJW.dbg_ListDblClick(Sender: TObject);
begin
pgc_JY.ActivePageIndex := 1;
Get_PPKCInfo; {得到庫(kù)存信息}
qry_Detail.AfterScroll(nil);
end;
{-------------------------------------------------------------------------------}
{得到當(dāng)前票品庫(kù)存信息}
procedure TFrm_CKJH_JJW.Get_PPKCInfo;
var
l_Mark: TBookMark;
begin
{}
if qry_Detail.IsEmpty then
Exit;
if VL_PPDMList.Count > 0 then
Exit;
with qry_Detail do
try
AfterScroll := nil;
DisableControls;
l_Mark := GetBookmark;
First;
while not Eof do
begin
VL_PPDMList.Add(FieldByName('PPDM').AsString);
VL_PPKCList.Add(FloatToStr(PS_GetSYTS(FieldByName('KFDM').AsString, FieldByName('PPDM').AsString, FieldByName('JJ').AsFloat * 100, qry_Detail.FieldByName('CKJHDH').AsString)));
Next;
end;
finally
GotoBookmark(l_Mark);
FreeBookmark(l_Mark);
EnableControls;
AfterScroll := qry_DetailAfterScroll;
end;
end;
{-------------------------------------------------------------------------------}
{簽批該計(jì)劃分配單}
procedure TFrm_CKJH_JJW.bbtn_QPClick(Sender: TObject);
var
l_Tmp: String;
begin
if qry_list.IsEmpty then
Exit;
{YJ}
if edt_PZR.Text = '' then
begin
Application.MessageBox('沒有輸入簽批人,無(wú)法繼續(xù)!', '提示', MB_OK + MB_ICONINFORMATION);
Exit;
end;
if bbtn_Save.Enabled then
begin
Application.MessageBox(Pchar('該計(jì)劃分配單正在編輯狀態(tài),不能簽批!'), '提示', 48 + mb_ok);
Exit;
end;
if not (qry_List.FieldByName('ZT').AsString = '0') then
begin
Application.MessageBox(Pchar('該計(jì)劃分配單已經(jīng)簽批,不能再次簽批!'), '提示', 48 + mb_ok);
Exit;
end;
{詢問}
if Application.MessageBox('是否要簽批該出庫(kù)計(jì)劃單?', '詢問', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = mrNo then
Exit;
try
{集郵票出庫(kù)計(jì)劃單表TYS_TXPCKJHDB 的ZT為2-已簽批}
{集郵票出庫(kù)計(jì)劃單表TYS_JYPCKJHDB 的ZT為2-已簽批}
with qry_tmp do
begin
Close;
SQL.Text := 'update TYS_JYCKJHDB set ZT=''2'', PZR=' + QuotedStr(edt_PZR.Text) +
' where CKJHDH =' + QuotedStr(qry_List.FieldByName('CKJHDH').AsString);
ExecSQL;
end;
except
Application.MessageBox(Pchar('簽批出庫(kù)計(jì)劃單時(shí)發(fā)生錯(cuò)誤!'), '提示', 48 + mb_ok);
Exit;
end;
{刷新}
l_Tmp := VL_CKJHDH;
bbtn_Search.Click;
qry_List.Locate('CKJHDH', l_Tmp, []);
end;
{-------------------------------------------------------------------------------}
{取消簽批}
procedure TFrm_CKJH_JJW.bbtn_CancelQPClick(Sender: TObject);
var
l_Tmp: String;
begin
if qry_list.IsEmpty then
Exit;
if bbtn_Save.Enabled then
begin
Application.MessageBox(Pchar('該計(jì)劃分配單正在編輯狀態(tài),不能取消簽批!'), '提示', 48 + mb_ok);
Exit;
end;
if not (qry_List.FieldByName('ZT').AsString = '2') then
begin
Application.MessageBox(Pchar('該計(jì)劃分配單未簽批或者已經(jīng)處理,不能取消簽批!'), '提示', 48 + mb_ok);
Exit;
end;
{詢問}
if Application.MessageBox('是否要取消已經(jīng)簽批該計(jì)劃單?', '詢問', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = mrNo then
Exit;
try
{集郵票出庫(kù)計(jì)劃單表TYS_JYPCKJHDB 的ZT為0-未簽批}
with qry_tmp do
begin
Close;
SQL.Text := 'update TYS_JYCKJHDB set ZT=''0'', PZR=' + QuotedStr('') +
' where CKJHDH =' + QuotedStr(qry_List.FieldByName('CKJHDH').AsString);
ExecSQL;
end;
except
Application.MessageBox(Pchar('取消簽批出庫(kù)計(jì)劃單時(shí)發(fā)生錯(cuò)誤!'), '提示', 48 + mb_ok);
Exit;
end;
{刷新}
l_Tmp := VL_CKJHDH;
bbtn_Search.Click;
qry_List.Locate('CKJHDH', l_Tmp, []);
end;
{-------------------------------------------------------------------------------}
{把原來的打印抄過來了,算法很奇怪...}
procedure TFrm_CKJH_JJW.bbtn_PrintClick(Sender: TObject);
var
StrSQL: string;
begin
if qry_List.IsEmpty then
Exit;
if VL_CKJHDH = '' then
begin
Application.MessageBox('請(qǐng)選擇分配單號(hào)!', '提示', mb_Ok + MB_ICONINFORMATION);
Exit;
end;
Application.CreateForm(TFrm_RichEdit, Frm_RichEdit);
Application.CreateForm(TCKJHDCX_RPT, CKJHDCX_RPT);
with CKJHDCX_RPT, Frm_RichEdit do
try
StrSQL := 'select ROWNUM, A.CKJHDH, A.CKXZ, A.ZBR, A.PZR,A.ZDRQ, A.BZ ,B.DWMC, B.PPMC,C.ZH,B.XJ/100 XJ, DECODE(B.ZK,0,B.JSJ/100,B.ZK) ZK, B.JSJ/100 JSJ,';
StrSQL := StrSQL + ' B.FPSL,decode(JSJ,0,B.ZK*B.XJ*B.FPSL/10000, B.JSJ*B.FPSL/100) JE FROM TYS_JYCKJHDB A,TYS_JYCKJHDPPB B,TB_YZPPXXB C where A.CKJHDH = B.CKJHDH and B.PPDM=C.TDM AND A.CKJHDH =''' + VL_CKJHDH + '''';
Qry_Print.SQL.Text := StrSQL;
Qry_Print.Open;
QRLabel12.Caption := '集郵票';
QRLabel20.Caption := FormatDateTime('yyyy"年"mm"月"dd"日"', StrToDate(Qry_Print.fieldByName('zdrq').AsString));
if CHQMsgBox('是否采用套打?', 2) = IDYES then
Tao_Print_Flag := True
else
Tao_Print_Flag := False;
DetailLines := 0;
Prepare;
try
QRLabel19.Caption := IntToStr(QRPrinter.PageCount);
finally
QRPrinter.Free;
end;
QRPrinter := nil;
Preview;
finally
CKJHDCX_RPT.Destroy;
Frm_RichEdit.Destroy;
end;
end;
{-------------------------------------------------------------------------------}
{對(duì)不同狀態(tài)的分配但,以不同的顏色顯示}
procedure TFrm_CKJH_JJW.dbg_ListDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
dbg_List.Canvas.Brush.Color := lbl_Color_0.Color;
try
if not qry_List.IsEmpty then
case qry_List.FieldByName('ZT').AsInteger of
0: dbg_List.Canvas.Brush.Color := lbl_Color_0.Color; {正常}
1, 3: dbg_List.Canvas.Brush.Color := lbl_Color_1.Color; {已經(jīng)處理}
2: dbg_List.Canvas.Brush.Color := lbl_Color_2.Color; {已經(jīng)簽批}
end;
except
end;
if gdSelected in State then
begin
dbg_List.Canvas.Brush.Color := clNavy;
dbg_List.Canvas.Font.Color := clWhite;
end;
dbg_List.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
procedure TFrm_CKJH_JJW.qry_DetailZKSetText(Sender: TField;
const Text: String);
var
l_SetTextEvent: TFieldSetTextEvent;
begin
l_SetTextEvent := qry_DetailZK.OnSetText;
qry_DetailZK.OnSetText := nil; {防止用鼠標(biāo)點(diǎn)擊其他記錄時(shí)遞歸調(diào)用}
if Trim(Text) = '' then
begin
Sender.AsString := Text;
qry_DetailZK.OnSetText := l_SetTextEvent; {防止用鼠標(biāo)點(diǎn)擊其他記錄時(shí)遞歸調(diào)用}
Exit;
end
else {結(jié)算價(jià)的互斥}
qry_Detail.FieldByName('JSJ').AsString := '0';
try
if (StrToFloat(Text) >= 1000) or (StrToFloat(Text) < 0) then
Abort; {觸發(fā)abort異常}
Sender.AsString := Text;
{用折扣計(jì)算出結(jié)算金額}
with qry_Detail do
begin
Edit;
if (FieldByName('ZK').AsString <> '') and (FieldByName('FPSL').AsString <> '')
and (FieldByName('XJ').AsString <> '') then
FieldByName('JSJE').AsFloat := (FieldByName('ZK').AsFloat / 100) * FieldByName('FPSL').AsInteger
* FieldByName('XJ').AsFloat;
if VL_CanPost then
Post;
end;
except
Application.MessageBox('所輸入的折扣必須合法!', '提示', MB_ICONINFORMATION + mb_ok);
qry_DetailZK.OnSetText := l_SetTextEvent; {防止用鼠標(biāo)點(diǎn)擊其他記錄時(shí)遞歸調(diào)用}
Abort;
end;
qry_DetailZK.OnSetText := l_SetTextEvent; {防止用鼠標(biāo)點(diǎn)擊其他記錄時(shí)遞歸調(diào)用}
end;
procedure TFrm_CKJH_JJW.qry_DetailJSJSetText(Sender: TField;
const Text: String);
var
l_Text: string;
l_SetTextEvent: TFieldSetTextEvent;
begin
l_SetTextEvent := qry_DetailJSJ.OnSetText;
qry_DetailJSJ.OnSetText := nil; {防止用鼠標(biāo)點(diǎn)擊其他記錄時(shí)遞歸調(diào)用}
l_Text := Text;
if Trim(Text) = '' then
begin
Sender.AsString := Text;
qry_DetailJSJ.OnSetText := l_SetTextEvent; {防止用鼠標(biāo)點(diǎn)擊其他記錄時(shí)遞歸調(diào)用}
Exit;
end
else {和折扣的互斥}
qry_Detail.FieldByName('ZK').AsString := '0';
try
if (StrToFloat(l_Text) >= 1000) or (StrToFloat(l_Text) < 0) then
Abort; {觸發(fā)abort異常}
Sender.AsFloat := StrToFloat(Text);
with qry_Detail do
begin
Edit;
{用結(jié)算價(jià)計(jì)算出結(jié)算金額}
if (FieldByName('JSJ').AsString <> '') and (FieldByName('FPSL').AsString <> '') then
FieldByName('JSJE').AsFloat := FieldByName('JSJ').AsFloat * FieldByName('FPSL').AsInteger;
if VL_CanPost then
Post;
end;
except
Application.MessageBox('所輸入的結(jié)算價(jià)必須合法!', '提示', MB_ICONINFORMATION + mb_ok);
qry_DetailJSJ.OnSetText := l_SetTextEvent; {防止用鼠標(biāo)點(diǎn)擊其他記錄時(shí)遞歸調(diào)用}
Abort;
end;
qry_DetailJSJ.OnSetText := l_SetTextEvent; {防止用鼠標(biāo)點(diǎn)擊其他記錄時(shí)遞歸調(diào)用}
end;
procedure TFrm_CKJH_JJW.dbgEh_DetailGetFooterParams(Sender: TObject;
DataCol, Row: Integer; Column: TColumnEh; AFont: TFont;
var Background: TColor; var Alignment: TAlignment; State: TGridDrawState;
var Text: String);
begin
if Trim(Text) = '' then
Exit;
try
if (DataCol = 7) or (DataCol = 8) then {出庫(kù)總金額和結(jié)算金額以元顯示}
Text := FormatFloat('¥#,##0.000', StrToFloat(Text))
else if DataCol = 6 then
Text := FormatFloat('#,##0', StrToFloat(Text));
except
end;
end;
procedure TFrm_CKJH_JJW.qry_DetailJJGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
if Trim(Sender.AsString) = '' then
Exit;
try
if DisplayText then {顯示狀態(tài)}
begin
if Sender.AsString <> '' then
Text := FormatFloat('¥#,##0.000', Sender.AsFloat);
end
else {輸入狀態(tài)}
Text := FormatFloat('#0.##', Sender.AsFloat)
except
end;
end;
procedure TFrm_CKJH_JJW.qry_DetailFPSLGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
if Trim(Sender.AsString) = '' then
Exit;
try
if DisplayText then {顯示狀態(tài)}
begin
if Sender.AsString <> '' then
Text := FormatFloat('#,##0', Sender.AsFloat);
end
else {輸入狀態(tài)}
Text := FormatFloat('#0.##', Sender.AsFloat)
except
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -