procedure TfrmMain.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// Shift + 마우스를 누른 경우 해당 영역을 선택한다.
// 이전 bookmark와 현재 bookmark를 비교해서 선택영역을 찾을 수 있다.
if ssShift in Shift then
begin
with Query1 do
begin
DisableControls;
while True do
begin
Bookmark2:= Query1.GetBookmark;
// 이전 bookmark 위치가 아니면 현재 행을 선택하고,
// 그렇지 않으면 현재행을 선택한 후 빠져나간다.
if Query1.CompareBookmarks(Bookmark1, Bookmark2) <> 0 then
dbgrid1.SelectedRows.CurrentRowSelected:= True
else
begin
dbgrid1.SelectedRows.CurrentRowSelected:= True;
Break;
end;
if BOF or EOF then Break;
if Query1.CompareBookmarks(Bookmark1, Bookmark2) = -1 then
Prior
else Next;
end;
EnableControls;
end;
end
else
Bookmark1:= Query1.GetBookmark;
Bookmark1, Bookmark2: TBookmark;
procedure TfrmMain.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// Shift + 마우스를 누른 경우 해당 영역을 선택한다.
// 이전 bookmark와 현재 bookmark를 비교해서 선택영역을 찾을 수 있다.
if ssShift in Shift then
begin
with Query1 do
begin
DisableControls;
while True do
begin
Bookmark2:= Query1.GetBookmark;
// 이전 bookmark 위치가 아니면 현재 행을 선택하고,
// 그렇지 않으면 현재행을 선택한 후 빠져나간다.
if Query1.CompareBookmarks(Bookmark1, Bookmark2) <> 0 then
dbgrid1.SelectedRows.CurrentRowSelected:= True
else
begin
dbgrid1.SelectedRows.CurrentRowSelected:= True;
Break;
end;
if BOF or EOF then Break;
if Query1.CompareBookmarks(Bookmark1, Bookmark2) = -1 then
Prior
else Next;
end;
EnableControls;
end;
end
else
Bookmark1:= Query1.GetBookmark;
end;