【问题标题】:ReadOnly TDBGrid/TwwDBGrid Cell in Delphi?Delphi 中的只读 TDBGrid/TwwDBGrid 单元格?
【发布时间】:2010-01-05 10:54:33
【问题描述】:

是否可以在 Delphi 中将 TDBGrid(或 TwwDBGrid)单元格设置为只读?目前我正在摆弄将单元格变灰并在编辑后将其清除,但这并不是很令人满意。

干杯,杰米

【问题讨论】:

    标签: delphi tdbgrid


    【解决方案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;
    

    【讨论】:

    • 谢谢,结合 OnDrawCell 渲染灰色,非常完美。
    【解决方案2】:

    正如 Wodzu 所说,TColumn 有一个 ReadOnly 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2011-12-05
      相关资源
      最近更新 更多