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

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

Разная высота строк в 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]

Можно


Наверх

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