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

📄 client_navigator.pas

📁 Delphi 应用举例
💻 PAS
字号:
unit client_navigator;

interface

uses
  SysUtils, Classes, Controls, IWControl,IWHTMLTag,client_ds,client_dbgrid,DB,ExtCtrls, IWForm;

type
  THTML_STR=string;
  THandledEvent=procedure (var handled:boolean) of object;
  TNavigatorButton=(nbSave,nbFirst,nbPriorPage,nbPrior,nbNext,nbNextPage,nbLast,nbInsert,nbDelete,nbUndo);
  TNavigatorButtons=set of TNavigatorButton;
  TIWClientDBNavigator = class(TIWControl)
  private
    fc_edit_grd:TIWClientDBGrid;
    fbefore_save:THandledEvent;
    fbuttons:TNavigatorButtons;
  public
    readonly:boolean;
    function RenderHTML: TIWHTMLTag; override;
    constructor Create(AOwner: TComponent); override;
    procedure Submit(const AValue: string); override;
  published
    property CEGrid:TIWClientDBGrid read fc_edit_grd write fc_edit_grd;
    property beforesave: THandledEvent read fbefore_save write fbefore_save;
    property onclick ;
    property VisibleButtons:TNavigatorButtons read fbuttons write fbuttons;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('test', [TIWClientDBNavigator]);
end; 
//--------TIWClientNavigator
function TIWClientDBNavigator.RenderHTML: TIWHTMLTag;
var disp_nm,flag_nm:string;
    s,ss:string;
    function myif(b:boolean;s1,s2:string):string;
    begin
       if b then result:=s1
       else result:=s2;
    end;
begin

   if not assigned(fc_edit_grd) then exit;

   flag_nm:=self.fc_edit_grd.ok_flag;
   disp_nm:=uppercase(fc_edit_grd.Name)+'_DISP';

   Result := TIWHTMLTag.CreateTag('table');

   Result.Contents.addtext('<tr><td>');
   s:=UpperCase(CEGrid.ClientDS.get_crs_nm);
   ss:=uppercase(CEGrid.ClientDS.Name);
   if CEGrid.NeedsFormTag then ss:='SubmitForm.'+ss;
   if nbSave in fbuttons then
       Result.Contents.addtext('<input type=BUTTON value="保存" '+myif(self.fc_edit_grd.ClientDS.is_readonly,'disabled=true ',
        ' onclick=''if('+flag_nm+')'+disp_nm+'.post();SubmitForm.'+ss+'.value=getdeltaxmlstr('+s+');if (SubmitForm.'+ss+'.value!="undefined") return SubmitClickConfirm("'+uppercase(name)+'","", true, "");''>'));
   if nbFirst in fbuttons then
       Result.Contents.addtext('<input type=BUTTON value="|<" onclick="if('+flag_nm+')'+disp_nm+'.first();">');
   if nbPriorPage in fbuttons then
       Result.Contents.addtext('<input type=BUTTON value="<<" onclick="if('+flag_nm+')'+disp_nm+'.pgup();">');
   if nbPrior in fbuttons then
       Result.Contents.addtext('<input type=BUTTON value="<" onclick="if('+flag_nm+')'+disp_nm+'.up();">');
   if nbNext in fbuttons then
       Result.Contents.addtext('<input type=BUTTON value=">" onclick="if('+flag_nm+')'+disp_nm+'.down();">');
   if nbNextPage in fbuttons then
       Result.Contents.addtext('<input type=BUTTON value=">>" onclick="if('+flag_nm+')'+disp_nm+'.pgdown();">');
   if nbLast in fbuttons then
       Result.Contents.addtext('<input type=BUTTON value=">|" onclick="if('+flag_nm+')'+disp_nm+'.last();">');
   if nbInsert in fbuttons then
       Result.Contents.addtext('<input type=BUTTON value=" + " onclick="if('+flag_nm+')'+disp_nm+'.newRow();">');
   if nbDelete in fbuttons then
       Result.Contents.addtext('<input type=BUTTON value=" - " onclick="if('+flag_nm+')'+disp_nm+'.removeRow();">');
   if nbUndo in fbuttons then
       Result.Contents.addtext('<input type=BUTTON value=" 取消 " onclick="if('+flag_nm+')'+disp_nm+'.undo();">');
   Result.Contents.addtext('</td></tr>');

  
end;
procedure TIWClientDBNavigator.Submit(const AValue: string);
var handled:boolean;
begin
   handled:=false;
   if assigned(beforesave) then beforesave(handled);
   if handled then exit;
   self.fc_edit_grd.ClientDS.post;
   if assigned(onclick) then onclick(self);
end;
constructor TIWClientDBNavigator.Create(AOwner: TComponent);
begin
   inherited create(AOwner);
   FSupportsSubmit:=true;
   fbuttons:=[nbSave,nbFirst,nbPriorPage,nbPrior,nbNext,nbNextPage,nbLast,nbInsert,nbDelete,nbUndo];
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -