Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.02 c
1-5608
Rom@n
2003-02-18 11:43
2003.03.03
Есть ли компонент


14-5723
michael_b
2003-02-14 17:15
2003.03.03
Оценка сложности процедуры


1-5551
Lex
2003-02-20 15:00
2003.03.03
Ребята, помогите пожалуйста решить задачу на паскале! Очень надо!


14-5709
Ketmar
2003-02-09 18:15
2003.03.03
что вы думаете о Кэтмаре?


1-5624
Ihtiandr
2003-02-20 10:18
2003.03.03
Локальная фильтрация