1

Delphi で TDBGrid (または TwwDBGrid) セルを ReadOnly に設定することは可能ですか? 現在、セルを文字通りグレー表示して編集後にクリアすることをいじっていますが、あまり満足のいくものではありません。

乾杯、ジェイミー

4

2 に答える 2

5

特定のセルまたは 1 つの列のすべてのセル?

次の方法で、列を読み取り専用に設定できます。

TDBGrid.Colums[IndexOfColumn].ReadOnly := True;

特定のセルを制御したい場合は、OnCellClickEvent で「保護」スキームをプログラムすることができます。TDBGrid.Colums[IndexOfColumn].ReadOnly := True; をセットアップすることもできると思います。その場合、特定のセルを読み取り専用にする必要があります。何かのようなもの:

procedure TForm.DBGridCellClick(Column: TColumn);
begin
  Column.ReadOnly := ConditionForReadOnly(Column);
end;

編集後:

このソリューションを確認しましたが、機能します。

たとえば、最初よりも大きい列のセルのみを編集する場合、それらの値は 0 でなければなりません (編集できるようにするため)。保護スキームは次のようになります。

procedure TForm.DBGridCellClick(Column: TColumn);
begin
  Column.ReadOnly := (qry['FieldWithValue'] <> 0) or (Column.Index < 1);  //Index is 0-based
end;
于 2010-01-05T11:22:24.710 に答える