文章 "图形界面 VIII: 文件导航器控件 (第三章)" - 页 4 123456 新评论 Anatoli Kazharski 2016.07.16 16:39 #31 Реter Konow: 逻辑告诉我,这两个选项是相互排斥的。如果不是这样,我很乐意这样做。我正在努力完成这个项目。我不能说需要多长时间,但一定会完成的。我的项目 也远未完成。感兴趣的用户提出了很多有趣的建议,我希望能够实现这些建议。名单在不断扩大。Retag Konow:也许我们将来还会合作:)一切皆有可能。) Artyom Trishkin 2016.12.23 20:32 #32 Tol,问题:如何在导航器中选择保存程序文件的文件夹,而不是文件? Anatoli Kazharski 2016.12.24 06:51 #33 Artyom Trishkin: Tol,问题:如何在导航器中选择保存程序文件的文件夹而不是文件?例如//---//+------------------------------------------------------------------+//| 事件处理程序|//+------------------------------------------------------------------+void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam) {//--- 处理 "更改树形列表中的路径 "事件 if(id==CHARTEVENT_CUSTOM+ON_CHANGE_TREE_PATH) { ::Print(__FUNCTION__," > id: ",id,"; file name: ",m_navigator.SelectedFile()); ::Print(__FUNCTION__," > id: ",id,"; path: ",m_navigator.CurrentPath()+m_navigator.SelectedFile()); ::Print(__FUNCTION__," > id: ",id,"; full path: ",m_navigator.CurrentFullPath()+m_navigator.SelectedFile()); //--- 如果选择了文件,则读取该文件(前三行) if(m_navigator.SelectedFile()!="") { //--- 生成文件路径 string path=m_navigator.CurrentPath()+m_navigator.SelectedFile(); //--- 获取指定文件的句柄 int filehandle=::FileOpen(path,FILE_READ|FILE_TXT|FILE_ANSI|m_navigator.DirectoryArea(),'\n'); //--- 如果收到句柄,则读取前三行 if(filehandle!=INVALID_HANDLE) { ::Print(__FUNCTION__," > 文件打开: ",path); ::Print(__FUNCTION__," > 第 01 行:",::FileReadString(filehandle)); ::Print(__FUNCTION__," > 第 02 行:",::FileReadString(filehandle)); ::Print(__FUNCTION__," > 第 03 行:",::FileReadString(filehandle)); } //--- 关闭文件 ::FileClose(filehandle); } ::Print("---"); return; } }//---CProgram::OnEvent > id: 1024; file name: CProgram::OnEvent > id: 1024; path: ChartScreenshot\ CProgram::OnEvent > id: 1024; full path: D:\#TradingTerminals\MetaTrader 5 pretest\MQL5\Files\ChartScreenshot\ Discussion of article "Graphical Writing and reading arrays 图形界面 VIII: 文件导航器控件 (第三章) Artyom Trishkin 2016.12.24 07:37 #34 Anatoli Kazharski:例如//---...//---CProgram::OnEvent > id: 1024; file name: CProgram::OnEvent > id: 1024; path: ChartScreenshot\ CProgram::OnEvent > id: 1024; full path: D:\#TradingTerminals\MetaTrader 5 pretest\MQL5\Files\ChartScreenshot\ 谢谢。 Artyom Trishkin 2016.12.27 22:04 #35 Anatoli Kazharski: Tol,还有一个问题:从程序中创建新文件后,如何查看导航器显示的目录变化?到目前为止,只有切换时间框架才会导致导航器中的数据更新。CFileNavigator.mqh 中的 Reset() 方法无法实现预期结果。 Anatoli Kazharski 2016.12.28 06:56 #36 Artyom Trishkin: Tol,还有一个问题:从程序中创建新文件后,如何查看导航器显示的目录变化?到目前为止,只有切换时间框架才会导致导航器中的数据更新。CFileNavigator.mqh 中的 Reset() 方法无法实现预期结果。 尚未实施,但已列入计划。 Artyom Trishkin 2016.12.28 07:22 #37 Anatoli Kazharski: 尚未实施,但已列入计划。我明白了。让我们拭目以待...还有一个问题:导航器中的子文件夹是按照字母顺序定位的。这不方便:会有解决办法吗? Anatoli Kazharski 2016.12.28 07:31 #38 Artyom Trishkin:另一个问题:导航器中的子文件夹是按字母顺序排列的。这并不方便:...会有解决办法吗? 我同意这很不方便。会有解决办法的。我现在还不能告诉你具体时间。 Artyom Trishkin 2016.12.28 07:45 #39 Anatoli Kazharski: 我同意这很不方便。会有解决办法的。我还不能告诉你具体时间 我明白了。不着急) Anatoli Kazharski 2016.12.28 08:21 #40 Artyom Trishkin: 好吧...不着急) 顺便说一下,这是读取文件系统时给出的列表顺序。也就是说,不是按照你在操作系统的文件导航器中 看到的顺序。 123456 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
逻辑告诉我,这两个选项是相互排斥的。如果不是这样,我很乐意这样做。我正在努力完成这个项目。我不能说需要多长时间,但一定会完成的。
我的项目 也远未完成。感兴趣的用户提出了很多有趣的建议,我希望能够实现这些建议。名单在不断扩大。
Retag Konow:
也许我们将来还会合作:)
一切皆有可能。)
Tol,问题:如何在导航器中选择保存程序文件的文件夹而不是文件?
例如
//---
//| 事件处理程序|
//+------------------------------------------------------------------+
void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
//--- 处理 "更改树形列表中的路径 "事件
if(id==CHARTEVENT_CUSTOM+ON_CHANGE_TREE_PATH)
{
::Print(__FUNCTION__," > id: ",id,"; file name: ",m_navigator.SelectedFile());
::Print(__FUNCTION__," > id: ",id,"; path: ",m_navigator.CurrentPath()+m_navigator.SelectedFile());
::Print(__FUNCTION__," > id: ",id,"; full path: ",m_navigator.CurrentFullPath()+m_navigator.SelectedFile());
//--- 如果选择了文件,则读取该文件(前三行)
if(m_navigator.SelectedFile()!="")
{
//--- 生成文件路径
string path=m_navigator.CurrentPath()+m_navigator.SelectedFile();
//--- 获取指定文件的句柄
int filehandle=::FileOpen(path,FILE_READ|FILE_TXT|FILE_ANSI|m_navigator.DirectoryArea(),'\n');
//--- 如果收到句柄,则读取前三行
if(filehandle!=INVALID_HANDLE)
{
::Print(__FUNCTION__," > 文件打开: ",path);
::Print(__FUNCTION__," > 第 01 行:",::FileReadString(filehandle));
::Print(__FUNCTION__," > 第 02 行:",::FileReadString(filehandle));
::Print(__FUNCTION__," > 第 03 行:",::FileReadString(filehandle));
}
//--- 关闭文件
::FileClose(filehandle);
}
::Print("---");
return;
}
}
//---
CProgram::OnEvent > id: 1024; path: ChartScreenshot\
CProgram::OnEvent > id: 1024; full path: D:\#TradingTerminals\MetaTrader 5 pretest\MQL5\Files\ChartScreenshot\
例如
//---
...
//---
CProgram::OnEvent > id: 1024; path: ChartScreenshot\
CProgram::OnEvent > id: 1024; full path: D:\#TradingTerminals\MetaTrader 5 pretest\MQL5\Files\ChartScreenshot\
Tol,还有一个问题:从程序中创建新文件后,如何查看导航器显示的目录变化?到目前为止,只有切换时间框架才会导致导航器中的数据更新。CFileNavigator.mqh 中的 Reset() 方法无法实现预期结果。
尚未实施,但已列入计划。
我明白了。让我们拭目以待...
还有一个问题:导航器中的子文件夹是按照字母顺序定位的。这不方便:
会有解决办法吗?
另一个问题:导航器中的子文件夹是按字母顺序排列的。这并不方便:
...
会有解决办法吗?
我同意这很不方便。会有解决办法的。我还不能告诉你具体时间
好吧...不着急)