问个关于FormCreate的基本问题。(50分)

  • 主题发起人 主题发起人 lily
  • 开始时间 开始时间
L

lily

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在程序中需要在生成窗体时动态生成combobox的items,于是编了如下的
FormCreate过程,但在运行中设了断点,发觉FormCreate过程并没有运行,不
知道错在哪里,劳烦各位指教一下。
procedure TForm1.FormCreate(Sender:Tobject);
var
mc:string;
begin
QrySpmc.prepare;
QrySpmc.Open;
QrySpmc.First;
while not QrySpmc.eof do
begin
mc:=QrySpmc.fieldbyname('spmc').asstring;
ComboBox1.Items.Add(mc);
QrySpmc.Next;
end;
end;
 
程序没错.
formcreate没有运行?
是不是你没有指定OnCreate事件?
 
what about onshow?
 
如果你的form不是mainform,那么可能又被CJ"蒙"着了.

因为非mainform的OnCreate事件只在程序一开始发生,一旦create之后,
close也不会释放(当然你可以自己控制释放他),以后每次仅仅show,不会
再create了.
 
很奇怪没有运行。
试试编辑状态时在主窗口(就是你这个窗口)上双击,再运行。
 
FormCreate事件一定会执行的,不管是在程序启动时或者
是被动的
From1 := TForm1.Create(nil);
除非如Another_eyes所言,没有指定oncreate事件
另外如果没有结果,是否是你的Query没有结果呢?
 
1. no tform1.create
2. form1.oncreate not point to form1.formcreate
 
如果以上方法都无效的话........
看看Project->Option->Compiler里是否选中了Release了。
因为这会导致无法跟踪!!
 
FormCreate事件一定会执行.不过我感觉是否没说清楚,
是否是子窗口的FormCreate过程,如果是子窗口,
是否被CREATE过,再有一个笨办法就是在断点中加入SHOWMESSAGE('');
我在调式组件时都这样干的,那还没法加断点!!

 
Try Complier All Command!
有时Delphi IDE 有问题,设的断点被Disable,Complier All可以恢复。
 
你用的是query还是Table?
如是query,看看query有没有结果或者Sql属性?
有没有正确设置DataSource?
 
你的断点是不是放的不是地方,
用ShowMessage('enter')更直接一些
你可以在form上加一个dbgrid,将其定位到query上
在调试环境下让query.Active:=true;看看dbgrid有没有数据
 
一个问题,你的这个事件有没有连接在FORM的OnCreate事件上。请检查Object Inspect。或在代码中设置断点,确认。
 
如果是由主程序创建的窗体,那么在程序刚开始运行,创建该窗体的时候
就运行了.
从此二级窗体只调用OnShow,OnActivity两个过程.
 
同意Another_eyes
 
竟然有这样的人提了问题就一声不响消声灭迹了分分了
 
后退
顶部