お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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