3

TDBGrid の子孫で現在のセルをプログラムで強調表示しようとしています。DBGrid.SetFocus を実行すると、コンボ ボックスの矢印が下に表示されますが、これは十分に強調表示されていません。

編集:

私はすでに DBGrid.SelectedField := DataSource.FieldByName('Name'); をやっています。

ユーザーの注意を問題の領域に向けるために、次のように設定しました。

DBGrid.Columns[x].Title.Font.Style := [fsbold, fsunderline];  

そして、5秒後にタイマーを設定しました:

DBGrid.Columns[x].Title.Font.Style := [];

奇妙なのは、時間が経過すると、セルが青色になることです (以下に示すように)。これが、私が最初に望んでいたハイライトです。しかし、それを直接取得する方法を知るには、グリッドについて十分に知りません。

私の質問: 以下の青い例のように、グリッド セルを強調表示するにはどうすればよいですか? 私はこれまでにこのようなことをしたことがないので、少し迷っています。これは InPlaceEditor 関数ですか?

私は TDBGrid の子孫を使用しているので、私が見ている動作が TDBGrid に固有のものなのか、それとも単に子孫のものなのかはわかりません (その場合、私の質問はここでは答えられないことがわかっています)。

2 つのコントロール

4

1 に答える 1

4

私はこのDBGrid: OnDrawColumnCellイベントを使って以下(D2007)を使っています。

procedure TForm1.DBGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin 
  //Make the column blue if the title is bold
  if (fsBold in Column.Title.Font.Style) then
    TDBGrid(Sender).Canvas.Brush.Color := $00fff0e1;

  //Set the selected row to white/bold text on blue background
  if (gdSelected in State) then
    begin
      TDBGrid(Sender).Canvas.Brush.Color := clHighlight;
      TDBGrid(Sender).Canvas.Font.Style := Font.Style + [fsBold];
      TDBGrid(Sender).Canvas.Font.Color := clHighlightText;
    end;

  //Update the grid
  TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
于 2012-10-30T15:07:24.347 に答える