16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"DBGridのSHIFTで複数レコード選択"
#9627 らせん企画 さん こんにちは らせん企画の佐々木です
DBGridの MultiSelect が True の場合に SHIFT + CLick
で複数レコード選択をする方法です。
private
{ Private 宣言 }
FStartKey: String;
FStartBM: TBookMarkStr;
Procedure RangeSel;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
Var
Rtn: Word;
begin
{ Shift の判定 }
Rtn := GetAsyncKeyState(VK_Shift);
If (Rtn AND $8000) <> 0 Then
RangeSel
Else
Begin
FStartBM := Table1.BookMark;
FStartKey := Table1.FieldByName('Name').AsString; {Key は適当に}
End;
end;
procedure TForm1.RangeSel;
Var
WBM: TBookMarkStr;
WNext: Boolean;
begin
With Table1 Do
Begin
WBM := BookMark;
If Table1.FieldByName('Name').AsString < FStartKey Then
WNext := True
Else
WNext := False;
DisableControls;
Try
While True Do
Begin
DBGrid1.SelectedRows.CurrentRowSelected := True;
If (EOF) Or (BOF) Or(BookMark = FStartBM) Then
Break;
If WNext Then
Next
Else
Prior;
End;
BookMark := WBM;
Finally
EnableControls;
End;
End;
end;
99/3/27(Sat) 07:04am BYQ05322 らせん企画の佐々木
Original document by らせん企画 氏 ID:(BYQ05322)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|