Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В 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]

По моему Никак.


Наверх

Титульная страница Поиск, карта сайта Написать письмо