![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MultiSelect в TDBGrid [D5, Paradox]
BBCHa © (2006-09-29 00:52:00)Друзья подскажите плз как программно выделить несколько записей в TDBGrid???
Заранее спасибо всем неравнодушным:)
RebroFF (2006-09-29 13:10:00) [1]Я сильно извиняюсь. Не заметил слово "программно".
RebroFF (2006-09-29 13:09:00) [2]Я использую неподражаемый EhGrid из библиотеки EhLib.
Для начала нужно выставить
EhGrid.Options := EhGrid.Options + [dgMultiSelect];
После этого любое выделение сделанное пользователем доступно через свойство TDBGridEh.Selection. Selection.SelectionType указывает на тип выделения:
case EhGrid.Selection.SelectionType of
gstNon: ShowMessage('Ничего не выделено');
gstRecordBookmarks: ShowMessage('Выделено строк: '+IntToStr(EhGrid.Selection.Rows.Count));
gstRectangle:
begin
ADODataSet.Bookmark := EhGrid.Selection.Rect.TopRow;
S1 := ADODataSet.Fields[0].AsString;
ADODataSet.Bookmark := EhGrid.Selection.Rect.BottomRow;
S2 := ADODataSet.Fields[0].AsString;
ShowMessage(Format('Выделено прямоугольник от закладки %s до закладки %s. От столбца %d до столбца %d',
[S1,S2,
EhGrid.Selection.Rect.LeftCol,
EhGrid.Selection.Rect.RightCol]));
end;
gstColumns: ShowMessage('Выделено столбцов:'+IntToStr(EhGrid.Selection.Columns.Count));
gstAll: ShowMessage('Выделен весь грид!');
end;//case
Более подробный пример есть в Справке в EhLib.
Fay (2006-09-29 01:12:00) [3]
with DBGrid1, DataSource.DataSet do
begin
Options := Options + [dgMultiSelect];
Next;
SelectedRows.CurrentRowSelected := True;
Next;
Next;
SelectedRows.CurrentRowSelected := True;
Next;
Next;
SelectedRows.CurrentRowSelected := True;
end;