📄 client_navigator.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 + -