文章 "图形界面 IX: 进度条和线形图表控件 (第二章)" - 页 2 1234 新评论 Алексей Тарабанов 2016.08.21 03:30 #11 Artyom Trishkin:为什么?在程序开始时声明数据类型,然后启动你所声明类型的 变量值。m_progress_bar.Update(i,total);根本什么都没有显示。它应该显示多大的条形图? Artyom Trishkin 2016.08.21 03:38 #12 Алексей Тарабанов: 在程序开始时声明数据类型,然后启动已声明类型的 变量值。 循环变量有什么问题? Artyom Trishkin 2016.08.21 03:39 #13 Алексей Тарабанов:...m_progress_bar.Update(i,total); 完全没有显示。应该显示多大的条形图? double new_width=(m_current_index/m_steps_total)*m_bar_bg.XSize(); 像这样... Алексей Тарабанов 2016.08.21 04:01 #14 Artyom Trishkin: 像这样...1.数据类型声明。2.为 该类型的变量赋值。如果没有加起来,那么--你弄错了什么。进入房间的规则 1.手榴弹 2.自动步枪 3. Я. 最重要的是不要混淆。 Artyom Trishkin 2016.08.21 04:18 #15 Алексей Тарабанов:1.数据类型声明。2.为 该类型的变量赋值。如果没有加起来,那么--你弄错了什么。进入房间的规则 1.手榴弹 2.自动步枪 3. Я. 最重要的是不要混淆。也许你的话对我度假的头脑来说太明智了....。为什么是zuid-zuid-west? Anatoli Kazharski 2016.08.21 08:22 #16 Artyom Trishkin:阿纳托利,很抱歉打扰您,但我想知道如何才能在一个计算量很大的循环中更新进度条。例如,我们有一个进度条 m_progress_bar,在 CProgram 内部有一个循环。您能在这样一个 "抽象 "的例子中解释一下我不明白的地方吗?也许这些繁重的计算太长,以至于程序无法退出Func() 函数?这就是进度条不更新的原因吗?也许这里有一个永久循环? m_progress_bar.Show(); // 是没有意义的,因为在显示绑定它的窗口 (m_window.Show()) 时,它已经立即可见、 // 我希望将其创建为隐藏状态,并在需要时显示出来每个元素都有Show() 和Hide() 方法来控制其可见性。m_progress_bar.Hide(); 由于某些原因,// 不能隐藏进度条,我必须将其隐藏在另一个图形对象下。//---一般来说,断章取义的代码块很难说明问题。GUIs X: Updates for Easy And Fast library (build 2) 一文中展示了一个带有进度条的示例,该示例一切正常。 Anatoli Kazharski 2016.08.21 10:51 #17 更好的办法是,附上一段最短的代码以供播放。这是获得提示的最快方法。一个简单的示意图就足以重现:带按钮的主窗口。带有两个元素的对话窗口:(1) 一个按钮;(2) 一个进度条,最初是隐藏的(创建后立即隐藏)。主窗口上的按钮打开对话框。对话框上的按钮启动 "大量计算"。 Artyom Trishkin 2016.08.22 11:10 #18 Anatoli Kazharski:可能这些繁重的计算时间太长,以至于程序无法退出Func() 函数?这就是进度条不更新的原因?也许这里有一个永久循环?每个元素都有Show() 和Hide() 方法来控制其可见性。//---一般来说,断章取义的代码块很难说明问题。GUIs X: Updates for Easy And Fast library (build 2) 一文中展示了一个带有进度条的示例,该示例一切正常。是的,阿纳托尔,在你的示例中当然可以运行。但这只是个例子,只是个装饰。进度条的更新示例是用抽象值的计时器制作的。当我不是在一个带有假设值的计时器中,而是在程序内部一个普通的长循环中,而不是在一个计时器中开始运行时,进度条不会在循环过程中更新,而是在再次显示时已经更新。您能否举例说明在主程序的某个循环中如何使用进度条?例如,在这样一个循环中://+------------------------------------------------------------------+ //--- 如果按下按钮 //--- 显示进度条 m_progress_bar_d1.Show(); for(int i=0; i<sz; i++) { //-- 更新进度条 Print("更新进度条:index=",i,", total=",sz); m_progress_bar_d1.Update(i,sz); double a=1; //--- 一些冗长的计算 for(int k=0; k<(INT_MAX/16); k++) a=pow(a,a+a); } //--- 隐藏进度条 m_progress_bar_d1.Hide(); //+------------------------------------------------------------------+ 如果能看到进度条的正确操作方式,而不是我认为的方式,那将会非常有趣。 Anatoli Kazharski 2016.08.22 17:23 #19 Artyom Trishkin:是的,阿纳托尔,这在你的例子中当然行得通。但它们只是一个例子,一个假象。进度条,也就是它的更新示例,是在一个带有抽象值的计时器中完成的。当我不在带有假设值的定时器中,而是在程序内部一个普通的长循环中(不在定时器中)开始执行时,进度条在循环过程中不会更新,而是在再次显示时已经更新。 也许ChartRedraw() 可以帮上忙? Artyom Trishkin 2016.08.22 19:24 #20 Anatoli Kazharski: 也许ChartRedraw() 可以帮上忙?是的,谢谢,m_chart.Redraw() 帮了大忙: MetaTrader 交易平台截图 kbr, d1, 2016.08.22. Just2Trade Online Ltd, MetaTrader 5, 演示版 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
为什么?
在程序开始时声明数据类型,然后启动你所声明类型的 变量值。
m_progress_bar.Update(i,total);根本什么都没有显示。它应该显示多大的条形图?
在程序开始时声明数据类型,然后启动已声明类型的 变量值。
...
m_progress_bar.Update(i,total); 完全没有显示。应该显示多大的条形图?
double new_width=(m_current_index/m_steps_total)*m_bar_bg.XSize();像这样...像这样...
1.数据类型声明。
2.为 该类型的变量赋值。
如果没有加起来,那么--你弄错了什么。
进入房间的规则
1.手榴弹
2.自动步枪
3. Я.
最重要的是不要混淆。
1.数据类型声明。
2.为 该类型的变量赋值。
如果没有加起来,那么--你弄错了什么。
进入房间的规则
1.手榴弹
2.自动步枪
3. Я.
最重要的是不要混淆。
也许你的话对我度假的头脑来说太明智了....。
为什么是zuid-zuid-west?
阿纳托利,很抱歉打扰您,但我想知道如何才能在一个计算量很大的循环中更新进度条。
例如,我们有一个进度条 m_progress_bar,在 CProgram 内部有一个循环。
您能在这样一个 "抽象 "的例子中解释一下我不明白的地方吗?
也许这些繁重的计算太长,以至于程序无法退出Func() 函数?这就是进度条不更新的原因吗?也许这里有一个永久循环?
每个元素都有Show() 和Hide() 方法来控制其可见性。
m_progress_bar.Hide(); 由于某些原因,// 不能隐藏进度条,我必须将其隐藏在另一个图形对象下。//---
一般来说,断章取义的代码块很难说明问题。GUIs X: Updates for Easy And Fast library (build 2) 一文中展示了一个带有进度条的示例,该示例一切正常。
更好的办法是,附上一段最短的代码以供播放。这是获得提示的最快方法。一个简单的示意图就足以重现:
主窗口上的按钮打开对话框。对话框上的按钮启动 "大量计算"。
可能这些繁重的计算时间太长,以至于程序无法退出Func() 函数?这就是进度条不更新的原因?也许这里有一个永久循环?
每个元素都有Show() 和Hide() 方法来控制其可见性。
//---
一般来说,断章取义的代码块很难说明问题。GUIs X: Updates for Easy And Fast library (build 2) 一文中展示了一个带有进度条的示例,该示例一切正常。
是的,阿纳托尔,在你的示例中当然可以运行。但这只是个例子,只是个装饰。进度条的更新示例是用抽象值的计时器制作的。
当我不是在一个带有假设值的计时器中,而是在程序内部一个普通的长循环中,而不是在一个计时器中开始运行时,进度条不会在循环过程中更新,而是在再次显示时已经更新。
您能否举例说明在主程序的某个循环中如何使用进度条?例如,在这样一个循环中:
如果能看到进度条的正确操作方式,而不是我认为的方式,那将会非常有趣。
是的,阿纳托尔,这在你的例子中当然行得通。但它们只是一个例子,一个假象。进度条,也就是它的更新示例,是在一个带有抽象值的计时器中完成的。
当我不在带有假设值的定时器中,而是在程序内部一个普通的长循环中(不在定时器中)开始执行时,进度条在循环过程中不会更新,而是在再次显示时已经更新。
也许ChartRedraw() 可以帮上忙?
是的,谢谢,m_chart.Redraw() 帮了大忙:
MetaTrader 交易平台截图
kbr, d1, 2016.08.22.
Just2Trade Online Ltd, MetaTrader 5, 演示版