为窗体TForm1增加了属性,但是object inspector中显示不出来type
  TForm1 = class(TForm)
  private
    { Private declarations }
    FqrySPXX:TADOQuery;
  public
    { Public declarations }
  published
    property qrySPXX:TADOQuery read FqrySPXX write SetQrySPXX;
  end;  procedure TForm1.SetQrySPXX(Value:TADOQuery);
  begin
    FqrySPXX := Value;
  end; 
 

解决方案 »

  1.   

    是不是将这个property
    修改成procedure呀
      

  2.   

    不行吧,property是属性,procedure是过程,修改成procedure的话,编译都通不过的。
      

  3.   

    想让显示,得重新创建组件,注册组件,这个说的没错。TForm这个类是个窗口,也不是组件。在NEW COMComponent中也找不到TFORM。建议seleron还是按照DELPHI的规范来写程序吧,少走弯路。
      

  4.   

    你们什么意思是将一些代码也封装成一个控件包吗???
    .bpl包吗
      

  5.   

    努力学习中.........
    我不想再OUT了
      

  6.   

    delphi中,派生的窗体是无法在属性观察器重显示新增属性的,就是这样,没有理由。别指望了。
      

  7.   

    kyle_huang
    怎么个情况
     
    shuihan20e你的那个“星星”难道也是“偷”来的
      

  8.   

    问题的来龙去脉是这样的
    有form1,form2,form3三个窗体,
    form3是一个编辑基础资料的窗体,form3上使用了很多的cx数据绑定组件,
    form3上的这些数据绑定组件是绑定到form1的ADOQuery上呢还是绑定到form2的adoquery上呢
    这需要根据用户的操作来确定
    也就是说,当form1调用form3时,form3上的组件就绑定到form1的adoquery上,当form2调用form3时,form3上的组件就绑定到form2的adoquery上,
    如果要在设计窗体时就为form3的数据绑定组件指定adoquery,那么就需要在据绑定组件的object inspector的中设置数datasource属性
    也就是需要从下拉解表中选择一个adoquery相关的dataset,如果手工输入一个下拉列表中不存在的内容则会当场报错“Invalid Property value”
    为此,我计划在form3窗体类中增加了一个名为qrySPXX的adoquery属性,然后从数据绑定组建的Object inspector中的datasource中的下拉列表中选择qrySPXX(相关的dataset)
      

  9.   


    bpl好像是delphi特色的dll吧
      

  10.   


    方法1:在form3里面定义一个函数,用来创建、初始化、显示form3,其它Form中需要使用这个Form的时候来调用。
    procedure ShowForm3(ADataSet: TADOQuery);var
      Form3: TForm3;implementationprocedure ShowForm3(ADataSet: TADOQuery);
    var
      i: Integer;
    begin
      if not Assigned(Form3) then
        Form3 := TForm3.Create(Application);
      for i:=0 to Form3.ComponentCount-1 do
      begin
        if (Form3.Components[i] is TDataSource) then
          (Form3.Components[i] as TDataSource).DataSet := ADataSet;
      end;
      Form3.ShowModal;
    end;方法2:创建一个DataModule,然后把所有的ADOConnection,ADOQuery等统统放到这里作为一个公用模块,然后在每个Unit的Interface部分uses它,这样,在设计期的Object Inspector面板中就可以找到你需要的那个ADOQuery了。希望我提出的两个方法能给你一些帮助……
      

  11.   

    回复楼上,
    你提供的方法二的思路不错,
    但方法一有些效率低,并且设计时也不能将adoqury出现在object inspector中
      

  12.   

    回复21楼,
    你提供的方法二,是多个窗体公用datamodule中一个adoqury,
    这样的话,多个窗体的操作会发生冲突,且这种冲突不好控制和处理。