我定义了一个过程,试图通过传递两个参数(1,窗体名称,2,数据集名称)对该窗体对象下的数据集执行一些操作,譬如关闭后重新打开之类的;
写法如下:procedure LXOpenDataset(AFormName,AAdoQueryName: string);
begin
  with TForm(FindClass(AFormName)) do   //1
  begin
    TAdoQuery(FindComponent(AAdoqueryName)).close;
    TAdoQuery(FindComponent(AAdoqueryName)).Open;
  end;
end;注释一处有点疑问,因为要执行这种操作的窗体未必是直接从Tform中继承过来的;
这点暂且不说;
一个很头大的问题就是FindClass函数的参数要求必须是在系统初始化的时候用registerClass函数定义过的;
所以程序根本无法编译;
哪位兄弟做过的帮帮忙!

解决方案 »

  1.   

    一个很头大的问题就是FindClass函数的参数要求必须是在系统初始化的时候用registerClass函数定义过的;
    ----------------------
    那就用registerClass函数定义不就行了?unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var FormClass: TFormClass;   frm:Tform;
    begin
      FormClass:=TFormClass(GetClass('Tform2'));
      if FormClass=nil then exit;
      Application.CreateForm(FormClass,Frm);
        Tform(frm).show;
        TEdit(Tform(frm).FindComponent('edit1')).Text:='aaa';
    end;
    initialization
    RegisterClass(Tform2);
    end.
      

  2.   

    那就用registerClass函数定义不就行了?-------------------------
      

  3.   

    To: hellolongbin(一个人[.net学习中……])
    1: 现在的系统里窗体的注册方式不是用RegisterClass,我如果去动整个窗体的框架会很难做;
    2:就算是动了;那如果Form2不是直接从TForm中继承的又该怎么做;还用Tform()强行转换吗?
    3:还有一个问题是,如果Form2窗体已经生成过了又该怎么处理?
      

  4.   

    2.看定义:frm:Tform;
    3.如果已经生成过了就直接show
      

  5.   

    回复人: hellolongbin(一个人[.net学习中……]) ( ) 信誉:101  2005-06-07 12:08:00  得分: 0  
     
     
       2.看定义:frm:Tform;
    3.如果已经生成过了就直接show
    ----------------------------------------------------
    老大;
    如果直接show的话Frm怎么得到?  
     
      

  6.   

    未必是直接从Tform中继承过来???
    那他的继承关系是什么呢???
      

  7.   

    假设Tform-》TFormBase-》TFormPBase-》TFormDBase
    如果是上面所示的继承结构;
    在TFormBase的实例和TFormPBase类的实例中都需要调用该过程;
    怎么处理?
      

  8.   

    丫的,不还是从tfrom继承的啊,只是没直接从它继承而已!