Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
8-1185237839
Дмитрий Белькевич
2007-07-24 04:43
2008.08.31
Сглаживание в терминальной сесии.


2-1216888966
evgenij
2008-07-24 12:42
2008.08.31
Пропадает рисунок на канве


3-1204629190
harisma
2008-03-04 14:13
2008.08.31
Работа с типом данных TABLE


2-1216794383
Mishenka
2008-07-23 10:26
2008.08.31
Как отловить событие, когда в ListView изменяют ширину столбца?


1-1197276566
BoxTer
2007-12-10 11:49
2008.08.31
Копирование данных между листами Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский