我本来是用动态生成TMEMO来实现输入的,但是发现界面保存后再打开的时候提示TMEMO没有父窗口,界面上其他的控件都是自定义并继承自TGRAPHICCONTROl的,请问有没有别的办法实现这种功能?

解决方案 »

  1.   

    打开VCL源码看看TMEMO的定义!
      

  2.   

    呵呵,其实你可以让TMEMO显示某个文件(可以是很多文档格式)的内容。你做的只是用TMEMO来对文件进行存取,这样就可以实现此目的了。简单点的可以用数据库来存取,不用知道太多的文件存取办法(没法子,俺懒的写啊)。
      

  3.   

    不知道你的具体情况,看你的问题有点不太明白
    如果你要用你的方法,你在创建TMemo时把它的Parent设为跟其它控件一样就行了Memo := TMemo.Create(父亲);
    Memo.Parent := 父亲;
      

  4.   

    我也不太清楚你的情况。我觉得将parent设置一下应该可以吧。没有父窗口我们为他找一个"parent"哈!希望我的建议有用
      

  5.   

    动态创建的时候我设置了PARENT为MainFrm.ActiveChildForm的,别的控件都没有问题,就是这个TMEMO出错,我Create的时候是用Create(Self),这有关系吗?
      

  6.   

    问题我再说一次:    我是在MDIChildForm里根据用户的需要动态生成了很多控件,除了TMemo类的,其它都是继承自TGraphicControl的,因为主界面上是一张电路图,而且用户那里不只一张,现在我手上就35张,也就是有35个界面了。所以每个界面都要保存起来,我是用TFileStream和TMemoryStream来保存的,在没有加入TMemo时一切正常,还有所有控件的父窗口都是MDIChildForm,但是读出来的时候系统提示TMemo没有Parent
      

  7.   

    FStream := TFileStream.Create(FFileName,fmOpenRead);
      try
        while FStream.Position < FStream.Size do
          begin
            New := FStream.ReadComponent(nil);
            ActiveMDIChild.InsertControl(New as TControl);
            if (New is TZhuanHuangKG)  then   //各类的事件
               begin
                 TZhuanHuangKG(New).OnMouseDown := MDIChildFrm.NewMouseDown;
                 TZhuanHuangKG(New).OnMouseMove := MDIChildFrm.NewMouseMove;
                 TZhuanHuangKG(New).OnMouseUp := MDIChildFrm.NewMouseUp;
               end;
    ...............
    运行到  New := FStream.ReadComponent(nil);就提示没有parent  window