![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Может ли DBGrid иметь разное значение RowsHeigth для каждой Ячейк
jeka_t © (2006-03-09 15:10:00)Можно ли заставить DBGrid показывать таблицу с разным значением RowsHeigth, взависимости от длины текста в ячейке?
Amoeba (2006-03-10 12:19:00) [21]
> jeka_t (10.03.06 10:06) [10]
> Пробывал компонент TDBGridEh - результат тот же...
Естественно. В этот компонент такая функциональность не встроена.
jeka_t (2006-03-10 10:06:00) [22]Пробывал компонент TDBGridEh - результат тот же...
Игорь Шевченко (2006-03-10 00:18:00) [23]sniknik © (09.03.06 22:40) [8]
> да, но не компонентами (наследование, создание в рантайме,
> пожалуйста), все должно быть в проекте. "идея" в том, что
> когда код передают на тестирование/проверки и т.д. и должен
> без дополнительных установок компонент (кроме тех двух утвержденных,
> и весде стоящих), должен сразу компилится и работать.
Правильная идея, очень полезная. Согласен целиком и полностью.
А что до грида, то дальше приводится как раз код с наследником, где проблемы с перерисовкой вроде решены.
sniknik (2006-03-09 22:40:00) [24]> Неправильный это способ - стандартный DBGrid таким образом рисовать.
ну я и не рисовал, не нужно было, это так "экспромт".
а ссылку я знаю.
> А самому писать разрешено ?
да, но не компонентами (наследование, создание в рантайме, пожалуйста), все должно быть в проекте. "идея" в том, что когда код передают на тестирование/проверки и т.д. и должен без дополнительных установок компонент (кроме тех двух утвержденных, и весде стоящих), должен сразу компилится и работать.
впрочем старое требование, сейчас его "подзабыли". (да и код уже не передают)
вообще я даже за такой подход был, после того как мне прислали проверить прогу с другого города, в исходниках... 3 недели согласовывали, что и как и куда нужно установить чтобы только начало компилироваться.
ну тогда целая эпопея была ;о), в цирк можно было не ходить. ;о))
- "компонент rxxxxx (на самом деле не помню какой) отличается от "стандартного" скачанного по ссылке xxxxx, не могли бы вы прислать вашу видимо измененную вами версию..."
- "эээ... а что не работает?"
- "ничего не работает, даже не компилится, ругается на кучу переменных которых в моей версии нет."
- "а так это компоненты rxxxxx! их в инете полно! вы не знаете что такое rxxxxx ?"
- "я знаю что такое rxxxxx (уже знаю...), но версия из инета скачанная из 13 мест ....(ссылки) не сходится с вашей..."
- "эта... мне тут передали, вы говорят не можете найти rxxxxx? можно скачать в ... (6 из 13 моих же ссылок)"
- "я это знаю, качал. но это не подходит!!! см. раннюю переписку, и ПРОСТО ПРИШЛИТЕ ВАШ ВАРИАНТ!"
- "нуууу, я не программист, сейчас спрошу..."
- "а кто? мне дали ящик программиста. (а отвечает уже третий человек, и тон не программист)"
- "а когда вы закончите тестирование? мы уже неделю как код вам выслали."
- "да мы даже не начали. вы нам не все прислали."
- "я буду жаловаться начальству..."
...
тоже иду к начальству. в тот же день присылают злосчастный компонент. тут же стопоримся на другом, и вроде тоже "стандартный-в инете полно".
и т.д. по новой.
сейчас приятно вспомнить, весело, а тогда злой был... ;)
Игорь Шевченко (2006-03-09 21:34:00) [25]sniknik © (09.03.06 21:24) [6]
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=806#01_1
Неправильный это способ - стандартный DBGrid таким образом рисовать.
> в контору, в которой запрещены левые, нелицензионные, сомнительные
> (в общем все, за исключением пары) сторонние компоненты
А самому писать разрешено ?
sniknik (2006-03-09 21:24:00) [26]> Зациклиться не боишься ?
боишся не садись программировать!
> В общем, овчинка выделки не стоит.
вот тебя бы в контору, в которой запрещенылевые, нелицензионные, сомнительные (в общем все, за исключением пары) сторонние компоненты... вот тогда бы еще услышать про "овчинку".
> Доказано на Королевстве Delphi
все можно решить. доказано мной.
еще пример(!!!)
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
GridCoord: TGridCoord;
begin
GridCoord:= TMyDBGrid(Sender).MouseCoord(Rect.Left + 2, Rect.Top + 2);
if (GridCoord.X < 0) then Exit;
if Odd(GridCoord.Y) then TMyDBGrid(Sender).RowHeights[GridCoord.Y]:= 18
else TMyDBGrid(Sender).RowHeights[GridCoord.Y]:= 36;
end;
как видиш не циклится... про недостатки, вводе как при скролировании по одному вверх не надо, знаю (легко исправить). это (как и выше) пример, не надо его бездумно себе в программу вставлять, и ждать законченного решения, он всеголиш показывает возможность.
Crash Coredump (2006-03-09 18:38:00) [27]sniknik © (09.03.06 18:35) [4]
> "повесь" расчет высоты на отрисовку и будет "навсегда"..
> .
Зациклиться не боишься ? Изменение свойств (rowHeights) вызовет Invalidate и ты опять попадешь в ту же перерисовку. В общем, овчинка выделки не стоит. Доказано на Королевстве Delphi
sniknik (2006-03-09 18:35:00) [28]> Но недолго. До первой прокрутки.
"повесь" расчет высоты на отрисовку и будет "навсегда"...
Crash Coredump (2006-03-09 18:10:00) [29]sniknik © (09.03.06 17:50) [2]
> могут разную
Но недолго. До первой прокрутки.
jeka_t (09.03.06 15:10)
Могу порекомендовать EhLib Дмитрия Большакова, там, насколько я помню, этого эффекта добиться можно.
http://www.ehlib.com/RUS/default.htm
sniknik (2006-03-09 17:50:00) [30]> Строки в DBGrid могут иметь только одинаковую высоту.
могут разную
для примера
type
TMyDBGrid = class(TDBGrid);
procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
begin
i:= 1;
with TMyDBGrid(DBGrid1) do
while i <= RowCount - 1 do begin
RowHeights[i]:= 10+i*8;
inc(i);
end;
end;
Amoeba (2006-03-09 17:32:00) [31]Строки в DBGrid могут иметь только одинаковуювысоту.