0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 45
|
||||||
1 | ||||||
Изменение размеров столбцов в DBGrid в зависимости от монитора06.08.2017, 11:34. Показов 7994. Ответов 43
Метки нет (Все метки)
есть DBGrid у него в свойствах Align стоит alClient сама область таблицы растягивается по экрану как надо но вот столбцы нет, как сделать чтобы столбцы также растягивались при увеличении экрана точнее формы по экрану?
у меня в DBGrid 5 столбцов: 0.код 1.имя 2.фамилия 3.отчество 4.должность, вот например как сделать чтобы столбец 1.имя менял свою ширину относительно экрана при развертывании формы на весь экран? а при свертывании в обратное положение формы также и столбец принимал свою изначальную ширину. Добавлено через 1 час 19 минут попробовал в onResize формы написать вот так
если например ширина мною созданной формы равна 950рх все столбцы и вертикальный скрол занимают 100% область DBGrid, когда разворачиваю форму на размер экрана 1024х768 то получается пустота между столбцами и скролом примерно размер пустоты столько же сколько и сам скрол при этом столбец (1) чуть чуть растягивается, когда разворачиваю форму на размер экрана более 1024х768 то пустота между столбцами и скролом увеличивается столбец (1) чуть больше растягивается, как сделать чтобы независимо от размера экрана столбец (1) растягивается так чтобы все столбцы и вертикальный скрол все время занимали 100% области DBGrid?
0
|
06.08.2017, 11:34 | |
Ответы с готовыми решениями:
43
Изменение размеров DBGrid в зависимости от количества записей в БД Автоматическое изменение размеров контролов в зависимости от размеров формы Изменение Размеров Таблицы DBGrid Автоматически Изменение размеров в зависимости от разрешения дисплея |
qwertehok
|
06.08.2017, 12:02
#2
|
Не по теме: сомневаюсь что получится так сделать
0
|
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 45
|
|
06.08.2017, 12:04 [ТС] | 3 |
то есть вообще нельзя так сделать? или нельзя так сделать с одним столбцом? надо делать сразу все 5 столбцов? какое есть решение?
0
|
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 45
|
|
06.08.2017, 14:17 [ТС] | 5 |
сколько процентов составляет ширина столбца от ширины грида? если так то я подсчитал что столбец (имя) равен 57.37% от грида 950рх грид и 545рх столбец (имя) верно? и так для каждого столбца?
0
|
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 45
|
||||||
06.08.2017, 16:44 [ТС] | 7 | |||||
так должно выглядеть?
0
|
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 45
|
|
06.08.2017, 17:12 [ТС] | 9 |
в программе с таким кодом столбец сжался почти полностью, и при развертывании формы столбец становится еще меньше
или я в принципе все не верно делаю?
0
|
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
|
|
06.08.2017, 18:48 | 10 |
Не совсем, но ход мыслей верный, несколько замечаний:
- нужно юзать DBGrid1.ClientWidth, а не DBGrid1.Width; - нужно учитывать ширину гридлайнов (их сумма зависит от количества столбцов); - округлять лучше через Trunc, иначе можно поймать момент когда грид за криентскую область вылезет, собственно из-за округления обычно косяки в несколько пикселей и вылазят, но побороть вполне реально. Можно, я делал.
0
|
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 45
|
||||||
06.08.2017, 19:12 [ТС] | 11 | |||||
написал вот так но не че не изменилось также столбец наоборот сузился и при развертывании на весь экран столбец становится еще меньше а не больше((
наверно неправильно подсчитан процент 57.37?
545рх столбец (1) 70рх столбец (0) 125рх столбец (2) 125рх столбец (3) 70рх столбец (4)
0
|
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 45
|
|
06.08.2017, 20:16 [ТС] | 13 |
поставил код из той темы теперь все столбцы стали одного размера и чуть вылазит последний столбец за область появился горизонтальный скрол, при развертывании они расширяются как надо на всю область но если свернуть обратно то они так и остаются расширенными, можно как то настроить код чтобы столбцы были разного размера какие я задам и не вылазили за область, и при свертывании сужались обратно?
0
|
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,373
|
|
06.08.2017, 23:31 | 14 |
Интересно, что-то не замечал раньше такого, может что упустил тогда. Проверю...
0
|
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 45
|
|
06.08.2017, 23:43 [ТС] | 15 |
Скорее всего я что то не так сделал, надо было скопировать код не чего в нем не меняя и вставить его в событие DBGridDrawColumnCell а потом в опциях грида поставить dgColumnResize = False? так?
0
|
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,373
|
|
06.08.2017, 23:59 | 16 |
Да, верно. Для грида создаете колонки, задаете ширину ручками для колонок которые не надо масштабировать и выставляете для этих колонок флаг ReadOnly в True.
Добавлено через 1 минуту Насчет скрола горизонтального вы правы, он появился. В XE версии я его не видел, сейчас разбираюсь в чем подвох.
0
|
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 45
|
|
07.08.2017, 00:04 [ТС] | 17 |
Ок спасибо огромное! я использую Delphi 7.
0
|
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,373
|
|
07.08.2017, 00:04 | 18 |
Ага, понял в чем дело! Моя недоработка. Я не использую в гриде индикатор и если его скрыть, то все работает как надо. Попробую подправить код с учетом индикатора, но что-то пока не вижу откуда взять его размеры.
0
|
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 45
|
|
07.08.2017, 00:13 [ТС] | 19 |
Ага понял про что вы говорите, я пытался подсчитать его размер когда вычислял пропорции для столбцов.
0
|
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,373
|
|||||||||||
07.08.2017, 00:37 | 20 | ||||||||||
В общем, как временный костыль можно добавить строчку:
Пока я не нашел способа получить размер индикатора.
1
|
07.08.2017, 00:37 | |
07.08.2017, 00:37 | |
Помогаю со студенческими работами здесь
20
Изменение размеров столбцов DataGridView Изменение размеров формы в зависимости от разрешения экрана Изменение размера шрифта в TextBox в зависимости от его размеров Изменение размеров строк и столбцов на защищенном листе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |