Текущий архив: 2003.03.03;
Скачать: CL | DM;
ВнизВ DBGrid выделить несколько строк сразу Найти похожие ветки
← →
Comwad (2003-02-13 06:58) [0]Добрых суток!
Подскажите, кто знает как в компоненте DBGrid можно выделить несколько строк сразу, а не через последовательный выбор с клавишей CTRL.
То есть, например, как в проводнике , выделив первую позицию и удерживая SHIFT выделяя последнюю получаем выбор из нескольких строк.
Спасибо.
← →
Stas (2003-02-13 09:25) [1]По моему Никак.
← →
Reindeer Moss Eater (2003-02-13 09:38) [2]Рецепт:
В каждом MouseDown, если не нажат Shift запоминать BookMark1.
В каждом MouseUp, если не нажат Shift освобождать BookMark1.
Если в MouseUp нажат шифт и есть BookMark1, запоминать BookMark2.
Определить какая из двух закладок ближе к началу датасета (CompareBookMark если BookMarkStable = True)
Стоя на одной из закладок, и зная в каком направлении находится вторая, передвигаться по датасету к ней, внося в SelectedRows какждую строку.
Последний абцац в косметических целях рекомендуется делать "задом-наперед", т.е. двигаясь от BookMark1 к BookMark2.
← →
Comwad (2003-02-14 08:04) [3]Спасибо за совет 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-
Страницы: 1 вся ветка
Текущий архив: 2003.03.03;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.007 c