Обсуждение статьи "Применение контейнеров для компоновки графического интерфейса: класс CBox" - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Этот код не компилируется. Build 1702.
'pipvaluecalculator.mq5' pipvaluecalculator.mq5 1 1
...
'm_client_area' - ошибка доступа к приватному члену PipValueCalculator.mqh 118 60
'm_client_area' - ошибка доступа к частному члену PipValueCalculator.mqh 118 91
'm_client_area' - ошибка доступа к частному члену PipValueCalculator.mqh 129 72
'm_client_area' - ошибка доступа к частному члену PipValueCalculator.mqh 148 75
'm_client_area' - ошибка доступа к частному члену PipValueCalculator.mqh 168 77
'm_client_area' - ошибка доступа к частному члену PipValueCalculator.mqh 187 72
6 ошибок, 0 предупреждений 7 1
В качестве примечания, если я не пропустил, вы должны указать, куда поместить файлы. Нам нужно попробовать и посмотреть на код, чтобы понять, что нам нужно создать папку "Layouts" в Include и поместить в нее файл Box.mqh.
Я использую сборку 1755.
Теперь член m_client_area в классе CDialog в Controls\Dialog.mqh является приватным и были созданы новые методы для получения свойств Width и Height.
Kode ini tidak dikompilasi Bangun 1702
'pipvaluecalculator.mq5' pipvaluecalculator.mq5 1 1
...
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 118 60
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 118 91
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 129 72
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 148 75
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 168 77
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 187 72
6 ошибок (s), 0 предупреждений (s) 7 1
Jadi catatan, kecuali jika saya melewatkannya, anda harus menentukan di mana tempat file-file tersebut. Sebagai catatan, kecuali jika saya melewatkannya, Anda harus menentukan di mana menempatkan file-file tersebut. Kita perlu mencoba dan melihat kode untuk mengetahui bahwa kita perlu membuat folder "Layouts" di Include dan menempatkan file Box.mqh di dalamnya.Kita perlu mencoba dan melihat kode untuk mengetahui bahwa kita perlu membuat folder "Layouts" di Include dan menempatkan file Box.mqh di dalamnya.
Столкнулся с проблемой в данной полезной надстройке.
Прошу совета у тех, кто разбирается в стандартных контролах.
Поскольку данная надстройка с панелями использует стандартные классы CWnd, CWndClient, я предполагаю, что знаний их внутреннего устройства может оказаться достаточно, чтобы понять, где "собака порылась".
Суть проблемы. Берем программу Controls2.mq5 из статьи (для компиляции нужны также ControlsDialog2.mqh и Box.mqh), компилируем, запускаем.
Почти всё работает нормально кроме "дейтпикера". Он только открывается и закрывается, но в открытом состоянии не реагирует на нажатия, пропуская события в нижележащие контролы.
Исходная аналогичная демка от MQ (Experts/Examples/Controls.mq5) работает с "дейтпикером" нормально.
Почти всё работает нормально кроме "дейтпикера". Он только открывается и закрывается, но в открытом состоянии не реагирует на нажатия, пропуская события в нижележащие контролы.
Исходная аналогичная демка от MQ (Experts/Examples/Controls.mq5) работает с "дейтпикером" нормально.
Вопрос снимается. В CDatePicker отсутствует вызов BringToTop в момент раскрытия выпадающей части, как сделано в CComboBox, например. В стандартном примере дейтпикер работает за счет того, что его инициализацию подвинули (намеренно или случайно) после создания "листбокса", который оказывается топологически под ним. А контролы в CWndContainer::OnMouseEvent обходятся от последних добавленных к первым.
Чтобы нормально пофиксить, надо было бы переопределить CDatePicker::ListShow, но он не виртуальный. Приходится переопределять CDatePicker::OnClickButton и добавлять туда BringToTop. Однако корректно это сделать не получается как и с любым виртуальным методом в стандартной библиотеке, потому что все переменные члены объявлены private. В частности нельзя написать:
потому что m_drop недоступен. Приходится вызывать BringToTop и при раскрытии, и при схлопывании.
и тут несколько ошибок :