众包的GUI。公开测试。 - 页 24 1...171819202122232425262728293031...58 新评论 Алексей Барбашин 2020.03.01 15:39 #231 我再次重读了整个主题,看到了许多关于 "界面是用标记语言设计的 "的例子。但我没有看到彼得有任何一个例子确切地表明 "界面代码 "如何与开发者的主程序互动。 尼古拉和我曾数次试图减少彼得对这一主题的关注,但我在任何地方都没有看到任何关于主程序和GUI之间互动的示例代码。 在阅读该主题时,我还多次遇到 "打印代码 "这一表述。皮奥特,这句话的含义是什么?我想在彼得的 "维金 "中甚至有这样的命令 .....为什么要打印代码?为什么不能用正确的名字和正确的位置将其保存在文本文件中? 彼得,不要急于推出可视化软件,让我们在一般情况下处理一下你的建议的适用性。 也就是说,画一个带有几个按钮、一个组合框、几个复选框和一个输入框 的表单。现在,如何在程序代码中引用这些控件,给它们赋值,并从它们那里获取值。 一旦你把这个问题解决了,你就会继续前进。 Реter Konow 2020.03.01 16:16 #232 Алексей Барбашин: 我再次重读了整个主题,看到了许多关于 "界面是用标记语言设计的 "的例子。但我没有看到彼得有任何一个例子确切地表明 "界面代码 "如何与开发者的主程序互动。 尼古拉和我曾多次试图将彼得带入这一点,但我在任何地方都没有看到任何关于主程序和GUI之间互动的示例代码。 在阅读该主题时,我还多次遇到 "打印代码 "这一表述。皮奥特,这句话的含义是什么?我想在彼得的 "维金 "中甚至有这样的命令 .....为什么要打印代码?为什么不能用正确的名字和正确的位置将其保存到文本文件中? 彼得,不要急于推出可视化软件,让我们在一般情况下处理一下你的建议的适用性。 也就是说,画一个带有几个按钮、一个组合框、几个复选框和一个输入框 的表单。现在,如何在程序代码中引用这些控件,给它们赋值,并从它们那里获取值。 只要你想明白了,你就会继续前进。 查找Oleg Papkov的简介。我给他做了一个11个窗口的gui,有很多不同元素的标记语言,一年前。一切正常。他比任何人都更清楚自己在说什么。我现在很忙。 @Oleg Papkov 还有亚历山大-阿塔吉安(这里是他的小组讨论)。 Реter Konow 2020.03.01 16:31 #233 这里是这个面板的连接文件。终究还是找到了。 附加的文件: External_Connection.mqh 32 kb Реter Konow 2020.03.01 16:40 #234 这个文件包含调用控件、检索其值、设置值和状态的功能。该功能是标准的,用户不需要查看该文件。 附加的文件: Connection_Properties.mqh 19 kb Алексей Барбашин 2020.03.01 17:10 #235 Реter Konow: 这里是这个面板的连接文件。终究还是找到了。 在这段代码中,我没有看到主程序和界面之间的任何互动。显然,我们说的是完全不同的语言。 Реter Konow 2020.03.01 17:22 #236 Алексей Барбашин: 在这段代码中,我没有看到主程序和界面之间的任何互动。显然,我们说的是完全不同的语言。 我没有主程序。我给他们做这些接口的人都有。GUI通过资源与他们的程序(其代码我完全没有看到)相连。而现在,这种连接将被整合到里面。也就是说,它将在没有资源的情况下工作。 直接的。 Алексей Барбашин 2020.03.01 17:35 #237 Реter Konow: 我没有主要节目。我给他们做这些接口的人都有。GUI通过资源与他们的程序(其代码我完全没有看到)相连。而现在,这种连接将被整合到里面。也就是说,它将在没有资源的情况下工作。直接的。 这并不完全是它的工作方式。你在做一个可视化的界面编辑器。你的应用程序的视觉部分正是你的应用程序所创建的GUI。而 "幕后 "所做的事情,即如何创建新的GUI文本,是主程序。 但既然你对编程有自己的看法,..... Реter Konow 2020.03.01 17:58 #238 Алексей Барбашин: 这不完全正确。你正在做一个可视化的界面编辑器。你的应用程序的视觉部分正是你的应用程序所创建的GUI。而 "幕后 "所做的工作,即如何创建新的GUI的文本,是主要的程序。 但既然你对编程有自己的看法,..... 我们有巨大的意见分歧,阿列克谢。最好是就此打住。你不可能马上找到共同语言,这需要很多时间。我将完成最小的版本,你自己看吧。我将努力在后天之前完成它。 Реter Konow 2020.03.01 19:14 #239 Алексей Барбашин: 在这段代码中,我没有看到主程序和界面之间的任何互动。显然,我们说的是完全不同的语言。 我想这就是你的意思。 void SMSG(string par0 = "0", string par1 = "0", string par2 = "0", string par3 = "0") { SEND send; uint i1 = 0; if(par0 != "0"){MSG += par0 + "`" + par1 + "`" + par2 + "`" + par3 + "~";} if(MSG != NULL && (par0 == (string)DRIVE_IS_READY || GUI_ЗАГРУЖЕН)) { StringToCharArray(MSG,send.char_Send); ResourceCreate("::DRIVE_2_EA",send.uint_Send,8000,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA); //ArrayInitialize(send.char_Send,0); while(send.uint_Send[i1]){send.uint_Send[i1] = 0; i1++;} MSG = NULL; } } //-------------------------------------------------------------------- //--------------------- ----------------------------------------------- void RMSG(bool Internal_message = 0) { READ read; uint width,height, i1 = 0; string msg[], pars[]; bool q1 = 0,q2 = 0,q3 = 0;bool t = 0; string msg2read = NULL; int Номер_колонки = 0,T_header = 0,Программный_вызов = 0,Элемент = 0; read.uint_Read[0] = 0; //------------------------------------------------------------------------------------ EA_ADRESS = ObjectGetString(0,"EA_2_DRIVE",OBJPROP_TEXT); //------------------------------------------------------------------------------------ if(!Internal_message)t = ResourceReadImage(EA_ADRESS + "::EA_2_DRIVE",read.uint_Read,width,height); if(read.uint_Read[0] || Internal_message) { int cnvs[100]; int cnvs_2[100]; //-------------------------------------- ArrayInitialize(cnvs,0); ArrayInitialize(cnvs_2,0); //-------------------------------------- Не_рисовать = 1; int Полная_перерисовка_канваса = 0; //-------------------------------------- if(!Internal_message)msg2read = CharArrayToString(read.char_Read); else msg2read = i_MSG; //--------------------------------------------------------------------- ushort Msep = StringGetCharacter("~",0); int s = StringSplit(msg2read,Msep,msg); //--------------------------------------------------------------------- for(int a1 = 0; a1 < s; a1++) { ushort Psep = StringGetCharacter("`",0); int w1 = StringSplit(msg[a1],Psep,pars); //-------------------------------------- if(w1) { //------------------------------------------------------------------ if((int)pars[0] == INIT_GUI && !GUI_ЗАГРУЖЕН) { Загрузить_GUI(); } //-------------------------------------------------- if(GUI_ЗАГРУЖЕН) { if((int)pars[0] == M_COLOR) { G_CORE[(int)pars[1]][G_CORE[(int)pars[1]][_CURRENT_STATE]] = (int)pars[3]; //--------------------------------------------- G_CORE[(int)pars[1]][_REDROW] = 1; q1 = 1; } //------------------------------------------------------------------- if((int)pars[0] == T_COLOR) { G_CORE[G_CORE[(int)pars[1]][_HIS_TEXT]][G_CORE[(int)pars[1]][_CURRENT_STATE]] = (int)pars[3]; //--------------------------------------------- if(!G_CORE[(int)pars[1]][_PARAMETER]) { G_CORE[(int)pars[1]][_REDROW] = 1; q1 = 1; } else { G_CORE[(int)pars[1]][_REDROW] = 2; q2 = 1; } } //------------------------------------------------------------------- if((int)pars[0] == F_COLOR) { int Состояние_элемента = G_CORE[(int)pars[1]][_CURRENT_STATE]; if(!Состояние_элемента)Состояние_элемента = _NEUTRAL_STATE; //--------------------------------------------- switch(Состояние_элемента) { case _NEUTRAL_STATE: G_CORE[(int)pars[1]][_N_FRAME_COLOR] = (int)pars[3]; break; case _NEUTRAL_HIGHLIGHTED: G_CORE[(int)pars[1]][_NH_FRAME_COLOR] = (int)pars[3]; break; case _ACTIVATED_STATE: G_CORE[(int)pars[1]][_A_FRAME_COLOR] = (int)pars[3]; break; case _ACTIVATED_HIGHLIGHTED: G_CORE[(int)pars[1]][_AH_FRAME_COLOR] = (int)pars[3]; break; } //--------------------------------------------- G_CORE[(int)pars[1]][_REDROW] = 1; q1 = 1; } //------------------------------------------------------------------- if((int)pars[0] == STATE) { G_CORE[(int)pars[1]][_CURRENT_STATE] = (int)pars[3]; //--------------------------------------------- G_CORE[(int)pars[1]][_REDROW] = 1; q1 = 1; } //------------------------------------------------------------------- if((int)pars[0] == DEST_GUI) { for(int s1 = 2; s1 < 500; s1++){if(Открыто_окно[s1])Явление_окон(s1,_WINDOW_CLOSE);} Стереть_Edit(); } //------------------------------------------------------------------- if((int)pars[0] == SET_VALUE_BY_MAGIC || (int)pars[0] == SORT_COLOMN) { Номер_колонки = (int)MathRound((int)pars[2]/100000); T_header = (int)pars[2] - (Номер_колонки*100000); Элемент = Элемент_по_T_header_и_колонке(T_header,Номер_колонки,(int)pars[1]); } //------------------------------------------------------------------- if((int)pars[0] == SET_VALUE_BY_MAGIC || (int)pars[0] == SORT_COLOMN || (int)pars[0] == DELETE_ROW || (int)pars[0] == DELETE_ALL_ROWS) { if((int)pars[0] != SORT_COLOMN)int _Канвас = G_CORE[T_header][_CANVAS]; Программный_вызов = 1; } //------------------------------------------------------------------- if((int)pars[0] == SET_VALUE_BY_MAGIC) { //-------------------------------------------------- //-------------------------------------------------- if(!Элемент) { Полная_перерисовка_канваса = 1; //-------------------- Явление_рядов(NEW_ROW,T_header,(int)pars[1]); Элемент = Элемент_по_T_header_и_колонке(T_header,Номер_колонки,(int)pars[1]); } //-------------------------------------------------- //-------------------------------------------------- Контроль_значений_движка(Элемент, pars[3], 1); //-------------------------------------------------- } //------------------------------------------------------------------- if((int)pars[0] == SORT_COLOMN) { Явление_рядов(SORT_COLOMN,T_header,Номер_колонки,(int)pars[3]); } //------------------------------------------------------------------- if((int)pars[0] == DELETE_ROW) { Явление_рядов(DELETE_ROW,(int)pars[2],(int)pars[1]); } //------------------------------------------------------------------- if((int)pars[0] == DELETE_ALL_ROWS) { Явление_рядов(DELETE_ALL_ROWS,(int)pars[2],(int)pars[1]); } //------------------------------------------------------------------- if((int)pars[0] == SET_RANGE_N_STEP) { P_CORE[(int)pars[1]][_V_MIN] = (string)pars[2]; P_CORE[(int)pars[1]][_V_MAX] = (string)pars[3]; P_CORE[(int)pars[1]][_V_STEP] = (string)pars[4]; P_CORE[(int)pars[1]][_DIGITS] = (string)pars[5]; } //------------------------------------------------------------------- //ВЫСКАКИВАЕТ НА КАЖДОМ ОБРАЩЕНИИ К ФУНКЦИИ. //------------------------------------------------------------------ /*if((int)pars[0] == W_CAPTION) {Alert("(int)pars[0] == W_CAPTION"); CONTENT[G_CORE[WND[(int)pars[2]]][_WINDOW_NAME]] = pars[1]; CONTENT[G_CORE[G_CORE[WND[(int)pars[2]]][_CAPTION_OBJECT]][_N_TEXT]] = pars[1]; //----------------------------------------------------------------------------- int Длинна_текста = 0,Высота_текста = 0; //------------------------------------------------ if(!TextSetFont("Microsoft JhengHei Light",10 *-10,FW_NORMAL,0)){Alert("*",__FUNCTION__,"*","Ошибка настройки параметров шрифта! ",GetLastError());} TextGetSize(pars[1],Длинна_текста,Высота_текста); //------------------------------------------------ G_CORE[WND[(int)pars[2]]][_CAPTION_X_SIZE] = Длинна_текста; G_CORE[WND[(int)pars[2]]][_CAPTION_Y_SIZE] = Высота_текста; G_CORE[G_CORE[WND[(int)pars[2]]][_CAPTION_OBJECT]][_TEXT_X_SIZE] = Длинна_текста; G_CORE[G_CORE[WND[(int)pars[2]]][_CAPTION_OBJECT]][_TEXT_Y_SIZE] = Высота_текста; //------------------------------------------------ Объект((int)pars[2]); Нарисовать_элемент(WND[(int)pars[2]] + 1,REDROW_WHOLE_CANVAS); } */ //------------------------------------------------------------------- Программный_вызов = 0; //------------------------------------------------------------------- if((int)pars[0] == _SYNC_P_CORE) { if(!Internal_message)Контроль_значений_движка((int)pars[1], pars[3], 1); else Контроль_значений_движка((int)pars[1], pars[3]); q2 = 1; } //------------------------------------------------------------------- if((int)pars[0] == OPEN_WINDOW) Явление_окон((int)pars[1],_WINDOW_OPEN,NULL); if((int)pars[0] == CLOSE_WINDOW)Явление_окон((int)pars[1],_WINDOW_CLOSE,NULL); //------------------------------------------------------------------- if((int)pars[0] == ONLY_READ)G_CORE[(int)pars[1]][_READ_ONLY] = (int)pars[3]; //========================================================================================= //========================================================================================= int Канвас = G_CORE[(int)pars[1]][_CANVAS]; if((int)pars[0] == SET_VALUE_BY_MAGIC || (int)pars[0] == SORT_COLOMN)Канвас = G_CORE[Элемент][_CANVAS]; //---------------------------------------------- for(int r6 = 0; r6 < 100; r6++) { if(cnvs[r6] == Канвас)break; //-------------------------- if(!cnvs[r6]) { cnvs[r6] = Канвас; cnvs_2[r6] = REDROW_CHANGED_ELEMENTS; //----------------------------------- if(Полная_перерисовка_канваса) { cnvs_2[r6] = REDROW_WHOLE_CANVAS; Полная_перерисовка_канваса = 0; } //----------------------------------- break; } //-------------------------- } //========================================================================================= //========================================================================================= //========================================================================================= } } } //------------------------------------------------------------------------------------------------------- if(!q1 && q2)q3 = 1; else q3 = 0; //------------------------------------------------------------------------------------------------------- for(int f1 = 0; f1 < 100; f1++) { if(!cnvs[f1])break; if(Открыто_окно[G_CORE[cnvs[f1]][_WS_NUMBER]] && !G_CORE[cnvs[f1]][_HIDE] && cnvs_2[f1] == REDROW_CHANGED_ELEMENTS) { Нарисовать_элемент(cnvs[f1],REDROW_CHANGED_ELEMENTS); } if(cnvs_2[f1] == REDROW_WHOLE_CANVAS) { Установить_параметры_прокрутки(cnvs[f1]); //---------------------------------------------------------- //Перерисовываем канвас V_BOX-а. //---------------------------------------------------------- Нарисовать_элемент(G_CORE[G_CORE[cnvs[f1]][_MAIN]][_CANVAS],G_CORE[cnvs[f1]][_MAIN]); //---------------------------------------------------------- //Перерисовываем весь канвас. //---------------------------------------------------------- Нарисовать_элемент(cnvs[f1],REDROW_WHOLE_CANVAS); //---------------------------------------------------------- } } i1 = 0; //------------------------------------------------------------------------------------------------------- if(!Internal_message)while(read.uint_Read[i1]){read.uint_Read[i1] = 0; i1++;} //ArrayInitialize(read.char_Read,0); //ResourceCreate("::EA_2_DRIVE",read.uint_Read,8000,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA); //------------------------------------------------------------------------------------------------------- Не_рисовать = 0; // MSG = NULL; i_MSG = NULL; //------------------------------------------------------------------------------------------------------- } } 这是两个允许GUI与程序 "交流 "的功能。它们接收信息,对其进行解密,并将其转发给元素或程序。 Vitaly Muzichenko 2020.03.01 19:17 #240 Реter Konow: 我想这就是你的意思。 这是两个确保GUI与程序 "沟通 "的功能。它们接收信息,解密并将其转发给元素或程序。 这是个杰作 :) Открыто_окно[G_CORE[cnvs[f1]][_WS_NUMBER]] 如果有些东西需要重新做/做,一周后你就不记得什么与什么有关了。 1...171819202122232425262728293031...58 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我再次重读了整个主题,看到了许多关于 "界面是用标记语言设计的 "的例子。但我没有看到彼得有任何一个例子确切地表明 "界面代码 "如何与开发者的主程序互动。
尼古拉和我曾数次试图减少彼得对这一主题的关注,但我在任何地方都没有看到任何关于主程序和GUI之间互动的示例代码。
在阅读该主题时,我还多次遇到 "打印代码 "这一表述。皮奥特,这句话的含义是什么?我想在彼得的 "维金 "中甚至有这样的命令 .....为什么要打印代码?为什么不能用正确的名字和正确的位置将其保存在文本文件中?
彼得,不要急于推出可视化软件,让我们在一般情况下处理一下你的建议的适用性。
也就是说,画一个带有几个按钮、一个组合框、几个复选框和一个输入框 的表单。现在,如何在程序代码中引用这些控件,给它们赋值,并从它们那里获取值。
一旦你把这个问题解决了,你就会继续前进。
我再次重读了整个主题,看到了许多关于 "界面是用标记语言设计的 "的例子。但我没有看到彼得有任何一个例子确切地表明 "界面代码 "如何与开发者的主程序互动。
尼古拉和我曾多次试图将彼得带入这一点,但我在任何地方都没有看到任何关于主程序和GUI之间互动的示例代码。
在阅读该主题时,我还多次遇到 "打印代码 "这一表述。皮奥特,这句话的含义是什么?我想在彼得的 "维金 "中甚至有这样的命令 .....为什么要打印代码?为什么不能用正确的名字和正确的位置将其保存到文本文件中?
彼得,不要急于推出可视化软件,让我们在一般情况下处理一下你的建议的适用性。
也就是说,画一个带有几个按钮、一个组合框、几个复选框和一个输入框 的表单。现在,如何在程序代码中引用这些控件,给它们赋值,并从它们那里获取值。
只要你想明白了,你就会继续前进。
@Oleg Papkov
还有亚历山大-阿塔吉安(这里是他的小组讨论)。
这里是这个面板的连接文件。终究还是找到了。
这个文件包含调用控件、检索其值、设置值和状态的功能。该功能是标准的,用户不需要查看该文件。
这里是这个面板的连接文件。终究还是找到了。
在这段代码中,我没有看到主程序和界面之间的任何互动。显然,我们说的是完全不同的语言。
在这段代码中,我没有看到主程序和界面之间的任何互动。显然,我们说的是完全不同的语言。
我没有主程序。我给他们做这些接口的人都有。GUI通过资源与他们的程序(其代码我完全没有看到)相连。而现在,这种连接将被整合到里面。也就是说,它将在没有资源的情况下工作。 直接的。
我没有主要节目。我给他们做这些接口的人都有。GUI通过资源与他们的程序(其代码我完全没有看到)相连。而现在,这种连接将被整合到里面。也就是说,它将在没有资源的情况下工作。直接的。
这并不完全是它的工作方式。你在做一个可视化的界面编辑器。你的应用程序的视觉部分正是你的应用程序所创建的GUI。而 "幕后 "所做的事情,即如何创建新的GUI文本,是主程序。
但既然你对编程有自己的看法,.....
这不完全正确。你正在做一个可视化的界面编辑器。你的应用程序的视觉部分正是你的应用程序所创建的GUI。而 "幕后 "所做的工作,即如何创建新的GUI的文本,是主要的程序。
但既然你对编程有自己的看法,.....
我们有巨大的意见分歧,阿列克谢。最好是就此打住。你不可能马上找到共同语言,这需要很多时间。我将完成最小的版本,你自己看吧。我将努力在后天之前完成它。
在这段代码中,我没有看到主程序和界面之间的任何互动。显然,我们说的是完全不同的语言。
我想这就是你的意思。
这是两个允许GUI与程序 "交流 "的功能。它们接收信息,对其进行解密,并将其转发给元素或程序。
我想这就是你的意思。
这是两个确保GUI与程序 "沟通 "的功能。它们接收信息,解密并将其转发给元素或程序。
这是个杰作 :)
Открыто_окно[G_CORE[cnvs[f1]][_WS_NUMBER]]
如果有些东西需要重新做/做,一周后你就不记得什么与什么有关了。