【问题标题】:cxGrid selection - avoid selecting one particular columncxGrid 选择 - 避免选择一个特定的列
【发布时间】:2014-02-03 13:02:28
【问题描述】:

当您在 cxGrid 中选择一行时,整行都会被选中(颜色变为蓝色)。 如何告诉网格不要从某个列中选择记录,即让它保持无色?我尝试使用后滚动数据集:

cxGrid1dbTableView1.GetColumnByFieldName('MYFIELD').Focused := True;

但是不起作用.....

【问题讨论】:

  • 你想达到什么目的?从记录中只选择几个单元格?或者从您的选择中直观地排除列?因为我认为当您单击一行时,网格无法选择几个单元格。
  • 视觉上从我的选择中排除列
  • 然后使用 Stefan Glienke 的答案,或者它的变体。
  • @Roald van Doorn - 我正在为该特定列使用样式。我只想从选择中排除它。我不能改变它的风格。

标签: delphi devexpress delphi-xe4 tcxgrid quantumgrid


【解决方案1】:

使用您要更改的列的OnCustomDrawCell 事件并将此代码放入其中:

if AViewInfo.Selected then
begin
  ACanvas.Brush.Color := clWindow;
  ACanvas.Font.Color := clWindowText;
end;

就我而言,我没有使用任何主题,因此颜色匹配。如果你使用不同的东西,你必须相应地改变它们。

【讨论】:

  • 我已经在为该字段使用 cxstyle,所以我不能使用 OnCustomDrawCell。这就是我不想选择该字段的主要原因,因为它在选择时无法正确显示样式文本颜色。
  • 问题出在哪里?然后分配分配的 cxStyle 的 Color 和 Font.Color。
  • 如果您使用样式,OnCustomDrawCell 不会做太多事情。我什至不知道它是否仍然被调用。但是您可以覆盖 OnGetContentStyle 并为您希望排除的列返回不同的样式。
  • @RoaldvanDoorn 我认为你混淆了风格和皮肤。如果您使用的是样式 (TcxStyle),则仍会调用 OnCustomDrawCell。但在使用蒙皮时可能不会。
  • 或者您可以覆盖列的 OnGetContentStyle 并返回具有不同颜色的正确定义样式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 2018-03-17
  • 1970-01-01
相关资源
最近更新 更多