Delphi で TDBGrid (または TwwDBGrid) セルを ReadOnly に設定することは可能ですか? 現在、セルを文字通りグレー表示して編集後にクリアすることをいじっていますが、あまり満足のいくものではありません。
乾杯、ジェイミー
特定のセルまたは 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;