两个问题都不难但我不会

delfans 2001-06-15 02:05:00
1、我在form里有一个Label1控件,我在搜索目录时不断变换Label1.Caption的内容好让它显示我正在搜索的目录,可执行时它根本不变,直到最后才显示出最后搜索的目录,为何?怎么解决?

2、一个ProgressBar控件,指定其Min和Max后,在程序中变化其Position,但运行时看不到变化。

...全文
146 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
stella53 2001-06-18
  • 打赏
  • 举报
回复
循环中加一句:
Label1.Update;
就OK了,我做过,没有问题。。。
C_Sharp 2001-06-18
  • 打赏
  • 举报
回复
循环里
delfans 2001-06-18
  • 打赏
  • 举报
回复
to C_Sharp:

>>或者,在搜索里加上Application.ProcessMessages;就可以处理另外的消息了。

应该加在什么位置呢?
C_Sharp 2001-06-17
  • 打赏
  • 举报
回复
或者,在搜索里加上Application.ProcessMessages;就可以处理另外的消息了。
C_Sharp 2001-06-17
  • 打赏
  • 举报
回复
新建线程来搜索。
delfans 2001-06-15
  • 打赏
  • 举报
回复
我试了一下,用label1.refresh就可以,
但用Application.ProcessMessages;还是没效果哦

另外,我想在搜索时可以单击一个button来停止搜索,但现在一开始搜索后form里的所有button都不接受点击了怎么办?

zy61 2001-06-15
  • 打赏
  • 举报
回复
我是说你查找目录的那段程序写在什么地方
zy61 2001-06-15
  • 打赏
  • 举报
回复
你的查找部分在哪里
colacoca 2001-06-15
  • 打赏
  • 举报
回复
不要意思,打错了,应该是:
Label1.Caption:='正在查找'+DirList[i]+StringOfChar('.',(i mod 3)+1);
nisky 2001-06-15
  • 打赏
  • 举报
回复
如果你是在一个循环中的话,他不会变的,因为眼睛来不及看。
colacoca 2001-06-15
  • 打赏
  • 举报
回复
而且你可以把:
Label1.Caption:='正在查找'+DirList[i]+'...';
改为:
Label1.Caption:='正在查找'+DirList[i]+StringOfChar('.',Mod(i,3)+1);
这样就可以让后面的点由一个到三个循环变化


不知道你的high(DirList)大不大,如果代码执行的太快,就可以在Label.Caption前加上
Sleep(200);
用于延迟200毫秒
colacoca 2001-06-15
  • 打赏
  • 举报
回复
你可以改为这样,一定行的:
proBar.min:=0;
proBar.max:=high(DirList);
proBar.position:=0;

//*****
Application.ProcessMessages; //只添加此句即可
//*****

for i:=0 to high(DirList) do
begin
proBar.Position:=i;
Label1.Caption:='正在查找'+DirList[i]+'...';
end;
ghz2000 2001-06-15
  • 打赏
  • 举报
回复
proBar.min:=0;
proBar.max:=high(DirList);
proBar.position:=0;

for i:=0 to high(DirList) do
begin
proBar.Position:=i;
proBar.update;
Label1.Caption:='正在查找'+DirList[i]+'...';
end;
delfans 2001-06-15
  • 打赏
  • 举报
回复
源码是这样:
proBar.min:=0;
proBar.max:=high(DirList);
proBar.position:=0;

for i:=0 to high(DirList) do
begin
proBar.Position:=i;
Label1.Caption:='正在查找'+DirList[i]+'...';
end;
hlfsoft 2001-06-15
  • 打赏
  • 举报
回复
label.refresh和application.processmessages都可以
xclxd 2001-06-15
  • 打赏
  • 举报
回复
同意colacoca。
colacoca 2001-06-15
  • 打赏
  • 举报
回复
要转让控制权,在循环前加上
Application.ProcessMessages;
即可,给分吧
colacoca 2001-06-15
  • 打赏
  • 举报
回复
要转让控制权,在循环前加上
Application.ProcessMessages;
即可
C_Sharp 2001-06-15
  • 打赏
  • 举报
回复
1.加句Label1.Refresh看看。

2。你写了StepIt吗?
ghz2000 2001-06-15
  • 打赏
  • 举报
回复
Label1.Caption
改变问题我可能要看你的源码才知道怎么回事?
大概估计你可能是将Label1.Caption:=***写在 do while的外面了
呵呵!
加载更多回复(1)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧