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

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

TStringGrid суммирующая строка


sia ©   (2005-12-07 18:38:00) 

как сделать в TStringGrid суммирующую строку? т.е. внизу грида, болтается строка типа fixed, в которой можно отобразить сумму по колонке.


sia   (2005-12-08 17:38:00) [1]

спасибо


Amoeba   (2005-12-08 16:55:00) [2]

EhLib здесь:
http://www.ehlib.com/RUS/ehlibrus.exe
Пароль sfx-архива: ФЕВРАЛЬФЕВРАЛЬ


msguns   (2005-12-08 15:44:00) [3]

>sia ©   (08.12.05 13:51) [15]
>я смотрел твой код. и даже спрашивал у тебя про загадочный DBServ (письмом)...

Каюсь, запамятовал ;))

Лови "прицепчик"


sia   (2005-12-08 14:18:00) [4]


> Amoeba ©  

EhLib

это то, что надо. теперь бы узнать, как это он сделал... ;)


sia   (2005-12-08 13:51:00) [5]


> msguns ©

я смотрел твой код. и даже спрашивал у тебя про загадочный DBServ (письмом)...
твою идею я прекрасно понял. и прописано у тебя все довольно хорошо. но для решения моей задачи это не совсем подходит. по-этому я хочу реализовать это, так, как написал выше.


msguns   (2005-12-08 13:42:00) [6]

Никуда лазать не надо. Ничего переписывать (перекрывать, переопределять, перегружать и т.д.) не надо. Итоговая строка просто создается на панели, "подогнанной" с гриду типа как его часть, либо просто пишется в заголовке грида при FixedRows=1.
"Сложность" лишь в динамическом создании панелек (т.к. кол-во колонок грида переменное) и "подгонке" их ширины при ресайзе грида для попадания в границы колонок.
Ты бы хоть взглянул на посланный код - там ведь все несложно. Хотя бы любопытства ради ;)


sia   (2005-12-08 13:05:00) [7]


> msguns ©


меня интерисует решение без дополнительных к гриду контролов, типа панель, хидер...
у меня уже есть мой компонент - наследник от TStringGrid. В DrawCell я уже извращаюсь, как хочу... Но... Как я писал ранее:
"этот метод позволяет рисовать только в области ячеек. поэтому, даже если и нарисовать фиксированную строчку внизу этого контрола, то паинт грида ее сотрет :(
надо каким-то образом переписать сам паинт."
как это сделать правильно? я уже залез в сам TStringGrid, вернее в TCustomGrid в его Paint. добавил процедурку, которая рисует внизу грида фиксированную строку, точно такую же, как заголовок колонок. Но при скролировании грида с данными вверх:
1. на яцейках остается образ этой строки
2. придостижении конца грида последняя строка спрятана под моей, нарисованной.


msguns   (2005-12-08 12:45:00) [8]

>Defunct ©   (08.12.05 11:20) [9]
>2. Использовать дополнийтельный Control, к примеру TPanel.

В отправленном почтой проекте решается именно через TPanel (только не одну, конечно, а целый "пирог" из панелей для удобства выравнивания при ресайзах) и лабели.

Хотя, судя по реакции sia на "предложение" Амебы, будет выбран "компонентокидательный" путь ;)


sia   (2005-12-08 12:27:00) [9]


> А может подойдет связка TDrawGridEh

где его взять?


Amoeba   (2005-12-08 11:37:00) [10]

А может подойдет связка TDrawGridEh (в мем есть нужная тебе возможность) + какой-нибудь MemoryTable или ClientDataSet?


Defunct   (2005-12-08 11:20:00) [11]

sia ©   (08.12.05 09:44) [5]

1. Использовать TDrawGrid.
2. Использовать дополнийтельный Control, к примеру TPanel.


msguns   (2005-12-08 10:42:00) [12]

Удалено модератором
Примечание: Личная переписка


sia   (2005-12-08 10:14:00) [13]

Удалено модератором
Примечание: Личная переписка


msguns   (2005-12-08 09:51:00) [14]

Удалено модератором
Примечание: Личная переписка


sia   (2005-12-08 09:44:00) [15]


> OnDrawCell. Там и рисуй все, что хочешь

к сожалению, не подходит.
этот метод позволяет рисовать только в области ячеек. поэтому, даже если и нарисовать фиксированную строчку внизу этого контрола, то паинт грида ее сотрет :(
надо каким-то образом переписать сам паинт, я думаю.


Anatoly Podgoretsky   (2005-12-07 22:34:00) [16]

Может подойдет THeaderControl ?


MU   (2005-12-07 19:37:00) [17]

OnDrawCell. Там и рисуй все, что хочешь


sia   (2005-12-07 19:30:00) [18]

нет. ты не понял... жаль нельзя вставить картинку...
как пересчитывать сумму и прочее мне понятно...
мне надо НАРИСОВАТЬстроку с результатами ВНИЗУгрида. она должна выглядеть, как заголовок колонок.
так, может быть, понятнее будет...


TStas   (2005-12-07 18:45:00) [19]

Как? При изменении содержимого ячейки пересчитывать сумму. Чтобы это изменение выловить с гарантией, запретить прямое редактирование ячееек, а по событию OnDrawCell подкладывать Edit на ячеку. А edit'у написать в onChange все, что нужно. Можно и в OnExit написать ему.


Наверх

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