共用查询窗体的一种实现方法(X3)

来源:互联网 发布:淘宝客服聊天表情包 编辑:程序博客网 时间:2024/04/28 13:59

大概步骤这样:

1、新建一个‘资源集’起名‘常用窗体’,其ID我们默认为‘CYCT’。

2、在这个资源集下新建一个‘窗体’,起名‘查询窗体’,其ID我们默认为‘CXCT’。

3、在这个查询窗体上放上我们要用的控件,比如我们放两个DateTimePicker,分别为DateTimePicker1、DateTimePicker2作为查询条件的起、止时间,然后放上两个BUTTON,分别为button1/button2在其caption上写上‘确定’、‘取消’,并在button1的clike事件上写上一句代码:ModalResult :=Business.Forms.Controls.mrOK;在button2的clike事件上写上:close;

4、在‘资源集’中写入两个函数

//取日期等变量的函数

function GETVARDATE( var ADateBegin,ADateEnd:TDateTime):Boolean;
var
  lForm:TCXCT;
  begin
    lForm :=TCXCT.Create(nil);
    With lForm do
    try
     Result := ShowModal=Business.Forms.Controls.mrOK;
     if Result then
     begin
       ADateBegin := DateTimePicker1.Date;
       ADateEnd:= DateTimePicker2.Date;
     end;
    finally
      Free;
    end;
  end;

//传入变量的函数

Static Function GetPARA:Boolean;
var
  lForm:TCXCT;
begin
  lForm :=TCXCT.Create(nil);
    With lForm do
    try
     Result := ShowModal=Business.Forms.Controls.mrCancel;
     if Result then
     begin
       sysutils.Abort;
     end;
    finally
      Free;
    end;

end;

5、前提是我们已经做好了报表的功能窗体,现在我们要做到,在我们查看这个报表功能之前会弹出我们刚才做的‘查询窗体’,选择起止时间,经过过滤在报表的功能窗体上显示我们想要的数据。

6、单击报表的功能(非功能窗体),然后查看其事件,在OnCreate事件下写入代码:

procedure TCGDDBBFUNC.FuncCreate(Sender: TObject);
var
  lDate1,lDate2:TDateTime;
  lSqlstr,ldate11,ldate22:string;
  linfobroker:Tinfobroker;
begin
  linfobroker:=Tinfobroker.Create(self);
  linfobroker.AutoBroker:=true;
  linfobroker.AutoKind := TAutoKind.akShare;
  linfobroker.BizClassRef.BizURL.URL:='Biz:/KCXT/CGDDXXinfo.Info';
  if CYCT.TCYCT.GetA(lDate1,lDate2,lType,lCode) then
    begin
      ldate11:='';
      ldate22:='';
      sysutils.DateTimeToString(ldate11,'yyyy-MM-dd',ldate1);
      sysutils.DateTimeToString(ldate22,'yyyy-MM-dd',ldate2);
      lSqlstr:='PODATE between '''+ldate11+''' and '''+ldate22+''''  ;
      CGDDXXINFO.TCGDDXXinfo(linfobroker.Info).DataSetCGDDSJJ.sqlFilter:=lSqlstr;
      CGDDXXINFO.TCGDDXXinfo(linfobroker.Info).DataSetCGDDSJJ.sqlFiltered:=true;
    end else
    begin
      self.Terminate;
    end;
end;

编译通过,运行,既可达到所要的效果。

原创粉丝点击