不是,我总是跟踪到子窗体的show时出错,在用上些简单窗体做子窗体时一切正常,我想,问题可能出在子窗体上,

解决方案 »

  1.   

    你先把窗体的Visible设成True试一下!不行的话把代码贴出来.
      

  2.   

    你的问题怎么没有断点,我想你还是用"入坞"来做吧,看看帮助中的Dock,或是Demo中的Docking例子,虽然比较乱。
      

  3.   

    uses Unit2;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
         Form2:=TForm2.Create(Application);
         Form2.Parent:=Panel1;
         Form2.show;
    end;
    可以啊
      

  4.   

    我估计你是在FormCreate中做的,把它搬到FormActivate中做吧。另外,有没有调用Focus方法?
      

  5.   

    我是在改别人的程序,程序中有8个显示关联表信息的子窗体和一个显示主表信息的主窗体,各个子窗体之间的控件与变量重名太多,现在要求把它们放在一个窗体中,以tab页的形式显示,工期很短,望各位高手帮我出出主意,5555555555555555555555
      

  6.   

    不过如果是mdi窗体就不行了,这可能和mdi的结构有关
    你会发现在关闭时又错误,可能是mdi的子窗体不能给它设置别的parent
      

  7.   

    我是在formshow写的如下代码
       frmDKHBaseInfo:=TfrmDKHBaseInfo.Create(TabSheet2);
       frmDKHBaseInfo.Parent:=TabSheet2;
       frmDKHBaseInfo.show;
     结果在运行到show时出错,  
      

  8.   

    其实,在mdi子窗体使用我上面的代码,你会发现它并不是panel的子窗体
    难怪关闭时发生错误呢
    呵呵
      

  9.   

    老兄,不要用mdi结构,就不会出现这种问题了
    你试试
      

  10.   

    没有mdi结构,我用的标准的sdi
      

  11.   


    procedure TForm1.Button1Click(Sender: TObject);
    begin
         Form2:=TForm2.Create(Application);
        Form2.Parent:=Tabsheet1;
         Form2.show;
    end;
    不要用Mdi结构,上面的代码我试过了,没问题
      

  12.   

    回复人: lanren(浪人的梦) (2001-8-8 20:47:55)  得0分 
    我是在改别人的程序,程序中有8个显示关联表信息的子窗体和一个显示主表信息的主窗体,各个子窗体之间的控件与变量重名太多,现在要求把它们放在一个窗体中,以tab页的形式显示,工期很短,望各位高手帮我出出主意,5555555555555555555555  
    给的代码太少,毛病可能并不在
        Form2:=TForm2.Create(Application);
        Form2.Parent:=Tabsheet1;
        Form2.show;
    这三句上。
      

  13.   

    My God!
    你的子窗体上有什么?
    是不是有数据库组件?
      

  14.   

    这是其中一个子窗体的的代码,是别人写的,
    unit unitDKHBaseInfo;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls, Buttons, Db, DBTables;type
        RCustBaseInfo=record
            CustCode:String;
            CustName:String;
            ChinaSpelling:String;
            AreaName:String;
            CustAddress:String;
            CustNum:String;
            CustType:String;
            custKind:String;
            CustID:String;
            CustGrade:String;
            StaffMgr:String;
            InfoCollector:String;
            SocialPerson:String;
            InfoTel:String;
            BolAgent:String;
            Level:String;
            InCode:String;
            UpCode:String;
            DeptName:String;
            CreateDate:String;
            UpdateDate:String;
            CustState:String;
            TelProvider:String;
            ExtField1:String;
            ExtField2:String;
            ExtField3:String;
            ExtField4:String;
            ExtField5:String;
            ExtField6:String;
            ExtField7:String;
            ExtField8:String;
            ExtField9:String;
            ExtField10:String;    end;type
      TfrmDKHBaseInfo = class(TForm)
        GroupBox1: TGroupBox;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        Label7: TLabel;
        Label8: TLabel;
        Label9: TLabel;
        Label10: TLabel;
        Label11: TLabel;
        Label12: TLabel;
        Label13: TLabel;
        Label14: TLabel;
        Label15: TLabel;
        Label16: TLabel;
        Label17: TLabel;
        Label18: TLabel;
        Label19: TLabel;
        Label20: TLabel;
        Label21: TLabel;
        editCustName: TEdit;
        editAreaName: TEdit;
        editAreaAddress: TEdit;
        editCustNum: TEdit;
        editCustType: TEdit;
        editCustKind: TEdit;
        editCustID: TEdit;
        editCustGrade: TEdit;
        editStaffMgr: TEdit;
        editInfoCollector: TEdit;
        editSocialPerson: TEdit;
        editInfoTel: TEdit;
        editBolAgent: TEdit;
        editLevel: TEdit;
        editInCode: TEdit;
        editUpCode: TEdit;
        editDeptName: TEdit;
        editCreateDate: TEdit;
        editUpdateDate: TEdit;
        editState: TEdit;
        GroupBox2: TGroupBox;
        Label22: TLabel;
        Label24: TLabel;
        Label25: TLabel;
        Label26: TLabel;
        Label27: TLabel;
        Label28: TLabel;
        Label29: TLabel;
        Label30: TLabel;
        Label31: TLabel;
        editExtInfo1: TEdit;
        editExtInfo2: TEdit;
        editExtInfo3: TEdit;
        editExtInfo5: TEdit;
        editExtInfo6: TEdit;
        editExtInfo7: TEdit;
        editExtInfo8: TEdit;
        editExtInfo9: TEdit;
        editExtInfo10: TEdit;
        Label23: TLabel;
        editExtInfo4: TEdit;
        editCustCode: TEdit;
        Label1: TLabel;
        BitBtn1: TBitBtn;
        BitBtn2: TBitBtn;
        procedure BitBtn2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure BitBtn1Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
        l_CustBaseInfo:RCustBaseInfo;
        procedure ShowCustInfo;
        procedure InitialRecord;
      public
        { Public declarations }
        p_CustCode:String;
        procedure QueryCustBaseInfo;
      end;var
      frmDKHBaseInfo: TfrmDKHBaseInfo;implementationuses proDBQuery_TLB, unitQueryHint, unitStandard;{$R *.DFM}var
        l_IDBQuery:IDBQuery;procedure TfrmDKHBaseInfo.InitialRecord;
    begin        l_CustBaseInfo.CustCode:='';;
            l_CustBaseInfo.CustName:='';;
            l_CustBaseInfo.ChinaSpelling:='';;
            l_CustBaseInfo.AreaName:='';;
            l_CustBaseInfo.CustAddress:='';;
            l_CustBaseInfo.CustNum:='';;
            l_CustBaseInfo.CustType:='';;
            l_CustBaseInfo.custKind:='';;
            l_CustBaseInfo.CustID:='';;
            l_CustBaseInfo.CustGrade:='';;
            l_CustBaseInfo.StaffMgr:='';;
            l_CustBaseInfo.InfoCollector:='';;
            l_CustBaseInfo.SocialPerson:='';;
            l_CustBaseInfo.InfoTel:='';;
            l_CustBaseInfo.BolAgent:='';;
            l_CustBaseInfo.Level:='';;
            l_CustBaseInfo.InCode:='';;
            l_CustBaseInfo.UpCode:='';;
            l_CustBaseInfo.DeptName:='';;
            l_CustBaseInfo.CreateDate:='';;
            l_CustBaseInfo.UpdateDate:='';;
            l_CustBaseInfo.CustState:='';;
            l_CustBaseInfo.TelProvider:='';;
            l_CustBaseInfo.ExtField1:='';;
            l_CustBaseInfo.ExtField2:='';;
            l_CustBaseInfo.ExtField3:='';;
            l_CustBaseInfo.ExtField4:='';;
            l_CustBaseInfo.ExtField5:='';;
            l_CustBaseInfo.ExtField6:='';;
            l_CustBaseInfo.ExtField7:='';;
            l_CustBaseInfo.ExtField8:='';;
            l_CustBaseInfo.ExtField9:='';;
            l_CustBaseInfo.ExtField10:='';;
    end;procedure TfrmDKHBaseInfo.ShowCustInfo;
    begin        editCustCode.Text:=l_CustBaseInfo.CustCode;
            editCustName.Text :=l_CustBaseInfo.CustName;
            //l_CustBaseInfo.ChinaSpelling;
            editAreaName.Text :=l_CustBaseInfo.AreaName;
            editAreaAddress.text:=l_CustBaseInfo.CustAddress;
            editCustNum.text:=l_CustBaseInfo.CustNum;
            editCustType.text:=l_CustBaseInfo.CustType;
            editcustKind.text:=l_CustBaseInfo.custKind;
            editCustID.text:=l_CustBaseInfo.CustID;
            editCustGrade.text:=l_CustBaseInfo.CustGrade;
            editStaffMgr.text:=l_CustBaseInfo.StaffMgr;
            editInfoCollector.text:=l_CustBaseInfo.InfoCollector;
            editSocialPerson.text:=l_CustBaseInfo.SocialPerson;
            editInfoTel.text:=l_CustBaseInfo.InfoTel;
            editBolAgent.text:=l_CustBaseInfo.BolAgent;
            editLevel.text:=l_CustBaseInfo.Level;
            editInCode.text:=l_CustBaseInfo.InCode;
            editUpCode.text:=l_CustBaseInfo.UpCode;
            editDeptName.text:=l_CustBaseInfo.DeptName;
            editCreateDate.text:=l_CustBaseInfo.CreateDate;
            editUpdateDate.text:=l_CustBaseInfo.UpdateDate;
            editState.text:=l_CustBaseInfo.CustState;
            //editTelProvider.text:=l_CustBaseInfo.TelProvider;
            editExtinfo1.text:=l_CustBaseInfo.ExtField1;
            editExtinfo2.text:=l_CustBaseInfo.ExtField2;
            editExtinfo3.text:=l_CustBaseInfo.ExtField3;
            editExtinfo4.text:=l_CustBaseInfo.ExtField4;
            editExtinfo5.text:=l_CustBaseInfo.ExtField5;
            editExtinfo6.text:=l_CustBaseInfo.ExtField6;
            editExtinfo7.text:=l_CustBaseInfo.ExtField7;
            editExtinfo8.text:=l_CustBaseInfo.ExtField8;
            editExtinfo9.text:=l_CustBaseInfo.ExtField9;
            editExtinfo10.text:=l_CustBaseInfo.ExtField10;end;procedure TfrmDKHBaseInfo.QueryCustBaseInfo;
    var
        pRecordSet:OleVariant;
        strSQL:String;
    begin
        try
        if trim(p_CustCode)='' then Exit;
        frmQueryHint.show; //显示提示
        frmQueryHint.Refresh ;
        l_IDBQuery:=CoDBQuery.CreateRemote(ServerIP);
        //执行查询语句
        strSQL:='SELECT Custbaseinfo.CUST_CODE, Custbaseinfo.CUST_NAME, Custbaseinfo.CHINA_SPELLING, ';
        strSQL:=strSQL+' Custbaseinfo.CUST_ADDRESS, Custbaseinfo.CUST_NO, def_dict3.DEF_DICT_NAME, ';
        strSQL:=strSQL+' Custbaseinfo.KIND, Custbaseinfo.CUST_ID,def_dict2.DEF_DICT_NAME, staff.STAFF_NAME,';
        strSQL:=strSQL+' Custbaseinfo.INFO_COLLECTOR, Custbaseinfo.SOCIAL_PERSON, Custbaseinfo.INTO_TEL, ';
        strSQL:=strSQL+' Custbaseinfo.BOL_AGENT, def_dict4.DEF_DICT_NAME,b.CUST_NAME, ';
        strSQL:=strSQL+' a.CUST_NAME, dept.DEPTNAME, TO_Char(Custbaseinfo.INSERT_DATE,''YYYY-MM-DD''),';
        strSQL:=strSQL+' To_Char(Custbaseinfo.UPDATE_DATE,''YYYY-MM-DD''), def_dict.DEF_DICT_NAME, Custbaseinfo.OPERATOR,';
        strSQL:=strSQL+' Custbaseinfo.TEL_PROVIDER, Custbaseinfo.EXT_FIELD1, Custbaseinfo.EXT_FIELD2,';
        strSQL:=strSQL+' Custbaseinfo.EXT_FIELD3, Custbaseinfo.EXT_FIELD4, Custbaseinfo.EXT_FIELD5, ';
        strSQL:=strSQL+' Custbaseinfo.EXT_FIELD6, Custbaseinfo.EXT_FIELD7, Custbaseinfo.EXT_FIELD8,';
        strSQL:=strSQL+' Custbaseinfo.EXT_FIELD9, Custbaseinfo.EXT_FIELD10, Area.NAME ';
        strSQL:=strSQL+' FROM CUSTBASEINFO Custbaseinfo, AREA Area,CUSTBASEINFO a,CUSTBASEINFO b, ';
        strSQL:=strSQL+' STAFF staff,DEF_DICT def_dict,DEF_DICT def_dict2, DEF_DICT def_dict3, DEF_DICT def_dict4,DEPT dept';
        strSQL:=strSQL+' WHERE  (Custbaseinfo.AREA_ID = Area.AREA_ID(+))';
        strSQL:=strSQL+' AND  (Custbaseinfo.AREA_ID = Area.AREA_ID(+)) ';
        strSQL:=strSQL+' and Custbaseinfo.STAFF_ID=staff.STAFF_ID(+)';
        strSQL:=strSQL+' and Custbaseinfo.CUST_STATE=def_dict.DEF_DICT_CODE(+)';
        strSQL:=strSQL+' and Custbaseinfo.GRADE=def_dict2.DEF_DICT_CODE(+)';
        strSQL:=strSQL+' and Custbaseinfo.CUST_TYPE=def_dict3.DEF_DICT_CODE(+)';
        strSQL:=strSQL+' and Custbaseinfo.LEVEL_ID=def_dict4.DEF_DICT_CODE(+)';
        strSQL:=strSQL+' and Custbaseinfo.DEPT_ID=dept.DEPT_ID(+)';
        strSQL:=strSQL+' and Custbaseinfo.UP_CUST_CODE=a.CUST_CODE(+)';
        strSQL:=strSQL+' and Custbaseinfo.IN_CUST_CODE=b.CUST_CODE(+)';
        strSQL:=strSQL+' and RTRIM(LTRIM(Custbaseinfo.CUST_CODE))='''+Trim(p_CustCode)+'''';    l_IDBQuery.Query(strSQL,pRecordSet);
        if VarArrayDimCount(pRecordSet)=0 then
        begin
            frmQueryHInt.close;   //关闭提示
            l_IDBQuery:=nil;
            if pRecordSet=NULL then
                MessageDlg('查无此记录.',mtInformation,[mbOK],0)
            else
                MessageDlg('查询时发生异常.',mtInformation,[mbOK],0);
            editCustCode.Text :=l_CustBaseInfo.CustCode ;
            Exit;
        end;        InitialRecord;//清空记录        l_CustBaseInfo.CustCode := Trim(VarToStr(pRecordSet[1,1]));
            l_CustBaseInfo.CustName :=  Trim(VarToStr(pRecordSet[1,2]));
            l_CustBaseInfo.CustAddress := Trim(VarToStr(pRecordSet[1,4]));
            l_CustBaseInfo.CustNum := Trim(VarToStr(pRecordSet[1,5]));
            l_CustBaseInfo.CustType := Trim(VarToStr(pRecordSet[1,6]));
            if Trim(VarToStr(pRecordSet[1,7]))='01' then
                l_CustBaseInfo.custKind :='个人'
            else if Trim(VarToStr(pRecordSet[1,7]))='02' then
                l_CustBaseInfo.custKind :='企业'
            else
                l_CustBaseInfo.custKind :='';
            l_CustBaseInfo.CustID := Trim(VarToStr(pRecordSet[1,8]));
            l_CustBaseInfo.CustGrade := Trim(VarToStr(pRecordSet[1,9]));
            l_CustBaseInfo.StaffMgr := Trim(VarToStr(pRecordSet[1,10]));
            l_CustBaseInfo.InfoCollector := Trim(VarToStr(pRecordSet[1,11]));
            l_CustBaseInfo.SocialPerson := Trim(VarToStr(pRecordSet[1,12]));
            l_CustBaseInfo.InfoTel := Trim(VarToStr(pRecordSet[1,13]));
            if Trim(VarToStr(pRecordSet[1,14])) ='0' then
                l_CustBaseInfo.BolAgent :='不是'
            else if Trim(VarToStr(pRecordSet[1,14])) ='1' then
                l_CustBaseInfo.BolAgent :='是'
            else
                l_CustBaseInfo.BolAgent :='';
            l_CustBaseInfo.Level := Trim(VarToStr(pRecordSet[1,15]));
            l_CustBaseInfo.InCode := Trim(VarToStr(pRecordSet[1,16]));
            l_CustBaseInfo.UpCode := Trim(VarToStr(pRecordSet[1,17]));
            l_CustBaseInfo.DeptName := Trim(VarToStr(pRecordSet[1,18]));
            l_CustBaseInfo.CreateDate:=  Trim(VarToStr(pRecordSet[1,19]));
            l_CustBaseInfo.UpdateDate := Trim(VarToStr(pRecordSet[1,20]));
            l_CustBaseInfo.CustState := Trim(VarToStr(pRecordSet[1,21]));
            l_CustBaseInfo.ExtField1 := Trim(VarToStr(pRecordSet[1,24]));
            l_CustBaseInfo.ExtField2 := Trim(VarToStr(pRecordSet[1,25]));
            l_CustBaseInfo.ExtField3 := Trim(VarToStr(pRecordSet[1,26]));
            l_CustBaseInfo.ExtField4 := Trim(VarToStr(pRecordSet[1,27]));
            l_CustBaseInfo.ExtField5 := Trim(VarToStr(pRecordSet[1,28]));
            l_CustBaseInfo.ExtField6 := Trim(VarToStr(pRecordSet[1,29]));
            l_CustBaseInfo.ExtField7 := Trim(VarToStr(pRecordSet[1,30]));
            l_CustBaseInfo.ExtField8 := Trim(VarToStr(pRecordSet[1,31]));
            l_CustBaseInfo.ExtField9 := Trim(VarToStr(pRecordSet[1,32]));
            l_CustBaseInfo.ExtField10 := Trim(VarToStr(pRecordSet[1,33]));
            l_CustBaseInfo.AreaName := Trim(VarToStr(pRecordSet[1,34]));    //执行查询语句        ShowCustInfo;//显示记录
            frmQueryHInt.close;   //关闭提示
            l_IDBQuery:=nil;
            except
            frmQueryHInt.close;   //关闭提示
            l_IDBQuery:=nil;
            end;
    end;procedure TfrmDKHBaseInfo.BitBtn2Click(Sender: TObject);
    begin
        Close;
    end;procedure TfrmDKHBaseInfo.FormCreate(Sender: TObject);
    begin
        p_CustCode:='';    
    end;procedure TfrmDKHBaseInfo.BitBtn1Click(Sender: TObject);
    begin
        p_CustCode:=Trim(editCustCode.Text) ;
        QueryCustBaseInfo;
    end;procedure TfrmDKHBaseInfo.FormDestroy(Sender: TObject);
    begin
        frmDKHBaseInfo:=nil;
    end;procedure TfrmDKHBaseInfo.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
        Action:=caFree;
    end;procedure TfrmDKHBaseInfo.FormShow(Sender: TObject);
    begin
        InitialRecord;//清空记录
        ShowCustInfo;//显示记录
        QueryCustBaseInfo;end;end.
      

  15.   

    还是把数据库组件都坐在Datamodal里了
      

  16.   

    procedure TfrmDKHBaseInfo.FormShow(Sender: TObject);
    begin
        InitialRecord;//清空记录
        ShowCustInfo;//显示记录
        QueryCustBaseInfo;end;看来问题出在这里,应该先把数据库初始化,你创建窗体时
    tabel没有创建,总之,数据库组件还没有创建
    在Oncreat事件里先创建数据库组件
      

  17.   

    要不把数据库组件都做在DateModal里
    反正挺麻烦
    维护别人的代码最难了
    呵呵
      

  18.   

    to aningstar(乘风破浪终有时),多谢你的热心,
    但是我的 程序并没有用数据组件,数据是从中间层(com)取出的,
    我想毛病可能出现在子窗体的属性设置或者事件处理
      

  19.   

    不好意思
    我不清楚中间层的技术
    不过我感觉问题就出现在这里,也许应该先初始化COM
    可能是窗体并没有和中间层“连通”吧
    很抱歉
    帮不了你了