Библиотеки: EasyAndFastGUI - библиотека для создания графических интерфейсов - страница 10
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Составные части сложных элементов привязываются к основному, и двигаются вместе сним. На сколько я понял... А холст как-то выпал из этой концепции :)
Целью данного вопроса было узнать, бывают ли случаи, когда нужно двигать элемент без холста или холст без элемента?
Есть идея добавить в CElement::Moving что-то такое
Чтобы холст всегда двигался за элементом.
Ничего не сломается в таком случае? :)
Изначально просто не было такой задачи, чтобы уже после создания GUI нужно было перемещать элементы. Всё закладывалось на идею, когда в каждом элементе было уже всё необходимое поведение реализовано.
Встречные вопросы: Зачем нужно перемещать элементы? Что Вы хотите сделать? Какое поведение при взаимодействии с GUI нужно получить?
Чтобы понять сломается ли что-то, нужно тестировать все элементы после каждого изменения в базовых классах. Так сразу уже сложно сказать. Давно глубоко не заглядывал.
Создайте тестовый GUI, в котором будут все элементы библиотеки и тестируйте после внесённых изменений.
Изначально просто не было такой задачи, чтобы уже после создания GUI нужно было перемещать элементы. Всё закладывалось на идею, когда в каждом элементе было уже всё необходимое поведение реализовано.
Встречные вопросы: Зачем нужно перемещать элементы? Что Вы хотите сделать? Какое поведение при взаимодействии с GUI нужно получить?
Чтобы понять сломается ли что-то, нужно тестировать все элементы после каждого изменения в базовых классах. Так сразу уже сложно сказать. Давно глубоко не заглядывал.
Создайте тестовый GUI, в котором будут все элементы библиотеки и тестируйте после внесённых изменений.
Ну, например, разворачивающиеся списки. По клику часть элементов скрывается, все, что ниже, подтягивается вверх. И наоборот.
Тестовый GUI - хорошая идея, нужно будет попробовать сделать :)
Кстати, в этом же CElement::Moving
Если есть привязка, элемент двигается вместе с холстом. Так что теоретически ничего не должно сломаться :)
Кто нибудь пробовал создав комбобокс с помощью той библиотеки - менять в нем жлементы ??? Поделитесь Как Вы это делаете ?
Я создаю комбобокс, все работает. Далее заполняю его элементами при помощи следующей функции:
Все работает. После я выбираю в заполненном комбобоксе - к примеру третье значение. и нажимаю на кнопку, результатом нажатия которой происходит ряд действий итогом которых является перезаполнение комбобокса. Причем перезаполняю его я уже одним значением (к примеру изначально в нем было 20 элементов, после нажатия на кнопку остаеттся лишь один элемент !).
И тут происходит интересная ошибка - после того как все перезаписалось (при помощи выше предоставленной функции) - я пытаюсь раскрыть комбобокс, но у меня это не получается, так как выскакивает ошибка Array out of range!
Ошибка возникает в методе:
void CListView::RedrawItemsByMode(const bool is_selected_item=false)
На строке 1364. Как я выяснил покопавшись, она возникает из за того что :
1) при выбоке третьего элемента списка (перед нажатием на кнопку) - в переменную
m_prev_item_index_focus
заносится индекс равный 3. После чего жтот индекс передается через переменную prev_item_index в массив
indexes
на строке 1357. Резальтатом чего - на строке 1364 - происзодит выбор значения из массива
m_items
под индексом № 2 (индекс соответствующий прошлому выбранному элементу.) в то время, как массив (m_items) - насчитывает оишь одно значение - под индексом #0
Я копаюсь уже второй день и так и не смог найти место где бы сбрасывалось в нуль значение переменной
m_prev_item_index_focus.
Логически предположить что оно должно бы чиститься в методе Clear - класса CListView который я использовал для отчистки всех находившихся там жлементов, однако к сожалению я не смог найти там такового метода...
В связи со всем перечисленным вопрос:
1) Это баг библиотеки, или же я не верно обновляю значения ?
2) Как бы лучше обойти получивлуюся проблемму ?
Пока что все решения которые я нашел сводятся к редактированию кода библиотеки (добавлению новых 3 строк кода) - но мне не нравится мысль о корректировки чужого кода...
Минимальный воспроизводимый код моего вопроса:
...
Пока что все решения которые я нашел сводятся к редактированию кода библиотеки (добавлению новых 3 строк кода) - но мне не нравится мысль о корректировки чужого кода...
Спасибо за сообщение.
Попробуйте внести небольшое дополнение в метод класса CListView. Нужно обнулить вспомогательные поля, как отмечено ниже:
Спасибо за сообщение.
Попробуйте внести небольшое дополнение в метод класса CListView. Нужно обнулить вспомогательные поля, как отмечено ниже:
Благодарю за ответ.
Как на счет репозитория на битбакете и принятия коммитов от активных пользователей библиотеки?
Вместе быстрее допилим ;)
Подскажите как правильно обрабатывать кнопку закрытия окна?
Проблема в следующем: помещаю на график эксперта (к примеру ExampleEAF.ex5) и свой индикатор в отдельное окно под графиком (минимальный код только отображет пустое окно). Далее нажимаю на кнопоку закрыть окно на любом из этих приложений и закрываются (удаляются с графика) оба.
Не совсвем корректное поведение. Есть ли какой способ различать события для разных приложений, работающих одновременно на одном графике? Есть подозрение, что и другие события, так же могут пересекаться.
Как на счет репозитория на битбакете и принятия коммитов от активных пользователей библиотеки?
Вместе быстрее допилим ;)
Мне уже дали доступ. Многие правки у меня вызывают сомнения.
Нет обоснования для тех или иных изменений. Проще на форуме здесь вести обсуждение.
Если вносятся, какие-то изменения, то нужно приводить примеры и результаты тестов с объяснением, почему так будет лучше.
Подскажите как правильно обрабатывать кнопку закрытия окна?
Проблема в следующем: помещаю на график эксперта (к примеру ExampleEAF.ex5) и свой индикатор в отдельное окно под графиком (минимальный код только отображет пустое окно). Далее нажимаю на кнопоку закрыть окно на любом из этих приложений и закрываются (удаляются с графика) оба.
Не совсвем корректное поведение. Есть ли какой способ различать события для разных приложений, работающих одновременно на одном графике? Есть подозрение, что и другие события, так же могут пересекаться.
Я протестирую, когда появится время и сообщу здесь о результате.