Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.31;
Скачать: CL | DM;

Вниз

Изменение ширины ячеек 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
2-1216845572
Terasbetoni
2008-07-24 00:39
2008.08.31
Как устанавливать библиотеки? В частности GLScene.


3-1204731053
nstur
2008-03-05 18:30
2008.08.31
Как в ADO открыть запароленную БД Access


3-1204266576
Barsky
2008-02-29 09:29
2008.08.31
Правильный запрос на FireBird SQL


15-1215605885
dms
2008-07-09 16:18
2008.08.31
Работа с LTP портом


2-1216986372
navigator1
2008-07-25 15:46
2008.08.31
Файл в константу