Главная страница
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.011 c
15-1215681548
DRG
2008-07-10 13:19
2008.08.31
Книга по С++ для знающего Delphi


15-1215977854
AFHU
2008-07-13 23:37
2008.08.31
Маленький вопрос по php


4-1194955541
Tahion2
2007-11-13 15:05
2008.08.31
Смена иконки папки в Висте


15-1215750791
shlst
2008-07-11 08:33
2008.08.31
А чего это дедушки волнуются -


15-1215904582
Kostafey
2008-07-13 03:16
2008.08.31
С днем рождения ! 13 июля