Библиотеки: EasyAndFastGUI - библиотека для создания графических интерфейсов - страница 15

 
lovaK:
Спасибо, я видел этот Ваш код на странице 7 и, в свое время, забрал его. Проблема в том, что с Вашим дополнением прекрасно  выравнивается текст, например, в поле комбо-бокса, но в поле ввода TextEdit текст таким методом не выравнивается, так и остается выравненным по левому краю.

Да, TextEdit не приходилось выравнивать :)

Сам текст рисует TextBox (m_edit), его нужно крутить. Там свой метод рисования текста и, на сколько я понял, текст рисуется посимвольно.

Первое, что приходит в голову, менять х-координату в CTextBox::TextOut(void) :)

 

Все думаю, чего не хватает. А это шаблоны :) Супер!

Мельком глянул, есть вопрос: почему не можем избавиться от window_index в параметрах? У нас же есть указатель на главный элемент, пусть скажет индекс окна :)

 
Oleksii Chepurnyi:

...

Мельком глянул, есть вопрос: почему не можем избавиться от window_index в параметрах? У нас же есть указатель на главный элемент, пусть скажет индекс окна :)

Не помню почему. Надо ещё раз попробовать.

 

Архив с последней версией библиотеки в прицепе.

Файлы:
Files.zip  422 kb
 

По поводу window_index набросал, отправил в битбакет.

В таком варианте каждый элемент будет хранить индекс окна.

 

Привет Анатолий Кажарский , вкус любителя, который следит за твоей превосходной работой.

Проблема была найдена в галерее EasyAndFastGUI и в статье EXPERT COMERIAL С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ: ФУНКЦИОНАЛЬНОСТЬ ЗАПОЛНЕНИЯ (ЧАСТЬ II)

Прикрепленное изображение ошибки:


Я не знаю, в чем проблема, вы можете мне помочь ??? ПОЗДРАВЛЯЕМ ...

КОММЕРЧЕСКИЙ ЭКСПЕРТ С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ: ФУНКЦИОНАЛЬНОСТЬ ЗАПОЛНЕНИЯ (ЧАСТЬ II)

 
Что я делал:
панель, в которой несколько комбобоксов и полей ввода цифр. Есть один главный комбобокс, от которого зависят остальные поля

Как это должно работать:
когда меняется значение главного комбобокса, то остальные поля ввода и комбобоксы: что-то скрывается, что-то появляется, что-то меняет свое местоположение (X,Y)

Какие способы пробовал я:
1) - при перевыборе значения в главном комбобоксе - все лишние элементы удаляются (Delete()), а потом заново создаются (Create...()). Итог - при новой отрисовке элементов - когда нажимаешь на элемент перерисованного комбобокса - возникает - array out of range возникает при доступе к массиву элементов формы. Пробовал "закостылить" ошибку и добавил в месте ошибки проверку на  размер массива (чтобы принудительно не выходил в цикле за массив), теперь, когда сюда доходит, то форма просто "зависает".

2) - пробовал способ 1), но при этом добавил в WndContainer  функцию, которая написана в данной ветке, в начале "DeleteElementsFromArray" - ситуация не изменилась

3) - пробовал отрисовать все элементы с одними и теми же значениями X,Y (все элементы в одной точке), далее сразу скрываю их (Hide()), далее при необходимости меняю им X,Y (XGap(...), YGap(...)) и отрисовываю (Update(true); Show()) - тут другая проблема - часть элементов не прячется после скрытия, а другая часть - теряет свой LabelText (его просто визуально нет)


Что посоветуете?
 
Mikhail Mitin:

добавил в WndContainer  функцию, которая написана в данной ветке, в начале "DeleteElementsFromArray" - ситуация не изменилась


Я же написал, для простых элементов. Комбобокс - не простой ) В нынешнем варианте должны и сложные удаляться, но еще не тестил по-моему, да и менять там много нужно )

А для скрытия я добавил элементам свойство m_is_hiden и в CWndEvents::Show(const uint window_index); элементы с true пропускаются

 

Макрос в файле Defines.mqh

#define TO_STRING(A) #A

не совместим с Alglib {ap.mqh)

class CSerializer
  {
   //--- enumeration
   enum SMODE { DEFAULT,ALLOC,TO_STRING,FROM_STRING };

Пришлось переименовать.