![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В DBGrid выделить несколько строк сразу [D4, D5, D6, D7]
Comwad © (2003-02-13 06:58:00)Добрых суток!
Подскажите, кто знает как в компоненте DBGrid можно выделить несколько строк сразу, а не через последовательный выбор с клавишей CTRL.
То есть, например, как в проводнике , выделив первую позицию и удерживая SHIFT выделяя последнюю получаем выбор из нескольких строк.
Спасибо.
Comwad (2003-02-14 08:04:00) [1]Спасибо за совет Reindeer Moss Eater.
Сделал - все отлично работает.
Вот исходники - кому надо.
Думаю пригодится кому-нибудь.
var BM1,BM2:TBookmarkStr;
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Main_MySelectRowsFromGrid(Sender, Shift);
end;
procedure TForm1.Main_MySelectRowsFromGrid(Sender: TObject; Shift: TShiftState);
begin
If (ssShift in Shift) then
Begin
If BM1 <> "" then
Begin
BM2:= (Sender as TDBGrid).DataSource.DataSet.Bookmark;
MySelectRowsFromGrid(Sender);
End
End
else
begin
BM1:= (Sender as TDBGrid).DataSource.DataSet.Bookmark;
BM2:="";
end;
end;
procedure TForm1.MySelectRowsFromGrid(Sender: TObject);
var i,q:Integer;
procedure MySelectRows(BM_Down,BM_Up:TBookmarkStr;_Down:Boolean);//1-
Reindeer Moss Eater (2003-02-13 09:38:00) [2]Рецепт:
В каждом MouseDown, если не нажат Shift запоминать BookMark1.
В каждом MouseUp, если не нажат Shift освобождать BookMark1.
Если в MouseUp нажат шифт и есть BookMark1, запоминать BookMark2.
Определить какая из двух закладок ближе к началу датасета (CompareBookMark если BookMarkStable = True)
Стоя на одной из закладок, и зная в каком направлении находится вторая, передвигаться по датасету к ней, внося в SelectedRows какждую строку.
Последний абцац в косметических целях рекомендуется делать "задом-наперед", т.е. двигаясь от BookMark1 к BookMark2.
Stas (2003-02-13 09:25:00) [3]По моему Никак.