StringGridが表示されたときクリックするまで最初のセルが紺色反転しているのをプログラムで消したい

解決


表裏 未里  URL  2008-09-18 02:14:07  No: 31965  IP: 192.*.*.*

過去ログにあったのですが、答えがみつけられなかったので、質問させて頂きます。
どうぞ情報を持っている方ご教授下さい。よろしくお願いします。

編集 削除
igy  2008-09-18 08:11:21  No: 31966  IP: 192.*.*.*

“プログラムで消す”ではありませんが、
DefaultDrawing プロパティをFalseにして、
OnDrawCell イベントで、グリッド内のすべてのセルの内容を描画する
のはどうですか?

編集 削除
通りすがお  2008-09-18 08:55:05  No: 31967  IP: 192.*.*.*

こんな感じ?外してたらごめんなさい。

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with TStringGrid(Sender) do
  begin
    if not (gdFixed in State) then
      Canvas.Brush.Color := clWindow;

    if Focused then
      if gdSelected in State then
        Canvas.Brush.Color := clHighlight;

    Canvas.FillRect(Rect);
  end;
end;

編集 削除
igy  2008-09-18 09:13:08  No: 31968  IP: 192.*.*.*

>DefaultDrawing プロパティをFalseにして、
>OnDrawCell イベントで、グリッド内のすべてのセルの内容を描画する

この方法より、

通りすがお さん が提示した方法のほうが簡単でしたね。

編集 削除
通りすがお  2008-09-18 10:58:27  No: 31969  IP: 192.*.*.*

>if Focused then
>      if gdSelected in State then
>        Canvas.Brush.Color := clHighlight;

こうのほうがすっきりしましたね。

  if (gdFocused in State) and (gdSelected in State) then
    Canvas.Brush.Color := clHighlight;

編集 削除
ん?  2008-09-18 15:04:23  No: 31970  IP: 192.*.*.*

質問者は、”アプリの起動時だけは最初のセルの紺色反転をさせたくない”
ということじゃないのかな?
もしそうなら、これだけでOK。

procedure TForm1.FormShow(Sender: TObject);
begin
  StringGrid1.SetFocus;
end;

編集 削除
表裏 未里  URL  2008-09-19 03:01:47  No: 31971  IP: 192.*.*.*

igy様 通りすがお様  ん?様  ありがとうございます。無事解決しました(^-^。

編集 削除