我希望使用数据库中的数据动态建立控件,我的程序如下:
var
    MyLabel: TLabel;
    MyEdit: TEdit;
    myleft,mytop,mytop1:integer;
    addrecord:Taddrecord;implementation
procedure Taddrecord.FormCreate(Sender: TObject);
var
showsql,sql,fieldname,cfname:String;
begin
  myleft:=24;
  mytop:=60;
  mytop1:=45;
  addshowQuery.Close;
  addshowQuery.SQL.Clear;
  showsql := 'select * from DEPAR_defining where DEPARTID = 1 and isview = 1';
  addshowQuery.SQL.Add(showsql);
  addshowQuery.Open;
  addshowQuery.Recordset.MoveFirst;
  while not addshowQuery.Recordset.EOF do
  begin
  myedit := Tedit.Create(self);
  myedit.Parent := addrecord;
  with myedit do
      begin
       left:=myleft;
       top:=mytop;
       width:=100;
       height:=21;
       //onkeydown:=myedit_keydown;
       fieldname := addshowQuery.Recordset.Fields[2].Value;
       //edit1.Text := edit1.Text+'  '+fieldname;
       name:='edit'+fieldname;
       text:='';
       cfname := addshowQuery.Recordset.Fields[8].Value;
       visible := true;
       //hint :='请录入' +cfname;
  end;
    myleft := myleft + 150;
  if myleft> 1024-100-24 then
  begin
  myleft:=24;
  mytop:=mytop+40;
  end;
   addshowQuery.Recordset.MoveNext;
  end;
end;
表DEPAR_defining中的字段全为char,这是一个子窗口,我在调用它的窗口(也为子窗口)中写了如下代码调用:addrecord:=Taddrecord.Create(Self);
addrecord.show;但是结果让我很奇怪,程序不报错,一切正常,结果出现的是一个空窗口!!!!我的数据库中保证有数据。使用的是ACCESS数据库。
我把这段程序放在一个单独的工程中,只有一个窗口,它出来过,现在出不来,这是为什么?多谢各位高手了!!!

解决方案 »

  1.   

    addrecord:=Taddrecord.Create(Self);
    addrecord:=Taddrecord.Create(Application);
    试一下,你整理一下你的代码,有些乱
      

  2.   


    myedit.Parent := addrecord;
    改为
    myedit.Parent := self;
      

  3.   

    >> myedit.Parent := addrecord;
    檢查這句, addrecord 是什麼??>> text:='';

    addshowQuery.First;
    addshowQuery.Next;
    就好
      

  4.   

    myedit := Tedit.Create(self);改成:myedit := Tedit.Create(addrecord);
      

  5.   

    多谢,已经成功了,dulei115()  的方法解决了问题,最好能告诉我为什么不能用self,不能在用我的窗口名做父?先结帖了。