![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DbGridEh - Selected ... [D5]
BorisUK © (2003-02-24 14:20:00)Как в этой библиотеке, а точнее в Grid работать с выделенными записями...
Имеется ввиду, что можно натыкать несколько записей в разнобой (при включенном мультиселект) и затем, например сложить суммы...
Спрашиваю потому, что видел компоненты (грид какойто не помню где... может даже и в Си), имеющие хорошее свойство OnSelectedCountChange и свойство Nodes[i].Items[i], где nodes коллекция ссылок ТОЛЬКО выделенных записей а Items - набор полей .
Получается что очень просто делается цикл ТОЛЬКО по выделенным записям и ТОЛЬКО по событию OnSelectedCountChange !!!
Тоесть ничего лишнего.
Сейчас могу только сделать цикл по всем записям DataSet и в цикле смотреть выделена или нет и складывать сумму и вешать это все на OnClick что как вы сами уже поняли глубоко будет тормозить... Особенно на худых тачках и с маломальски большим набором записе.
Может я туплю - есть путь а я не вижу... Поскажите как реализовать ЭТО правильно ИМЕННО на DbGridEh...?????
Заранее спасибо за участие....
BorisUK (2003-02-25 06:44:00) [1]ОК
Спасибо всем и особенно
Andrey V. (24.02.03 21:31)
Andrey V. (2003-02-24 21:31:00) [2]Для DBGridEh
Мультиселект должен стоять в тру
Смотри свойство SelectedRows.Count
Вот кусочек из моей проги
for i := 0 to onGrid.SelectedRows.Count-1 do begin
onGrid.DataSource.DataSet.Bookmark := onGrid.SelectedRows[i];
CopyObject.AddID(onGrid.DataSource.DataSet.FieldByName"KeyID").AsInteger);
end;
Но маленький прикол : если выделен ВЕСЬ грид ИМХО
SelectedRows.Count вернет ноль , а узнать выделен весь грид
или нет можно проверив Selection.SelectionType=gstAll
Романов Р.В. (2003-02-24 19:58:00) [3]BorisUK
Если пользуешься стандартным выделением то перемещение можно ускорить если переходить от по закладкам property SelectedRows: TBookmarkList;
Другой вариант создать свой список выделенных записей, в который кроме ссылки на запись помещать значения полей по которым нужно вычислять сумму, либо сразу пересчитывать сумму при добавлении/удалении записи из этого списка.
Nic_B (2003-02-24 19:50:00) [4]2 BorisUK - я в таких случаях делал так (возможно это тупо):
В таблицу добавлял логическое поле (например Flag) при выделении записи заносил туда True а потом простым запросом
select * from mybase where flag=true
выбирал выделенные записи и все проблемы
Nic_B (2003-02-24 19:46:00) [5]2 artur11 - определить какие ячейки выделены можно так:
if wwDBGrid1.IsSelectedRecord =True then begin
и т.д.
end;
artur11 (2003-02-24 18:55:00) [6]Пожалуйста!!!Срочно!!!
Если можешь вышли мне код который ты повесил на ONClick для того,чтобы определить какие ячейки выделены!!!
Мне это срочно нужно для того чтобы из одного DBgrida в другой скопировать несколько ячеек.
Очень буду Благодарен!!!!
BorisUK (2003-02-24 15:50:00) [7]если про DBGridEh конкретно никто не знает...
Скажите про обычный DBGrid... я покопал его там - аналогично.
ЛЮДИИИ!!! Есть ли конкретно правильный путь такое сделать или только такой изврат как я уже описал????