请问frame怎么释放才能在创建的时候不会报错??(50分)

  • 主题发起人 主题发起人 heijuanma
  • 开始时间 开始时间
H

heijuanma

Unregistered / Unconfirmed
GUEST, unregistred user!
请问frame怎么释放,我的frame上面还有其它的像combobox控件,在不改变其值的时候怎么释放和创建都
不会出错,便要是改变了其中的值之后,再释放和创建的时候就就会报地址错误了,在改变有的控件的值
的时候我检查到,我用free根本就没有完全释放完全,有的没有释放。
怎么样释放才能在创建的时候不会报错??我认为是在释放的时候没有释放完,所以在
创建的时候老报地址错?
 
我在线等啊,各位大侠请帮忙
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action :=caFree ;
end;
 
不是窗体啊
是frame啊,兄弟
 
把你的创建和释放代码贴出来
 
for counts:=mainform.ControlCount downto 4 do //if mainform.ControlCount>4 then
mainform.Controls[3].Free;
tw_kangu:=nil;
tw_kangu:=TTW_kangu.Create(mainform);
 
我做了一个试验。
1、一个Form1
2、一个Frame2
3、Frame2中有Button1、Edit1、ComboBox1
4、Form1上有Frame21何一个按钮Button1
5、Button1.OnClick的代码只有Frame21.Free

实验结果,释放(Frame21.Free)没有任何问题。
 
问题:请问frame怎么释放才能在创建的时候不会报错?? ( 积分:50, 回复:7, 阅读:33 )
分类:系统相关 ( 版主:luyear, zyy04 )
来自:heijuanma, 时间:2003-1-13 13:38:00, ID:1576823 [显示:小字体 | 大字体]
请问frame怎么释放,我的frame上面还有其它的像combobox控件,在不改变其值的时候怎么释放和创建都
不会出错,便要是改变了其中的值之后,再释放和创建的时候就就会报地址错误了,在改变有的控件的值
的时候我检查到,我用free根本就没有完全释放完全,有的没有释放。
怎么样释放才能在创建的时候不会报错??我认为是在释放的时候没有释放完,所以在
创建的时候老报地址错?


来自:heijuanma, 时间:2003-1-13 13:40:00, ID:1576832
我在线等啊,各位大侠请帮忙


来自:heijuanma, 时间:2003-1-13 13:42:00, ID:1576842
up


来自:Puma Wang, 时间:2003-1-13 13:49:00, ID:1576882
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action :=caFree ;
end;


来自:heijuanma, 时间:2003-1-13 13:52:00, ID:1576898
不是窗体啊
是frame啊,兄弟


来自:lanbing1400, 时间:2003-1-13 14:12:00, ID:1576937
把你的创建和释放代码贴出来


来自:heijuanma, 时间:2003-1-13 14:21:00, ID:1576961
for counts:=mainform.ControlCount downto 4 do //if mainform.ControlCount>4 then
mainform.Controls[3].Free;
tw_kangu:=nil; //前面不知道你什么意思,但这里最起码得这样写吧 if assinged(tw_kanggu) then
tw_kangu:=TTW_kangu.Create(mainform);


 
难道frame也是动态创建的?如果不是,就不用动态释放。
 
for counts:=mainform.ControlCount downto 4 do //if mainform.ControlCount>4 then
mainform.Controls[3].Free;//错误!!!!!!
///////////
var
T:Tcontrol;
t:= mainform.Controls[3];
mainform.removecontrol(t);//是这个意思,但是函数名称可能不对
t.free;
这是安全的
 
to zhoufujin:
你的方法我早就试过了,通过跟踪可以发现,根本就没有释放完,前几次都不会报错,
但多运行之次跟踪的时候就可以看到一个低位的地址赋给了frame上的其它类,可以说是
一个假地址,所以会报错,我也不知道什么原因,也许真的是我的程序太乱了,不过不可能啊
,我查帮助,free是完全可以释放的啊!
to 52free:
怎么说了,要是我把我的程序代码全贴出来,那公司可不允许,其实我也不知道怎么样
才能说清楚,反正就是动态释放frame和动态创建frame,我这里的frame是当窗口用的,不过
你们也知道他有的地方跟窗口不一样了。

须便问一下各位大侠,我能过adoquery动态查询数据库,我想他在在dbgrid中显示的时候
所有字段的长度是一样的???那个搞不定,谁回答出这个问题,我就把 他给他了。
 
没有人帮忙吗、?
 
????.Free是完全释放,但是他原来的内存内的信息不变,
如果????的指针没有????.Create却再指向这个内存,使用该指针
一定出错!!!!!
 
大侠,那解决办法是什么,你不可能叫我不释放吧,那样会死机的
 
须便问一下各位大侠,我能过adoquery动态查询数据库,我想他在在dbgrid中显示的时候
所有字段的长度是一样的???那个搞不定,谁回答出这个问题,我就把 他给他了。
//////////////////////////////////////////////////////////////////////////
回答:
for i:=0 to Query.FieldCount-1 do
begin
....
Query.Fields.DisplayWidth:=55;//你要的字段长度
....
end;


 
to 没理头号:
你那个问题帮我解决了,我会给分你的了,不过还有一小问,就是dbgrid在显示的时候,
如果显示的记录只有一条,dbgrid的竖向滚动条就出现了,第一条记录到dbgrid的底还可以
显示好多记录了,就出现了竖向的滚动条了,我想请问,有办法在只有需要显示的时候才显示,
不需要的时候根本就不显示吗?
 
多人接受答案了。
 
后退
顶部