Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DrawGrid [D7]


Страницы:   1 2

Ghost del vonte ©   (2012-10-29 18:07:00) 

Здравствуйте!

Вообщем, пишу компонент, на основе TDrawGrid...
И столкнулся с такой проблемой...

У компонента есть поле, в котором указывается колличество клеток,
при изменении которого происходит заполнение компонента клетками...
Суть в том, что заполнение то происходит, но последние клетки видны наполовину... а надо их полностью вместить, ведь изначально неизвестно,
какие будут размеры у грида, и клетки должны быть полностью видны...
У меня неполучается... посоветуйте, как исправить это?

Вот код который я пишу, код из временного проекта, в котором я пытаюсь
найти выход из положения:


// se1 это SpinEdit

 DrawGrid1.ColCount := se1.Value;
 DrawGrid1.RowCount := se1.Value;
 X:= (DrawGrid1.ClientWidth div se1.Value);
 Y:= (DrawGrid1.ClientHeight div se1.Value);
 DrawGrid1.DefaultColWidth := X;
 DrawGrid1.DefaultRowHeight := Y;


Вот с этим пытаюсь бороться http://content.foto.mail.ru/mail/ghostdelvonte/244/i-245.jpg


Германн   (2012-10-30 01:44:00) [21]


> ну... пока дробные пиксели не изобретут.

Или "плавающие по монитору" :)


sniknik   (2012-10-30 01:39:00) [22]

> Summary - и есть результат
одно значение не наглядно, ты смотри списком(столбиком).

> фиксированный был бы лучше...
> это невозиожно.:)
ну... пока дробные пиксели не изобретут.


Ghost del vonte   (2012-10-30 00:28:00) [23]


> результаты от div


Summary - и есть результат, тоесть, ширина и высота клеток, еще + 20 (линии, ширина линии 1, тоесть 20 линий),
и получается 260, как на рисунке... ну и грид стал тоже 260...

Да это в целом не проблема, можно компонент кинуть на панель,
потом, установить колличество клеток, подогнать грид, и центрировать компонент на панельке)) Хотя... фиксированный был бы лучше...


sniknik   (2012-10-29 23:43:00) [24]

> Мне пока не хватает знаний для этого! :)
тебе не хватает пикселя с плавающей запятой... ;) "для этого". а знаний для того чтобы понять...
для наглядности выпиши в столбик результаты от div, и рядом "восстановленное"/умноженное значение, сравни с исходным, константной (например 240 как в примере). сходится?


Inovet   (2012-10-29 21:10:00) [25]

> [5] Ghost del vonte ©   (29.10.12 20:35)
> Жаль что размеры грида не получилось оставить фиксированными...
> Мне пока не хватает знаний для этого! :)

Не расстраивайся, это невозиожно.:)


Ghost del vonte   (2012-10-29 20:39:00) [26]


> Все заработало


http://content.foto.mail.ru/mail/ghostdelvonte/244/i-246.jpg


Ghost del vonte   (2012-10-29 20:35:00) [27]

Спасибо Герман!

Все заработало, сделал так:


 DrawGrid1.ColCount := se1.Value;
 DrawGrid1.RowCount := se1.Value;

 X:= (DrawGrid1.ClientWidth div se1.Value);
 Y:= (DrawGrid1.ClientHeight div se1.Value);

 DrawGrid1.ClientWidth := (X*se1.Value)+se1.Value;
 DrawGrid1.ClientHeight := (Y*se1.Value)+se1.Value;


Грид стал подгонятся и все клеточки хорошо видны!
Жаль что размеры грида не получилось оставить фиксированными...
Мне пока не хватает знаний для этого! :)


Германн   (2012-10-29 20:28:00) [28]

Хотя насчет порядка вычислений я не прав. (((


Германн   (2012-10-29 20:16:00) [29]


> В этом случае, наоборот, остается пустое место...

А это из-за того, что вычитание делается после деления, а не наоборот. И того, что деление целочисленное. А это значит что после вычисления ширины столбца и высоты строки нужно подгонять под них ширину и высоту самого грида.


Ghost del vonte   (2012-10-29 19:56:00) [30]


> В расчетах ширины и высоты не учитываешь толщину линий сетки.


Я уже пробовал, все-равно не получается...
В этом случае, наоборот, остается пустое место...


DrawGrid1.DefaultColWidth := X-1;
DrawGrid1.DefaultRowHeight := Y-1;


Толщина линии по умолчанию = 1


Германн   (2012-10-29 18:44:00) [31]

В расчетах ширины и высоты не учитываешь толщину линий сетки.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо