掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Gridのクリックを無効にするには (ID:42809)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
変な仕様のような気がするけれど、こんな感じなんでしょうか? なお、一部しか見えていないセルをクリックするとスクロールするけれど、 スクロールしなくなります。 TForm1 = class(TForm) StringGrid1: TStringGrid; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private FGridWindowProc: TWndMethod; procedure NewGridWindowProc(var Message: TMessage); end; procedure TForm1.FormCreate(Sender: TObject); begin FGridWindowProc := StringGrid1.WindowProc; StringGrid1.WindowProc := NewGridWindowProc; end; procedure TForm1.FormDestroy(Sender: TObject); begin StringGrid1.WindowProc := FGridWindowProc; end; procedure TForm1.NewGridWindowProc(var Message: TMessage); var cp: TPoint; gc: TGridCoord; begin if Message.Msg = WM_LBUTTONDOWN then begin //画面上カーソル位置取得 GetCursorPos(cp); //コントロール座標に変換 cp := StringGrid1.ScreenToClient(cp); //カーソル位置のセルを取得 StringGrid1.MouseToCell(cp.X, cp.Y, gc.X, gc.Y); //セルが取得できた場合マウスダウン処理を行わない if (gc.X < 0) or (gc.Y < 0) or //または選択中のセルと同じセルであれば編集できるように処理を行う ((gc.X = StringGrid1.Col) and (gc.Y = StringGrid1.Row)) then FGridWindowProc(Message) end else FGridWindowProc(Message); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.