📄 u_web_vno.pas
字号:
unit U_WEB_VNO;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, TFlatButtonUnit, TFlatEditUnit, Grids, BaseGrid,
AdvGrid;
type
TF_WEB_VNO = class(TForm)
PN_BN: TPanel;
BN_OK: TFlatButton;
BN_BACK: TFlatButton;
BN_TSFW: TFlatButton;
SG_JL: TAdvStringGrid;
BN_1: TFlatButton;
BN_2: TFlatButton;
BN_3: TFlatButton;
BN_4: TFlatButton;
BN_5: TFlatButton;
BN_6: TFlatButton;
BN_7: TFlatButton;
BN_8: TFlatButton;
BN_9: TFlatButton;
BN_0: TFlatButton;
function savetodb: boolean;
procedure check_sg_date;
procedure DealTag(Sender: Tobject; UpDown: integer; Tag: integer; Key: Word);
procedure FormCreate(Sender: TObject);
procedure BN_OKClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BN_BACKClick(Sender: TObject);
procedure BN_TSFWClick(Sender: TObject);
procedure SG_JLKeyPress(Sender: TObject; var Key: Char);
procedure SG_JLCheckBoxClick(Sender: TObject; ACol, ARow: Integer;
State: Boolean);
procedure SG_JLGetCellColor(Sender: TObject; ARow, ACol: Integer;
AState: TGridDrawState; ABrush: TBrush; AFont: TFont);
procedure SG_JLDblClick(Sender: TObject);
procedure BN_1Click(Sender: TObject);
procedure SG_JLGetAlignment(Sender: TObject; ARow, ACol: Integer;
var HAlign: TAlignment; var VAlign: TVAlignment);
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_WEB_VNO: TF_WEB_VNO;
implementation
uses Pub_program, U_WEB_DM, U_WEB_NO, ncp; //, U_web_DYQZRQ
var
m_str, folio_m, m_adate, m_ddate, m_rsvnno, m_nodw: string;
m_diff, m_col, m_field, m_code, updrow: integer;
m_bcheck: boolean;
gridop: TGridOptions;
{$R *.DFM}
function TF_WEB_VNO.savetodb: boolean;
var
i, j, flag: integer;
b_state: boolean;
begin
{try
f_web_dm.hoteldb.Connected := true;
f_web_dm.hoteldb.StartTransaction;
case m_diff of
2: flag := 3;
12: flag := 2;
17, 18:
flag := 4; //plgst tmp tsfw
else
flag := 1;
end;
with f_web_dm_wy2.sp_pretsfw_wangy do //用於清 临时特服及过时特服;
begin
close;
parambyname('@vall').asinteger := flag;
parambyname('@vroom').asstring := getstr(m_room, room_old);
parambyname('@vrecno').asinteger := m_recno;
parambyname('@vtmpid').asinteger := m_tfid;
parambyname('@vfolio_m').asstring := analy_str('folio', m_str);
parambyname('@vdate_per').asdatetime := strtodate(getstr(analy_str('adate', m_str), gstr_pubdate));
prepare;
execproc;
close;
end;
with f_web_dm_wy.sp_tsfwtmp_wangy do
with sg_jl do
begin
close;
parambyname('@vrsvnno').asstring := analy_str('rsvnno', m_str);
parambyname('@vrecno').asinteger := m_recno;
parambyname('@vtmpid').asinteger := m_tfid;
parambyname('@vfolio_m').asstring := analy_str('folio', m_str);
parambyname('@vopno').asstring := Gstr_czygh;
parambyname('@vall').asinteger := flag;
parambyname('@vroom').asstring := getstr(m_room, room_old);
for i := 1 to rowcount - 1 do
for j := 0 to colcount - 1 do
case j of
0, 5:
begin
getcheckboxstate(j, i, b_state);
if b_state then
begin
parambyname('@vtfsl').asinteger := strtoint(getstr(cells[j + 1, i], '1'));
parambyname('@vnight').asinteger := strtoint(getstr(cells[j + 2, i], '1'));
parambyname('@vsvrcode').asinteger := strtoint(getstr(cells[j + colcount * 2, i]));
parambyname('@vadate').asdatetime := strtodate(cells[j + 3, i]);
parambyname('@vddate').asdatetime := strtodate(cells[j + 4, i]);
prepare;
execproc;
end;
end;
end;
close;
f_web_dm.hoteldb.Commit;
result := true;
end;
except
f_web_dm.hoteldb.Rollback;
f_web_dm.hoteldb.Connected := false;
MessageDlg(err_msg, mtinformation, [mbok], 0);
result := false;
end; }
end;
procedure TF_WEB_VNO.FormCreate(Sender: TObject);
var
i, j, count: integer;
s, s1, s_adate, s_ddate: string;
m_bget: boolean;
begin
clearall(sender);
m_diff := g_diff;
m_str := tran_str;
tncp.create(self);
gridop := [gorowselect];
updrow := -1;
bn_tsfw.Visible := false;
m_adate := getstr(analy_str('adate', m_str), gstr_pubdate);
m_ddate := analy_str('ddate', m_str);
case m_diff of
1:
begin
case m_lang of
1: s := '相关人员*24*相关人员*24*相关人员*24*相关人员*24*相关人员*24*';
2: s := 'ENGINEER*24*ENGINEER*24*ENGINEER*24*ENGINEER*24*ENGINEER*24*';
end;
title_sg_wy(sg_jl, s, false);
s := 'select accno,name from userdb order by accno';
m_col := 5;
m_field := 1;
display_v_sg(sg_jl, s, m_col, m_field, m_diff);
end;
25, 30:
begin
with sg_jl do
begin
defaultrowheight := 28;
rowheights[0] := 20;
end;
case m_lang of
1: s := '房 类*36*房 类*36*房 类*36*';
2: s := 'RM CLASS*36*RM CLASS*36*RM CLASS*36*';
end;
title_sg_wy(sg_jl, s, false);
s := 'select name,sign,rclass,rate from strate order by rclass';
m_col := 3;
m_field := 1;
display_v_sg(sg_jl, s, m_col, m_field, 25);
end;
else
begin
case m_lang of
1: s := '特服名称*17*数量*7*房晚*7*起始日期*14*结束日期*14*特服名称*17*数量*7*房晚*7*起始日期*14*结束日期*14*';
2: s := 'SP.ENQ NAME*17*QTY*7*DAYS*7*BEG DATE*14*END DATE*14*SP.ENQ NAME*17*QTY*7*DAYS*7*BEG DATE*14*END DATE*14*';
end;
title_sg_wy(sg_jl, s, false);
s := 'select name,flag,coun,days,night,flag_n,svrcode,sort from SVRCODE order by sort';
m_col := 2;
m_field := 5;
m_code := strtoint(getstr(analy_str('code', m_str)));
display_v_sg(sg_jl, s, m_col, m_field, 1);
end;
end;
// 所有特服,不论从何处调用,如早於当天,均可视为无效设置,不予处理及显示;
case m_diff of
2: // perate
begin
caption := caption + ' -- [' + analy_str('adate', m_str) + iif(m_lang = 1, '] 日特服设置', '] SP.ENQ SETTING');
with f_web_dm.qy_wangy do
begin
close;
sql.Clear;
sql.Add('select svrcode,tfsl,night from tsfwdyb where room=:vroom and folio_main=:vfolio and recno=:vrecno and datediff(dd,date,:vdate)=0 ');
open;
with sg_jl do
while not eof do
begin
m_bget := false;
s := fieldbyname('svrcode').asstring;
for i := 1 to rowcount - 1 do
begin
for j := 0 to colcount - 1 do
case j of
0, 5:
if s = cells[j + colcount * 2, i] then
begin
setcheckboxstate(j, i, true);
if cells[j + colcount + 1, i] = '1' then
cells[j + 1, i] := fieldbyname('tfsl').asstring;
if cells[j + colcount + 2, i] = '1' then
cells[j + 2, i] := fieldbyname('night').asstring;
cells[j + 3, i] := m_adate;
cells[j + 4, i] := m_ddate;
m_bget := true;
break;
end;
end;
if m_bget then
break;
end;
next;
end;
close;
end;
end;
25, 30:
with sg_jl do
begin
s1 := analy_str('rcls', m_str);
for i := 1 to rowcount - 1 do
for j := 0 to colcount - 1 do
begin
s := getpartstr(cells[j, i]);
if pos(s, s1) > 0 then
setcheckboxstate(j, i, true);
end;
end;
else //skyd, skrz, ydxx
begin
{with f_web_dm.qy_wangy do
begin
close;
sql.Clear;
sql.Add('select svrcode,tfsl=min(tfsl),ngt=min(night),adate=min(date),ddate=max(date) from tsfwdyb where rsvnno=:vrsvnno and recno=:vrecno and room=''000000'' and datediff(dd,date,getdate())<=0 group by svrcode');
open;
with sg_jl do
while not eof do
begin
m_bget := false;
s := fieldbyname('svrcode').asstring;
for i := 1 to rowcount - 1 do
begin
for j := 0 to colcount - 1 do
case j of
0, 5:
if s = cells[j + colcount * 2, i] then
begin
setcheckboxstate(j, i, true);
if cells[j + colcount + 1, i] = '1' then
cells[j + 1, i] := fieldbyname('tfsl').asstring;
if cells[j + colcount + 2, i] = '1' then
cells[j + 2, i] := fieldbyname('ngt').asstring;
cells[j + 3, i] := datetostr(fieldbyname('adate').asdatetime);
cells[j + 4, i] := datetostr(fieldbyname('ddate').asdatetime);
m_bget := true;
break;
end;
end;
if m_bget then
break;
end;
next;
end;
close;
end; }
end;
end;
end;
procedure TF_WEB_VNO.check_sg_date;
var
i, j: integer;
m_state: boolean;
begin
with sg_jl do
for i := 1 to rowcount - 1 do
for j := 0 to colcount - 1 do
begin
if (cells[j, i] = '') then
continue;
case j of
3, 4, 8, 9:
begin
if not verifydate_sg(sg_jl, j, i) then
begin
row := i;
col := j;
setfocus;
abort;
end;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -