我想用以下代码实现每隔一秒钟刷新一次图像,但却没有用,似乎图像永远不会变化:
procedure TForm1.tmr1Timer(Sender: TObject);
begin
hFile := FileOpen(loc, fmOpenWrite or fmShareDenyNone);
GetFileTime(hFile,nil, @FT,nil);
CloseHandle(hfile);
if (FT.dwLowDateTime=ft1.dwLowDateTime) and (ft1.dwHighDateTime=FT.dwHighDateTime) then
begin
if FileExists(loc) then
begin
showimage.Picture.LoadFromFile(loc);
ShowImage.Refresh;
end;
end;
end;
procedure TForm1.tmr1Timer(Sender: TObject);
begin
hFile := FileOpen(loc, fmOpenWrite or fmShareDenyNone);
GetFileTime(hFile,nil, @FT,nil);
CloseHandle(hfile);
if (FT.dwLowDateTime=ft1.dwLowDateTime) and (ft1.dwHighDateTime=FT.dwHighDateTime) then
begin
if FileExists(loc) then
begin
showimage.Picture.LoadFromFile(loc);
ShowImage.Refresh;
end;
end;
end;
然后再看看你的事件中的执行情况
楼主可以先将那个过程用一个Button事件来代替,然后你点击一下,并跟踪调试
看执行的情况你应该可以查出问题的所在的
测试方法:
用画图程序打开一个图像文件,随便用画笔乱画几笔,不保存,选择菜单:文件—打开,再次打开这个文件,在弹出对话框时选择否(不保存),结果打开的图像为修改过的图像,而事实上图片未被修改(用另一个画图程序打开即可发现图像未被修改)
if (FT.dwLowDateTime=ft1.dwLowDateTime) then
Exit;
语句好像变成没用的了。
procedure TForm1.tmr1Timer(Sender: TObject);
begin
hFile := FileOpen(loc, fmOpenWrite or fmShareDenyNone);
GetFileTime(hFile,nil, @FT,nil);
CloseHandle(hfile);
if (FT.dwLowDateTime=ft1.dwLowDateTime) then
Exit;
if (FT.dwLowDateTime<>ft1.dwLowDateTime) then
begin
if FileExists(loc) then
begin
showimage.Picture.LoadFromFile(loc);
end;
ft1:=FT;
end;end;