请问如何将一个信息提示窗口自动建立,然后自动释放掉?(50分)

  • 主题发起人 主题发起人 ggg
  • 开始时间 开始时间
G

ggg

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在系统对数据库进行批量修改时,有一个信息提示窗口,显示工作进展情况。

但我在建立这个窗口后,却无法在数据库修改完毕后将其自动释放,除非在窗体加一个CLOSE

按钮,进行手工删除。如果这样的话就太俗了!

procedure TForm3.FormActivate(Sender: TObject);
begin
progressbar1.Max:=form1.Query1.RecordCount;
progressbar1.Position:=0;
progressbar1.Repaint;
form1.Query1.First;
while not form1.Query1.EOF do
begin
form1.Query1.Edit;
form1.Query1.Fields[2].AsString:='ggg';
progressbar1.Position:=progressbar1.Position+1;
sleep(10);
form1.Query1.Next;
end
end;
 
在两个end之间加上close;不行吗?
 
你搞反了,应该由Form1来打开、显示和关闭Form3

1.主程序:
Form3 := TForm3.Create(Application);
with Form3 do
begin
progressBar1.Max := Query1.RecordCount;
progressBar1.Position := 0;
Show;
end;
with Query1 do
begin
First;
while not Eof do
begin
Edit;
Fields[2].AsString := 'ggg';
Next;
end;
Close;
end;

2.定义Form1中的Query1的AfterScroll事件:
procedure TForm1.Query1AfterScroll(Dataset: TDataset);
begin
with Form3 do
if not Dataset.Eof then
begin
progressBar1.Position := Dataset.RecNo;
Refresh;
end
else
begin
Close;
Free;
end;
end;

BTW:Close一个Form不等于Free一个Form
 
这样做:
Form3 := TForm3.Create(Application);
with Form3.progressBar1 do
begin
Max := Query1.RecordCount;
Position := 0;
Form3.Show;
with Query1 do
begin
First;
while not Eof do
begin
Edit;
Fields[2].AsString := 'ggg';
Application.processmessages;
position := position+1; //or: stepit;
Next;
end;
Close;
end;
end;
Form3.Free;
 
加一个时钟不是挺省事的,还可以控制显示出来的时间
 
;想自动的实现窗口的关闭,有两种方法:
1 加一个按扭触发CLOSE事件。
2 使用时钟来控制。
设计期将FORM3的TIMER1的ENABLED;=FALSE;
Form3 := TForm3.Create(Application);
with Form3 dobegin
progressBar1.Max := Query1.RecordCount;
progressBar1.Position := 0;
Timer1.enabled:=true;
Show;
end;
with Query1 do
begin
First;
while not Eof do
begin
Edit;
Fields[2].AsString := 'ggg';
Next;
end;
Close;
end;
在时钟的触发事件中检测
if Processbar1.position=processbar1.max
then begin
timer1.enabled:=false;
timer1.free;
close;
end;
 
记得在OnActive事件内是不能调用Close的,
但是可以用Timer,在OnTimer事件里Close.
或者用无模式的对话框,在主Form里关.总之
实现方法是多种多样的.
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部