Задать изменение ширины всем элементам ввода окна, при изменении ширины самого окна16.06.2017, 15:40. Показов 4857. Ответов 47
Метки нет (Все метки)
Товарищи коллеги!
Подскажите, а как подобным образом, задать изменение ширины всем элементам ввода окна, при изменении ширины самого окна? Пробовал сделать так:
Когда нажимаю кнопку окна "Развернуть", элементы пропорционально расширяются и сдвигаются друг относительно друга по ширине корректно и равномерно. Но вот при возвращении в исходное состояние окан, они почему-то в свои прежние позиции не становятся, а наезжают друг на друга. Подскажите, что я возможно забыл задать?
0
|
||||||
| 16.06.2017, 15:40 | |
|
Ответы с готовыми решениями:
47
Автоматическое изменение ширины столбца в DBGrid при изменении ширины формы Изменение размера картинки при уменьшении ширины окна
|
| 22.06.2017, 10:28 [ТС] | ||||||||||||
|
"можете даже не спорить" - Боже упаси! Спорить я не в коем случае не собирался. Я тут не спорить, а прийти к решению поставленной цели пытаюсь Описал свой результат как есть. Ниже приведу код, раз качать проект от B6 вам нет смысла, может по нему заметите чего может не хватать. И дабы не быть голословным, коль проект скидывать нет смысла приложу получившийся экзешник, можете запустить и убедиться, что списки действительно не выпадают.Код:
0
|
||||||||||||
| 22.06.2017, 11:06 [ТС] | |
|
Архив с экзешником проекта
0
|
|
|
Супер-модератор
|
||
| 22.06.2017, 11:20 | ||
|
0
|
||
| 22.06.2017, 15:56 [ТС] | |||
|
Добавлено через 1 час 37 минут Или к примеру я буду читать из файла значения, которые указывают на номер элемента в списке Items, который надо будет отобразить в боксе после считывания. Для этого мне опять же подошел бы метод ItemIndex, но его я тут, как понимаю, нет Что делать?
0
|
|||
|
Супер-модератор
|
|||||||||||
| 22.06.2017, 17:26 | |||||||||||
|
Я бы написал еще один метод в классе-перехватчике:
0
|
|||||||||||
| 23.06.2017, 11:12 [ТС] | |||||||||
|
Только вот при попытке запуска что-то выдаёт такие ошибки:
Добавлено через 16 минут
0
|
|||||||||
|
Супер-модератор
|
||||||||
| 23.06.2017, 13:26 | ||||||||
0
|
||||||||
| 23.06.2017, 14:02 [ТС] | ||
|
0
|
||
| 25.06.2017, 15:02 [ТС] | ||
|
А вот, что бы получить индекс, выбранного из списка элемента (по сути обратная операция, у стандартного комбобокса это - combobox->ItemIndex), для этого тоже следует написать еще один метод в классе-перехватчике? Или можно как-то уже имеющимися средствами получить индекс элемента, выбранного из списка? P.S. написал этот вопрос заранее, сам предварительно не поэксперементировав, т.к. в данный момент под рукой не на чем "поиграться" (билдер не установлен). Теоретически пока лишь прикинул варианты, опробовать их смогу только завтра на работе. Так, что не сочтите мой вопрос за банальный Просто хочется к моменту, когда снова смогу сесть за ПК со средой, услышать объективное мнение и сразу писать в правильном направлении. Заранее спасибо!
0
|
||
|
Супер-модератор
|
|||||||||||
| 25.06.2017, 19:54 | |||||||||||
|
Cha1000000, в таком случае проще будет реализовать вот такое свойство:
0
|
|||||||||||
| 26.06.2017, 09:53 [ТС] | ||
![]() ![]() Только пока не совсем понял почему функции: virtual TInplaceEdit* __fastcall CreateEditor(void) и DYNAMIC TEditStyle __fastcall GetEditStyle(int ACol, int ARow) вынесены в protected? И для чего используются virtual и DYNAMIC (последний вообще раньше не видел и нигде не встречал...)?
0
|
||
|
Супер-модератор
|
||
| 26.06.2017, 10:23 | ||
|
У меня в подписи есть ссылка на тему: Классы-перехватчики (interceptor classes) , там в самом низу написано,
0
|
||
| 26.06.2017, 18:25 [ТС] | ||
![]() Добавлено через 7 часов 56 минут Кстати заметил один неприятный баг сей конструкции... Когда уже в запущенной программе кликаю мышкой на комбобокс, он разворачивается щелчка с третьего: 1 - выделяется ячейка, 2 -становится активным текст бокса (или сам бокс я так и не понял пока), ну а по третьему клику список выпадает, и то если кликнуть именно на кнопку выпадения списка, если просто в центр, курсор устанавливается в положение редактирования текста в ячейке. Отсюда возникло два вопроса: можно ли как-то сделать так, чтоб по первому клику по комбобоксу список разворачивался, и как запретить редактирование или ввод текста в эти боксы. Список в них чётко установлен и ввод текста в них не предусмотрен, т.к. обработка данных идёт (в моём случае) чисто по ItemIndex-ам.
0
|
||
|
Супер-модератор
|
||||||||
| 26.06.2017, 21:00 | ||||||||
|
Много текста, надеюсь, не бесполезного
Добавлено через 3 минуты А что касается
0
|
||||||||
| 27.06.2017, 10:24 [ТС] | |||
|
перегрузить нужно оба метода что ли, или достаточно только DoKeyPress? И перегрузить, в данном случае, имеется в виду оставить имя функции с параметрами как есть (как здесь описано: bool __fastcall DoKeyPress(Winapi::Messages::TWMKey &Message) , и лишь в теле функции задать свои условия, или как-то по-другому?? И, запрещая "все ненужные кнопки", в том случае, если ненужными кнопками подразумевется вообще любая кнопка, т.е. в условии запрета не какие-то конкретные кнопки надо указать, а вообще все, для такого случая есть ли какое то "красивое", компактное условие запрета ввода??
0
|
|||
|
Супер-модератор
|
||||||
| 27.06.2017, 11:04 | ||||||
|
Упс. Я ошибся, методы DoKey<...> нельзя перегрузить, они не виртуальные. Перегружать надо либо KeyPress, либо KeyDown. Я сделал для KeyDown. На этот раз код будет предельно лаконичным, и длинных комментариев не потребуется:
0
|
||||||
| 27.06.2017, 12:05 [ТС] | |||||||
Не в смысле не компиллируется, а именно не функционирует. Проект собрался, запустился, выбираю из бокса элемент, но его по-прежнему можно редактировать. Попробовал сделать такой же метод для KeyPress, тоже безрезультатно((
0
|
|||||||
|
Супер-модератор
|
|
| 27.06.2017, 12:24 | |
|
Чуть позже проверю на портабельной версии 6-го Билдера, у меня она где-то на старом компьютере валялась. Но я решительно не понимаю, что там может не работать. Кстати, return у меня не было.
0
|
|
| 27.06.2017, 12:51 [ТС] | |||||||
|
Кстати, пробовал пойти обходным путём, в лоб хотел задать свойству Стринггрида OnKeyPress условия, в его объект-инспекторе, повесил такие обработки:
А что, если по типу virtual bool __fastcall SelectCell(int ACol, int ARow) сделать тоже для стринггридовского KeyPress?
0
|
|||||||
|
Супер-модератор
|
||
| 27.06.2017, 13:02 | ||
|
Кстати, у меня мой код отработал и на 6-ом Билдере. Так что либо что-то неправильно скопировано, либо какая-то проблема с Билдером (а еще чего хуже - с системой). Я ж говорю: тут нечему НЕ работать - это базовые вещи, на которых построена вся VCL. Если это не будет работать, то и все остальное - тоже.
0
|
||
| 27.06.2017, 13:02 | |
|
Помогаю со студенческими работами здесь
40
Изменение длины и ширины окна влияет на размеры объектов Пропорциональное изменение высоты CardView при изменении ширины Изменение масштаба яндекс карты при изменении ширины экрана Не переносится блок при уменьшении ширины окна Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|