Форум: "Основная";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
ВнизИзменение ширины ячеек TDrawGrid в run-time Найти похожие ветки
← →
tvolf (2007-12-14 23:39) [0]Всем привет. Такая проблема. Есть форма, на ней две панели (TPanel). Одна с выравниванием влево (alLeft),
другая - alClient. На левую панель положен TDrawGrid. Для него тоже установлено выравнивание в alClient,
то есть он занимает площадь всей левой панели. Для DrawGrid"а установлены свойства :
ColCount = 1
RowCoutn = 1
FixedCols = 0
FixedRows = 0
то есть, выводится всего одна ячейка на экран.
Далее, я меняю ширину левой панели при старте приложения
и хочу, чтобы ячейка динамически изменяла свои размеры, занимая
всю клиентскую область. Для этого в Form.Create пишу :
DrawGrid.DefaultColWidth := DrawGrid.ClientWidth;
Но странное дело -- ячейка не занимает всего доступного пространства ! Справа от неё остается еще пустое место. Выяснил, что всё приходит в норму, когда убираю скроллбары через ScrollBars = ssNone для DrawGrid.
Но мне нужен вертикальный скроллбар... Интересно то, что сам вертикальный скроллбар не отображается, но
программа считает, что он есть. Подскажите, как это можно побороть ?
Заранее благодарю.
← →
Германн © (2007-12-15 01:12) [1]Странная однако проблема. Ведь пока ячейка только одна, зачем ей свойство ScrollBars отличное от ssNone? А вот когда ячеек станет больше (а больше их может стать только при реализации некоего твоего алгоритма), тогда и можно будет задать свойству ScrollBars иное значение.
← →
tvolf (2007-12-15 09:46) [2]Тут дело вот в чем. Я регулирую только ширину ячейки. Высоту (DefaultRowHeight) оставляю такой, какой она идет по-умолчанию (24 пиксела, что ли). Высота самой клиентской области DrawGrid в несколько раз
превышает это значение. И даже при установленном свойстве ScrollBars
в отличное от ssNone значение я просто не могу понять, почему при
выводе формы программа считает, что вертикальный скроллбар есть
(то есть, на экране его не видно, но место под него резервируется) ?
← →
{RASkov} © (2007-12-15 12:01) [3]> [0] tvolf (14.12.07 23:39)
> Для этого в Form.Create пишу :
>
> DrawGrid.DefaultColWidth := DrawGrid.ClientWidth;
Перенеси сиё в метод TForm.OnActivate
← →
tvolf (2007-12-15 12:46) [4]
> {RASkov} © (15.12.07 12:01) [3]
> > Для этого в Form.Create пишу :
> > DrawGrid.DefaultColWidth := DrawGrid.ClientWidth;
>
> Перенеси сиё в метод TForm.OnActivate
Уже нашел выход, поместив вышеуказанный код в обработчик OnShow формы. Просто непонятно, почему такое происходит. Ведь, например, если
после отображения максимизировать и привести в обтарное положение главное окно приложения через кнопки в заголовке окна, ширина ячейки
DrawGrid принимает правильно значение. Почему этого не происходит
при старте ?
← →
{RASkov} © (2007-12-15 12:58) [5]> [4] tvolf (15.12.07 12:46)
> Почему этого не происходит при старте ?
При старте еще не полностью сформировался интерфэйс программы)
:о)
Т.е. некоторые свойства устанавливаются "потом", после создания(Create)...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c