起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 258|回复: 10

【搞定】如何引用表单下的控件**

[复制链接]
发表于 2007-8-1 13:29:57 | 显示全部楼层 |阅读模式
有一个信息A..下有表单.B.
表单B上放有空间B.1


那如何在信息A下读取到表单B.1的属性呢?
回复

使用道具 举报

发表于 2007-8-1 14:01:20 | 显示全部楼层
TCXYWXX(InfoBroker.info).check;
要访问信息的类名(需要转换的信息).事件或方法
回复 支持 反对

使用道具 举报

发表于 2007-8-1 14:12:15 | 显示全部楼层
信息下访问表单需要创建表单的实例,请问楼主想做什么,为什么要在信息下访问表单呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-1 14:13:24 | 显示全部楼层
[错误]Biz:\TRJT\BBZX\JFMQXHBB\WBRB.INFO.PAS(103, 33): Incompatible types: "TWBRBD" and "RuntimeTypeHandle"
[错误]Biz:\TRJT\BBZX\JFMQXHBB\WBRB.INFO.PAS(104, 33): Incompatible types: "TWBRBD" and "RuntimeTypeHandle"
[错误]Biz:\TRJT\BBZX\JFMQXHBB\WBRB.INFO.PAS(105, 13): Incompatible types: "TWBRBD" and "RuntimeTypeHandle"


出错了。

我要'信息'A上访问'信息'A下表单的控件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-1 14:17:58 | 显示全部楼层
有信息A..信息A 下有表单B

我在信息A下写了个函数sum(a,b,c)
需要在信息A下数据集的CalcFields时间下执行sum(a,b,c)
a,b,c的值来自表单B
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-1 14:43:13 | 显示全部楼层
顶~~~~~帮忙
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-1 15:01:32 | 显示全部楼层
信息上的代码;;

unit WBRB;

interface

uses
  Business.System, Business.Model, Business.Data;

const StrConn=' DATABASEURL=Biz:\TRJT\JTSJK.DATABASE ';

type
  TWBRB = class(TInfo)
    DataSetWBZ: TSQLDataSet;
    DataSetWBC: TSQLDataSet;
    FIELD_WBC_ZHJ: TAggField;
    FIELD_WBC_JE: TUserDataField;
    DataSetLJ: TUserDataSet;
    FIELD_LJ_SZ: TUserDataField;
    FIELD_LJ_XM: TUserDataField;
    FIELD_LJ_JE: TUserDataField;
    FIELD_WBC_JELJ: TCalcField;
    procedure DataSetWBCCalcFields(DataSet: TDataSet);
  private
    {private declarations}
  public

   //网吧单项金额累计
    Procedure SumByWbxm(Adate:String;BDate:String;Cdw:String);//(A:String;B:String;C:String);
    procedure SumByWbLj(Adate:String;BDate:String;Cdw:String);
    {public declarations}
  end;

implementation



/////

Procedure TWBRB.SumByWbxm(Adate:String;BDate:String;Cdw:String);//(A:String;B:String;C:String);
var   lQuery:TQuery;
      lQuery_Str:String;
      A:String;B:String;C:String;
begin
      a:=DataSetWBC.FieldByName ('bc').AsString ;
      b:=DataSetWBC.FieldByName ('xm').AsString ;
      c:=DataSetWBC.FieldByName ('s_z').AsString ;

      lQuery:=TQuery.Create (nil);
      try
        lQuery.ConnectionString :=StrConn;
        lQuery_Str:='select bc,xm,s_z,lj=sum(je) from wbmxb '
         +'where ZBGUID IN (select GUID from wbrbzb where '+
                         'tbdw= '''+Cdw+'''and tbrq<= '''+ADate+'''and tbrq>= '''+BDate+''')'+' and '+
         'bc= '''+a+''' and xm= '''+b+''+'''and s_z= '''+c+''''
         +' group by bc,xm,s_z ';
        lQuery.CommandText :=lQuery_Str;
        lQuery.open;
       // DataSetWBC.Edit ;
        DataSetWBC.FieldByName ('JELJ').AsFloat:=lQuery.Fields[3].AsFloat ;

       // DataSetWBC.UpdateRecord ;
       // DataSetWBC.Post ;
      finally
        lQuery.free;
      end;
end;
/////
procedure TWBRB.SumByWbLj(Adate:String;BDate:String;Cdw:String);
var   lQuery:TQuery;
      lQuery_Str:String;
begin
       if not DataSetLJ.Active then
           DataSetLJ.Open ;
           DataSetLJ.EmptyDataSet ;
           lQuery := TQuery.Create(nil);
           try
             lQuery.ConnectionString :=StrConn;
             lQuery_Str:='select s_z,xm,sumje=sum(je) from wbmxb '+
                         ' where ZBGUID in (select guid from wbrbzb where '+
                         'tbdw= '''+Cdw+'''and tbrq<= '''+ADate+'''and tbrq>= '''+BDate+''''+
                         ')group by s_z,xm';
             lQuery.CommandText :=lQuery_Str;
             lQuery.Open ;
             while not lQuery.Eof do
                begin
                 DataSetLJ.Append ;
                 DataSetLJ.FieldByName ('SZ').AsString :=lQuery.Fields[0].AsString ;
                 DataSetLJ.FieldByName ('XM').AsString :=lQuery.Fields[1].AsString ;
                 DataSetLJ.FieldByName ('JE').AsFloat  :=lQuery.Fields[2].AsFloat  ;
                 lQuery.Next ;
                end;
           finally
             lQuery.Free;
           end;


end;


///
procedure TWBRB.DataSetWBCCalcFields(DataSet: TDataSet);
var    a,b,c:String;
begin
   TWBRBD.
  a:= SysUtils.DateToStr(TWBRBD(TWBRB).DateTimePicker1.Date );
  b:= SysUtils.DateToStr(TWBRBD(TWBRB).DateTimePicker1.Date );
  c:=TWBRBD(TWBRB).ComboBox1.Text ;
  SumByWbxm(a,b,c);
  //WBRBD.
end;

end.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-1 15:02:15 | 显示全部楼层
表单上的代码

unit WBRBD;

interface

uses
  Business.System, Business.Model, Business.Forms;

type
  TWBRBD = class(TFormDoc)
    InfoBroker: TInfoBroker;
    Panel1: TPanel;
    DocView1: TDocView;
    Button1: TButton;
    ComboBox1: TComboBox;
    DateTimePicker1: TDateTimePicker;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    {private declarations}
  public
    {public declarations}
  end;

implementation


procedure TWBRBD.Button1Click(Sender: TObject);
begin
//TWBRB(InfoBroker.Info).SumByWbxm;
TWBRB(InfoBroker.Info).SumByWbLj (SysUtils.DateToStr(DateTimePicker1.Date),SysUtils.DateToStr(DateTimePicker1.Date),ComboBox1.Text  );
//TWBRB(InfoBroker.Info).SumByWbxm (SysUtils.DateToStr(DateTimePicker1.Date),SysUtils.DateToStr(DateTimePicker1.Date),ComboBox1.Text  );

end;

end.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-1 15:24:58 | 显示全部楼层
在么////
回复 支持 反对

使用道具 举报

发表于 2007-8-1 15:32:36 | 显示全部楼层
你在表单上加个数据集代理,然后在数据集代理的OnCalcFields里调用信息下的函数。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-13 10:02 , Processed in 0.036802 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表