工作中需在Dll中动态生成一个窗体,在窗体的OnActivate事件中动态生成一个Frame嵌在其左部(Align=AlLeft),但是系统提示:该Frame没有父窗口!("SupplierStateFrame" Has No Parent Window),但是,在动态生成Frame的代码中,我指定其父属性了啊!
------------------------------------
    TmpFrame:=TSupplierStateFrame.CreateParented(AForm.Handle);
    With TSupplierStateFrame(TmpFrame) Do
    Begin
      OtherConditionPanel.Push;
      SearchBtn_M.OnClick := SearchBtn.OnClick;
      SelfADOQuery:=DMFrm.TmpMainADOQ;
      GridFrame1.GridInfo.GridADOQ:=SelfADOQuery;
      TmpFrame:=GridFrame1;
      TmpMenuItem:=ShowOrHideLeftFramePM;
      SelfADOQuery.AfterOpen:=TmpMainADOQDataAfterOpen;
      ShowHideLeftFrameBtn.OnClick:=MySplitterMoved;
      GetTreeObjectInfo;
      SetCheckTreeState(True);
      GetSupplierState_CLB(False);
      Name:='TmpGridFrame';
     // Parent:=Self;
      Width:=176;
      Align:=AlLeft;
      Show;
      Update;
    End;
-----------------------------------

解决方案 »

  1.   

    TmpFrame:=TSupplierStateFrame.CreateParented(AForm.Handle);
        With TSupplierStateFrame(TmpFrame) Do
        Begin
          OtherConditionPanel.Push;
          SearchBtn_M.OnClick := SearchBtn.OnClick;
          SelfADOQuery:=DMFrm.TmpMainADOQ;
          GridFrame1.GridInfo.GridADOQ:=SelfADOQuery;
          TmpFrame:=GridFrame1;
          TmpMenuItem:=ShowOrHideLeftFramePM;
          SelfADOQuery.AfterOpen:=TmpMainADOQDataAfterOpen;
          ShowHideLeftFrameBtn.OnClick:=MySplitterMoved;
          GetTreeObjectInfo;
          SetCheckTreeState(True);
          GetSupplierState_CLB(False);
          Name:='TmpGridFrame';
          Parent:=AForm;             ////////////////////
          Width:=176;
          Align:=AlLeft;
          Show;
          Update;
        End;
    -----
      

  2.   

    把 Parent:=AForm; 提前试试
      

  3.   

    不行,试过了!
    何况,出错是在“TmpFrame:=TSupplierStateFrame.CreateParented(AForm.Handle)”
    这儿出的错,好痛苦哦。
    用“TmpFrame:=TSupplierStateFrame.Create(AForm.Handle)"也不行。