![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Разная высота строк в dbGrid [D5]
Alex_C © (2003-05-27 10:35:00)Можно ли в dbGrid сделать для разных строк разную высоту в зависимости от данных?
Bless (2003-05-29 09:08:00) [1]>Um
Спасибо.
интересующийся (2003-05-29 08:26:00) [2]> Um
так просто действительно
спасибо
Um (2003-05-29 07:15:00) [3]>Bless
не DbGrid1=class(TDBGrid),
а DbGrid1:TDBGrid
THackGrid - класс
DbGrid1 - экземпляр класса TDBGrid
Um (2003-05-29 07:09:00) [4]Объявленный новый класс THackGrid наслудует protected секцию у TDBGrid, а в любом месте в пределах этого модуля можно использовать методы и поля из любой секции THackGrid даже из Private.
THackGrid(DbGrid1).RowHeights[Table1.RecNo]:=100
(описанное в том же модуле что и THackGrid);
вызывает Protected свойство класса THackGrid - которое наследовано от TCustomGrid;
интересующийся (2003-05-29 06:02:00) [5]Так кто-нить ответит на вопрос Blessа?
Так кто-нить ответит на вопрос Blessа?
Так кто-нить ответит на вопрос Blessа?
Или все молча поняли?
Bless (2003-05-28 14:34:00) [6]Если я правильно тебя понял, то это аналог integer("a"), только вместо integer THackGrid. А какой смысл в таком приведении, если DbGrid1=class(TDBGrid) THackGrid=class(TDBGrid)?
И каким образом это дало доступ к переменной RowHeights, объявленной в секции protected класса TCustomDBGrid?
LAMER Pro (2003-05-28 12:47:00) [7]2 Bless
это приведение типа
Bless (2003-05-28 12:22:00) [8]1) По адресу www.volgadb.com можно скачать компонент TVolgaDBGrid,
который позволяет менять ширину строк.
2)Попробовал вышепредложенный способ с массивом RowHeights.
Ширину строк поменяло, по при изменении ширины столбца мышкой
ширина строк стала стандартной. Но все-равно мне понравилось.
Отсюда вопрос. Поясните, плз, строки
type THackGrid=class(TDBGrid);
...
THackGrid(DbGrid1).RowHeights[Table1.RecNo]:=100
То что как-то это позволило использовать свойство из раздела Protected,
мне понятно. Непонятна строка THackGrid(DBGrid1).Something.
Без параметра был бы вызов метода класса, а так что? Объясните, кто знает или посоветуйте, где почитать
Danilka (2003-05-28 08:48:00) [9]Alex_C © (28.05.03 08:40)
В принципе, здесь привели достаточно информации чтобы можно было на ее основе сделать так, как тебе нужно.
А писать готовую программу забесплатно наврядли найдутся желающие.
:))
Alex_C (2003-05-28 08:40:00) [10]Господа! Но вопрос так и остался открытым. Приведенный выше пример, как уже было замечено вызывает исключительную ситуацию Out of range. Работаю с dbGrid. Хоть немного работающий пример please!
NAlexey (2003-05-27 15:20:00) [11]Признаю свою ошибку. Да, действительно так как говорит "гончий".
гончий (2003-05-27 14:39:00) [12]Автор спрашивал как это сделать в DbGrid, а не в StringGrid. Эти два компонента оба образованы от TCustomGrid, но имеют совершенно разную идеологию доступа к данным, если в StringGrid все хранится в памяти, что для БД не очень актуально, то в DbGrid таблица считывается порциями по количеству видимых рядов(записей).
NAlexey (2003-05-27 13:59:00) [13]Простой пример развеял мои сомнения: положил StringGrid на форму, RowCount := 25, Height := 100;
Button1.Click - StringGrid.RowHeights[24] := 50; - нормально, а вот - StringGrid.RowHeights[25] := 50; - Grid Index Out Of Range.
И Help тоже развеял мои сомнения: Gives the height (in pixels) of allrows in the grid.
Use the RowCount property to determine the number of entries in the RowHeights array.
гончий (2003-05-27 13:21:00) [14]Исходники развеют все сомнения :)
RowHeights[0] это высота Title, если они включены в опциях :)
NAlexey (2003-05-27 12:25:00) [15]>В RowHeights содержится только количество элементов соответствующих количеству видимых рядов в GRID
Сомневаюсь я.
Polevi (2003-05-27 12:15:00) [16]2гончий (27.05.03 12:06)
это всего лишь пример
гончий (2003-05-27 12:06:00) [17]Очень не правильный пример!
В RowHeights содержится только количество элементов соответствующих количеству видимых рядов в GRID, поэтому данный пример вызовет исключительную ситуацию здесь:
THackGrid(DbGrid1).RowHeights[Table1.RecNo]
Polevi (2003-05-27 11:09:00) [18]type THackGrid=class(TDBGrid);
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Table1.RecNo mod 2)=0 then
THackGrid(DbGrid1).RowHeights[Table1.RecNo]:=100
else
THackGrid(DbGrid1).RowHeights[Table1.RecNo]:=THackGrid(DbGrid1).DefaultRowHeight;
end;
но лучше написать свой грид
Alex_C (2003-05-27 11:08:00) [19]Отличный ответ. :-) Теперь подстажи как это сделать?
NAlexey (2003-05-27 11:00:00) [20]Можно