0
33
в ответ на https://www.mql5.com/ru/forum/461540 (простое модальное диалоговое окно с двумя кнопками ввода)
сразу - на MQL не прибегая к DLL модальное окно сделать нельзя.
Но можно прибечь-таки к DLL и быстренько накатать
#property copyright "Maxim A.Kuznetsov" #property link "https://www.luxtrade.tk" #property version "1.00" #include <ATcl/ATcl.mqh> void OnStart() { ATcl_OnInit(); ATcl *tcl=new ATcl(); tcl.Eval("set final 0"); // признак завершения tcl.Eval("package require Tk"); // используем GUI tcl.Eval("wm title . {Two buttons}"); // заголовок окна tcl.Eval("label .labelOne -text {Данные раз:}");// текстовая метка tcl.Eval("entry .entryOne"); // поле ввода 1 tcl.Eval("label .labelTwo -text {Данные два:}");// ещё текстовая метка tcl.Eval("entry .entryTwo"); // поле ввода 2 tcl.Eval("button .buttonOne -text {Кнопка}"); // некая кнопка tcl.Eval("button .buttonTwo -text {Финита} -command {set final 1}" ); // кнока выставлящая флаг завершения tcl.Eval("grid .labelOne .entryOne"); // располагаем в таблице, первая строка tcl.Eval("grid .labelTwo .entryTwo"); // вторая строка tcl.Eval("grid .buttonOne .buttonTwo"); // третья строка tcl.Eval("grab ."); // забираем фокус (будет модальное окно) tcl.Eval("raise ."); // отображаем окно поверх прочих tcl.Eval(".entryOne insert end {Данные1}"); // задаём данные в поле ввода 1 tcl.Eval(".entryTwo insert end {Данные2}"); // задаём данные в поле ввода 2 while(!IsStopped()) { tcl.Update(); long fin=tcl.LongEval("set final"); // смотрим признак завершения if (fin==1) { // получаем введённое как текст и печатаем PrintFormat("one %s , two %s",tcl.StringEval(".entryOne get"),tcl.StringEval(".entryTwo get")); break; } Sleep(20); } delete tcl; ATcl_OnDeinit(); }
DLL-ку можно взять тут : https://sourceforge.net/projects/mt-atcl/
или обратиться ко мне, за более новой :-)