Мой подход. Ядро - Движок. - страница 171

 
Vasiliy Sokolov:

...

3) Да, обращение по именам, нужно указывать все параметры. Но, и это самое важное, какой-то одной монолитной событийной модели нет. Хочешь свою модель - пожалуйста. Сделать ее элементарно. Без таймера правда не обойтись.

Очередь событий обощенный алгоритм для надежной работы с событиями. Пользователь ничего не составляет, события генерируемые им сами попадают в очередь. Сама очередь 99.9% времени состоит только из одного события.

Ну, реализация похожа на мою, но у меня значительно проще для пользователя.  


  • E_Window_Element(значение);                    Передаем значение в элемент:
  • E_Window_Element();                                  Получаем значение элемента:

  • E_Window_Element(M_COLOR, значение);    Устанавливаем цвет основания.
  • E_Window_Element(T_COLOR, значение);    Устанавливаем цвет текста.
  • E_Window_Element(F_COLOR, значение);    Устанавливаем цвет рамки.


  • E_Window_Element(STATE, ON);                       Устанавливаем нажатое состояние.
  • E_Window_Element(STATE, OFF);                      Устанавливаем отжатое состояние.
  • E_Window_Element(STATE, LOCKED_ON);          Устанавливаем нажатое блокиронное состояние.
  • E_Window_Element(STATE, LOCKED_OFF);         Устанавливаем отжатое состояние.
  • E_Window_Element(STATE, ON_H);                    Устанавливаем нажатое в фокусе состояние.
  • E_Window_Element(STATE, OFF_H);                   Устанавливаем отжатое в фокусе состояние.


  • W_Window_name()           Открываем окно.
  • W_Window_name(close)   Закрываем окно.


Наименования оберток элементов формы печатаются автоматически в файл подключения и сразу попадают в интеллисенс.

Василий, а у тебя интеллисенс имен элементов и окон можно использовать в MQL-программе?


ЗЫ. Василий, обрати внимание, сколько действий выполняет одна обертка одного элемента. И принимает МАКСИМУМ всего ДВА параметра. Либо ниодного.

 
Igor Makanu:

... Пока с dataGridView полное фиаско - нельзя в него чаще 3-5 секунд писать)  таблица 10 х 11 уже критична, хоть форма с таблицей и работает в отдельном потоке

ЗЫ: на Делфи лет 5 назад за 2 часа прикрутил к МТ4 StringGrid, вообще не парился как там все работало, но все летало, с Майкрософтским dataGridView  беда однако, сегодня попробую со сторонним SourceGrid поэкспериментировать, по отзывам быстрее dataGridView  

Попробуйте еще infragistics ultragrid. Крутейшая штука. Если гуи и способен улучшить результативность трейдинга, то это вот эта таблица.

 
Dmitry Fedoseev:

...

Дмитрий, есть такая архитектурная модель, называется MVC. Предложенный мной подход именно про это. Поэтому когда ты критикуешь его, ты критикуешь MVC в первую очередь и такие решения как Angular, ASP Net MVC, Ruby on Rails и прочие продукты, не достойные твоего экспертного внимания, сделанные через "жо..." по-твоему мнению. Поэтому я думаю тебе должно быть понятно, почему я не хочу с тобой спорить и доказывать обоснованность моего решения - это просто бессмысленно. 

 

В моем случае, аналогом записи

GuiController::SendEvent("AskLabel", TextChange, 0, 0.0, DoubleToString(ask, Digits()));

будет запись

E_Trade_panel__AskLabel(DoubleToString(ask, Digits()));

При этом, мне не нужно помнить, как называется тот или иной элемент. Я пишу Е_ и выпадает список элементов, набираю первые буквы названия окна и попадаю в список элементов конкретного окна, далее, выбираю нужный элемент из списка. 

 

Интересно, как без интеллисенс можно подключить таблицу хотя бы в 100 ячеек? Ведь нужно помнить наименования всех ячеек.

У меня, каждая ячейка автоматически именуется названием ряда и колонки, а ее выбор осуществляется через интеллисенс. В твоем варианте, Василий, нужно точно знать как называется каждая из 100 ячеек. 

А если у меня 10 сложных окон с массой элементов и большими таблицами, то сколько времени у меня уйдет на прописывание имен элементов в вызовах? Запарится можно...)


И как быть, если имена совпадают между разными окнами?

 
Реter Konow:

Интересно, как без интеллисенс можно подключить таблицу хотя бы в 100 ячеек? 

Не знаю Петр, ведь интеллисенс в MetaEditor прекрасно работает со всеми переменными в C#, включая массивы, структуры, базовые типы, методы и даже классы. 

 
Vasiliy Sokolov:

Не знаю Петр, ведь интеллисенс в MetaEditor прекрасно работает со всеми переменными в C#, включая массивы, структуры, базовые типы, методы и даже классы. 

Он что, имена элементов показывает?

 
Реter Konow:

Он что, имена элементов показывает?

Еще как, с прототипами:

:))

 
Vasiliy Sokolov:

Еще как, с прототипами:

:))

Василий, ты не понял.

GuiController::SendEvent("AskLabel", TextChange, 0, 0.0, DoubleToString(ask, Digits()));

Что установить значение элемента, ты посылаешь его наименование. Поле "Ask" имеет название "AskLabel".    Где интеллисенс показывает название элемента?

 
Реter Konow:

Василий, ты не понял.

Что установить значение элемента, ты посылаешь его наименование. Поле "Ask" имеет название "AskLabel".    Где интеллисенс показывает название элемента?

Петр, такое ощущение что ты ищещь к чему бы придратся.

Отвечаю: нет, с текстовым элементом интелесенс никогда не работал, и работать не будет. Но если вопрос только в этом, то сделать интелесенс на тех же дефайнах вообще не проблема.

з.ы. у тебя кстати также работать не будет:

__, EDIT,"Set lot", W,150,_,H,60,_,V_CURRENT,"1.00",