遇到一个小问题
我在窗口中自动创建一个按钮,如下:
procedure TMainForm.Button7Click(Sender: TObject);
var
  MyButton: TButton;
begin  MyButton:=TButton.Create(self);
  MyButton.Parent:= self;
  MyButton.SetBounds(0,5,100,25);
  MyButton.Caption:='我的按钮';
end;然后另外有一个单元 Unit2 ,我想在这个单元里边
获得 MyButton.Caption 的值。
不知道该怎么取,用 FindComponent 来找控件,老说代码出错。各位大虾请指教

解决方案 »

  1.   

    估计不行,因为mybutton在点击button7后才创建
      

  2.   

    不是可以用 FindComponent 这个函数来找控件的吗
      

  3.   

    FindComponent用的是组件的name,不是caption,给name赋值
      

  4.   

    我是想在 Unit2 中这样做
    str:= TButton(TmainForm.FindComponent('button1')).caption;
    不过代码没通过
      

  5.   

    在 Unit2 中,应该怎样做才能用 FindComponent 找到 'button1' 控件,然后再取到它的
    Caption ?实在是不会啊,请各位指点...
      

  6.   

    不用找了,把这个button声明为一个公共的变量,不就可以用了吗?
      

  7.   

    mainForm 与 Unit2 是什么关系?
    两个窗口的类型分别是什么?
      

  8.   

    你定義MyButton為你創建的BUTTON,然後FIND的時候確寫BUTTON1,即使找到也不是你想要的/
      

  9.   

    动态创建时不要用默认的Name,赋一个Name呢
      

  10.   

    把这个button声明为一个公共的变量
      

  11.   

    var
      MyButton: TButton;
    定义为全局变量,就解决了,测试通常
      

  12.   

    谢谢各位捧场!
    刚睡醒,好困啊。
    声明为一个全局变量,总觉得不是一个很好的办法。其实我动态创建的控件是在数据库里边定义的,创建的时候,创建的控件比较多
    到表里边读数据,比如读出类型:Edit,名字: NameEdit,初始化Text内容:小华
    还有长宽高之类的...我在取值的时候,在这个窗体下是可以的,就是用 FindComponent 方法找到这个控件,
    然后取值,我想把取值做成一函数,单独存放在一单元中。可否还有更好的办法
      

  13.   

    to :xinshiji(无名) 
    我的是这样的,界面上的控件很多都自动创建,然后有一查询按钮
    查询的时候就拼SQL语句,这个时候要取这些个控件的值
      

  14.   

    to:jianke5555(汐)
    MainForm 就是主窗体,Unit2是创建的一个空白单元