主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

向下

将输出锁定到循环中的Edit。 找到类似的分支


EsKor   (2002-04-12 09:00) [0]

在闲暇时,我检查了一本书的一位作者的分类陈述,即完成后循环的变量(计数器)未定义,偶然发现,下面的代码中可能有轻微的耙子:

procedure TForm1.Button1Click(Sender: TObject);
var i: Cardinal;
begin
Edit2.Text := "Ждите!"; //что-бы не волноваться если цикл будет долгим
for i := 1 to StrToInt(Edit1.Text) do; //просто пустой цикл
Edit2.Text := IntTostr(i); //отобразить значение счетчика цикла
end;

有一个天真的假设,“等待!”这个词将首先出现在Edit2中,然后循环将开始。 但它并不存在 - 在循环结束之前,Edit2中没有任何新内容。 我实际上通过在循环之前插入Application.ProcessMessages语句找到了解决方案。 是的,如果指令Edit2.Text:= IntTostr(i),则会出现类似的问题。 放入循环体,即 尝试在每次通过时显示计数器的值 - 同样,Application.ProcessMessages也必须放在那里,这会显着增加循环时间。 在某种程度上认为这里出现问题是不舒服的:如果这是一般的Windows功能,那么事实证明你需要“放牧”类似的情况并插入一个额外的代码(可以有其他解决方案吗?),或者这是我的Delphi版本中的某种故障吗?



Alx2   (2002-04-12 09:05) [1]

Edit1应该重绘。 为此,您需要处理消息。 这个机会给出了ProcessMessages



Игорь Шевченко   (2002-04-12 09:25) [2]

美好的一天,

或者ProcessMessages,或者在赋值Edit1.Text之后,必须调用Edit1.Update;

真诚的,



KSergey   (2002-04-12 09:37) [3]

是的,这不是故障,你正确回答
作为一个选项,您也可以调用Repaint方法和其他类似的方法(似乎还有某种方法)来立即绘制元素。
我建议你阅读Windows的实际工作原理。



EsKor   (2002-04-12 10:02) [4]

谢谢你的回答!
关于Windows的工作,我知道,当然,不是全部。 我只是没想到,特别是周期,所以冷静地“挂起”系统。



kull   (2002-04-12 10:26) [5]

他们不会挂起系统。
只是你的循环在主线程中旋转,主线程处理所有事件,包括重绘。

在退出事件过程之前,队列中的下一个将不会被处理。
ProcessMessages强制程序处理队列中累积的事件。

所以系统不会挂起,这只是一个概念。

还有一个解决方案,在我看来 - 正确的解决方案,特别是如果周期很长 - 这是一个单独的TThread线程。



REA   (2002-04-12 10:46) [6]

没有人每次强制重绘。 它可能每秒一次。



EsKor   (2002-04-12 10:51) [7]

>库尔
即 事情并不完全在循环中,事实上,只有在点击按钮处理完成后,才会更新编辑(没有强制)的信息? 是的,直到现在,我不知道怎么没注意到这一点并没有想到,显然没有任何理由。



Страницы: 1 整个分支

论坛:“主要”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

楼上





内存:0.57 MB
时间:0.021 c
1-80854
Sanyok
2002-04-13 12:06
2002.04.25
怎么重新编码?


3-80740
TB2
2002-04-05 22:03
2002.04.25
对我来说非常重要的问题。


3-80792
Koks的
2002-04-04 12:30
2002.04.25
ADO - >访问2000 ????


3-80811
valievrf
2002-04-05 12:39
2002.04.25
有关数据库的信息


3-80795
Draculenok
2002-03-21 12:54
2002.04.25
关于QReporty的问题!!!!!!!!





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法语
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 淡米尔文 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский