各位高手,帮忙看看怎么回事,我憋两天了,不知道问题在哪里!!!!

时间:2023-01-16 19:23:32
我希望使用数据库中的数据动态建立控件,我的程序如下:
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数据库。
我把这段程序放在一个单独的工程中,只有一个窗口,它出来过,现在出不来,这是为什么?多谢各位高手了!!!

6 个解决方案

#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


容我回去试验一下再来结帖,多谢各位了

#6


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

#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


容我回去试验一下再来结帖,多谢各位了

#6


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