两个小问题(10分)

  • 主题发起人 主题发起人 seraphcj
  • 开始时间 开始时间
S

seraphcj

Unregistered / Unconfirmed
GUEST, unregistred user!
两个问题:
1)我在一个application里面有两个form : form1,form2,如果我想从form1里启动form2,然后当form2启动时候,在使得form1关闭,请问如何做?
我原来的方法是在form1的某个按钮按下时候form2.show;
然后再在form2的启动函数OnCreate里面form1.Close,但这样更本不行,因为form2是包含在form1里面的,所以一旦form1.Close运行,form2首先被关闭。。。
请问解决方案

2)我有一个clientdataset,当我运行过某些取数原则后则,clientdataset中就有了数据,当我希望把这些数据清空时,我该怎么用呢?
我原来的方法是:
clientdataset1.Open;
clientdataset1.Edit;
clietndataset1.ClearFields;

但是当我用一下语句检验时候,却发现不对;
clientdataset1.Open;
if clientdataset1.IsEmpty() then
Showmessage('empty');
else
showmessage('no empty');

结果显示不为空,请问解决方法。
 
你的第一个问题我试过了,可能是我的水平太底。不过你可以用Form1.Hide;来隐藏窗口。
你把数据库的状态设为Edit 然后在调用clietndataset1.ClearFields;
 
我有一个clientdataset,当我运行过某些取数原则后则,clientdataset中就有了数据,当我希望把这些数据清空时,我该怎么用呢?
我原来的方法是:
clientdataset1.Open;
clientdataset1.Edit;
clietndataset1.ClearFields;

我已经edit设置了呀。。。
 
请查找关于启动封面的制作之类的内容。
例:
创建一启动 from1
在project菜单下的Options中确保本from没有出现在auto_create中
在项目文件中加入代码:
begin
Application Initialize;
form1:=Tform1.Create(Application);
form1.show;
form1.update;
.......
Application.Createform(Tform2,form2);
form1.hide;
form1.free;
Application.run;
end;
 
多个窗体的显示:
你首先要搞清楚哪个窗体是程序的主窗体。在Delphi中,主窗体只能Hide,不可以Close(除非
你关闭程序),因为主窗体的生命期就是程序存在的时间。
然后你要搞清楚窗体之间的关系。是父子关系还是兄弟关系,父子关系那只可以父关闭子,绝
对没有子关闭父的道理(与我们现实中的父子关系差不多[:)]);如果是兄弟关系,那就随便
你怎么关闭了。
多窗口程序的窗口到底隐藏还是关闭要看你的程序具体情况了:
关闭的话可以节省内存,隐藏的话可以节省时间,到底是Hide还是Close要看你比较时间和内存
代价来决定了!
 
第二个问题,ClearFields是用来清除当前记录的,
并不是所有记录。
 
你的form1/form2都是自动创建的吧?
form2.oncreate是在form2.create之后发生的。
create-->oncreate-->show-->onshow-->onactive
 
你的Form2的Owner是不是Form1?所以Form1 Free的时候就会释放Form2。
所以你要Form2 := TForm2.Create(nil)或Form2 := TForm2.Create(Application)反正不要
Form1。还有你的Form1不能是第一个创建的TForm,因为如果是自动创建的就会导致这个窗体
成为Application.MainForm了。
 
创建Form2窗体的按钮中代码:
begin
if Form2=NIL then
begin
Application.CreateForm(TForm2,Form2);
Form2.show;
end
else
Form2.show;
Close;
end;
Form1窗体的Close事件:
begin
release;
Form1:=nil;
end;
 
一般table,ClearFields 用得较多ClearFields 而Query 用下面句子
while not clientdataset1.eof do
clientdataset1.delete;
不信你试试
 
后退
顶部