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

大概步骤这样:

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;

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

在Java Swing中,可以通过在多个类之间传递同一个JFrame对象来实现共用一个窗体的效果。 具体实现方法如下: 1. 创建一个JFrame对象。 2. 在需要使用这个窗体的类中,将JFrame对象作为参数传递给该类的构造方法。 3. 在构造方法中,将JFrame对象保存为一个成员变量。 4. 在类中的其他方法中,使用保存的JFrame对象来进行界面的操作。 例如,以下是一个简单的示例代码: ``` import javax.swing.*; public class MainFrame extends JFrame { public MainFrame() { // 设置窗体属性 setTitle("共用窗体"); setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { // 创建主窗体对象 MainFrame mainFrame = new MainFrame(); // 在其他类中共用窗体对象 Class1 class1 = new Class1(mainFrame); Class2 class2 = new Class2(mainFrame); // 显示主窗体 mainFrame.setVisible(true); } } class Class1 { private JFrame frame; public Class1(JFrame frame) { this.frame = frame; // 在这里使用frame对象进行界面操作 } } class Class2 { private JFrame frame; public Class2(JFrame frame) { this.frame = frame; // 在这里使用frame对象进行界面操作 } } ``` 在上面的示例代码中,创建了一个名为MainFrame的类,它继承了JFrame类,并在其中创建了一个窗体。在程序的main方法中,创建了MainFrame对象,并将它作为参数传递给了Class1和Class2的构造方法中。在Class1和Class2中,保存了传递进来的JFrame对象,并在构造方法中对它进行了初始化。这样,Class1和Class2就可以使用保存的JFrame对象来进行界面的操作,从而实现共用同一个窗体的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值