グリッドにセルが沢山有り、スクロールバーが表示されているとします。
そして、見えている一番下のセルはセルの大きさの半分ほどしか見えてないとします。
この状態で、この半分しか見えてないセルの上でマウスボタンを押すと、
勝手にどんどん下方へスクロールしていきます。
この自動的にスクロールする機能を、させないように出来ないでしょうか?
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=055454
ありがとうございました。ばっちりでした。
しかし、何故動作するのかよくわからないでいます^^;
(リンク先のコードは以下です)
type
T_StringGrid = class(TStringGrid);
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if T_StringGrid(Sender).FGridState = gsSelecting then
T_StringGrid(Sender).FGridState := gsNormal;
end;
StringGrid1 のプロパティとしては FGridState は未定義となっています。
そこで、Grids ユニットで調べると、以下のように定義されていました。
TCustomGrid = class(TCustomControl)
・・・
protected
FGridState: TGridState;
ということは、protected で定義されているプロパティは上記の方法で
アクセスすればいいということでしょうか?
長年Delphiを使用していて初めて出くわしたので、驚いています。
ツイート | ![]() |