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

解決


表裏 未里  URL  2008-09-18 11:14:07  No: 31965

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


igy  2008-09-18 17:11:21  No: 31966

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


通りすがお  2008-09-18 17:55:05  No: 31967

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

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 18:13:08  No: 31968

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

この方法より、

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


通りすがお  2008-09-18 19:58:27  No: 31969

>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-19 00:04:23  No: 31970

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

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


表裏 未里  URL  2008-09-19 12:01:47  No: 31971

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加