Закрытие панели - страница 3

 
Mikalas:
Лень матушка...
Это не кошерный способ. 
 
barabashkakvn:
Это не кошерный способ. 
 
Mikalas:
Лень матушка...
Т.е. держать модифицированную костыльную копию куска стандартной  библиотеки не лень а сделать нормально (причем понятнее и с меньшими трудозатратами) лень?
 
TheXpert:
Т.е. держать модифицированную костыльную копию куска стандартной  библиотеки не лень а сделать нормально (причем понятнее и с меньшими трудозатратами) лень?
Да
 
))) не смею больше беспокоить.
 
TheXpert:
))) не смею больше беспокоить.

А Вы и не беспокоили...

Можно и не копировать Dialog.mqh

Просто добавить функцию (не помешает)

А в реализации функции вызвать

Visible(false);

 Вот и будет Вам счастье и чистота кода с никакими трудозатратами.

 
Mikalas:

P.S Спасибо Yurich :) 

Все же прислушайтесь, лучшее решение - унаследовать и переопределить. 

 
Mikalas:

А Вы и не беспокоили...

Можно и не копировать Dialog.mqh

Просто добавить функцию (не помешает)

А в реализации функции вызвать

 Вот и будет Вам счастье и чистота кода с никакими трудозатратами.

И будет "счастье" до очередного обновления терминала(стандартной библиотеки).
 
Yurich:
И будет "счастье" до очередного обновления терминала(стандартной библиотеки).

Про обновление забыл.... :(

Ленивый платит трижды...:)

#include    <Controls\Dialog.mqh>

class ADialog : public CDialog
{
  public:
     void CloseClick();
};

void ADialog::CloseClick(void) 
{
  Visible( false );
} 

ADialog  EnterDialog;
 

Mikalas,

а не проще вот так сделать:

#include    <Controls\Dialog.mqh>

class ADialog : public CDialog
{
  protected:
  void              OnClickButtonClose() { Visible(false);}
};

ADialog  EnterDialog;

 и не надо ничего мудрить в OnChartEvent(...), класс сам вызовет OnClickButtonClose() при клике на кнопку закрытия окна, главное, не забыть вызвать обработчик класса: EnterDialog.ChartEvent(...)

 

upd: посмотри пример  в ...\MQL5\Experts\Examples\Controls\Controls.mq5

Причина обращения: