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