循环中有延时,导致在循化执行中不能关闭,如何可以关闭?
程序循化取出数据库的URL,然后在webbrowser打开,每次打开间隔10s。
procedure Delay(dwMilliseconds: Longint);
var
iStart, iStop: DWORD;
begin
iStart := GetTickCount;
repeat
iStop := GetTickCount;
Application.ProcessMessages;
until (iStop - iStart) >= dwMilliseconds;
end;procedure TForm1.Button1Click(Sender: TObject);
begin Form1.ADOQuery1.Close;
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add('select * from keywords');
Form1.ADOQuery1.Active:=True;
Form1.ADOQuery1.ExecSQL;
ADOQuery1.first; b:=true;
while(b) do
begin
while not adoquery1.eof do
begin
if not b then break; WebBrowser1.Navigate(ADOQuery1.FieldByName('KeyURL').value);
Delay(10000);
repeat
Application.ProcessMessages;
until (not webbrowser1.Busy); adoquery1.next; end;
end;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
b:=false;
end;
解决方案 »
- delphi的 WebBrowser1刷新10分钟刷新一次
- unicode 问题:delphi2009 中使用indy 的 IdTCPClient 发送数据(包含中文),服务端为linux C程序,linux显示乱码,返回的中文delphi 也显示成乱码
- listview排序问题
- 为什么无法获得SocketConnection.AppServer接口方法!
- 找Delphi程序员
- 用户在edit1中输入:c:\aa\bb\cc\efg(由用户输入任意的路径,可能存在,可能不存在)
- 请问下面的函数在d7中如何声明
- 请问怎么样将ListView中的内容保存成.xml的文件,然后再导到数据库里面?谢谢大家
- dll的调用问题
- 如果大家都认为应用开发平台做不了复杂的业务逻辑的话,那这样的平台呢?
- 在窗体中实现快速登录QQ
- 关于线程中变量的初始化
type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
ADOQuery1: TADOQuery;
WebBrowser1: TWebBrowser;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
FList: TStrings;
FIndex: Integer;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
FList := TStringList.Create;
Timer1.Enabled := False;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FList.Free;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
FList.Clear;
FIndex := 0;
with ADOQuery1 do begin
SQL.Text := 'select * from keywords';
ExecSQL;
while not Eof do begin
FList.Add(FieldByName('KeyURL').value);
Next;
end;
end;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if FIndex < FList.Count then begin
WebBrowser1.Navigate(FList.Strings(FIndex);
Inc(FIndex);
end else
Timer1.Enabled := False;
end;end.
begin
FList.Clear;
FIndex := 0;
with ADOQuery1 do begin
SQL.Text := 'select * from keywords';
Open;
while not Eof do begin
FList.Add(FieldByName('KeyURL').value);
Next;
end;
Close;
end;
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if FIndex < FList.Count then begin
WebBrowser1.Navigate(FList.Strings[FIndex]);
Inc(FIndex);
end else
Timer1.Enabled := False;
end;
你不用任务管理器看看 Delay 函数延时的时候,你的程序占用的 CPU 有多高!