用了alphacontrols的framebar控件。
用了TFrame,这个frame有自己独立的单元文件。
我在mainfrm下如何访问这个frame上面的元件比如radiobutton之类的东西?
怎么能取到这些元件的状态?因为我的frame是用create(nil)生成的。。
在mainfrm下如何实例化之,并且访问frame上的组件?
谢谢

解决方案 »

  1.   

    frame是用create(nil)生成的。。
    mainfrm下应该有一个field【aframe:Tframexxx;】记录
    如何实例化之:aframe:=Tframexxx.create(nil{或self});
    并且访问frame上的组件:aframe.edit1.text:='xxxx';
      

  2.   

      for i:= 0 to sframebar1.ControlCount -1 do
        if sframebar1.Controls[i] is TMyFrame then   // TMyFram 是那个TFrame的类名
          (sframebar1.Controls[i] as TMyFrame).XXX   // <- XXX为 TMyFrame 里的控件或其它变量
      

  3.   


    十分 感谢!
    使用你这种方法后可以访问frame上面的component了
    不过编译到 if sframebar1.controls[0] is tmyframe then 
     (sframebar1.controls[0] as tmyframe).xxx
    这句时出现了
    invalid class typecast错误
      请问有可能是什么原因?谢谢
    PS 你也用过alphacontrols控件啊?
      

  4.   

    不要定死序号. 反正你只要找出是哪个序号是你所要操作的FRAME,你就做个标记就行了.唉~ 多加一个INTEGER变量不就行了? 晕~~~
      

  5.   

    那我再做点补充好了create(nil)是不能用components访问到的,Components属性中记录是以XXX为Owner的子组件,你现在Owner是nil,因此无法访问。controls看的是parent属性,它反映的是控件的父子关系,而不是从属关系,因此当你的组件设置了parent后,就可以在parent.controls里面访问到它了。不过要注意的是,假如它不是直接子控件的话,要自己递归来进行访问。