![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DrawGrid [D7]
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]В расчетах ширины и высоты не учитываешь толщину линий сетки.