⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_web_vno.pas

📁 以前写的一个利用P2P 技术的一个通讯的例子。里面用到了 DBISAM 、INDY 控件。
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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 + -