1

我有一个 TdxDBGrid,它显示了从数据库查询中检索到的一些信息。其中一列是备注列 (TdxDbGridMemoColumn,),这是必要的,因为它绑定到的字段中的数据以 TEXT 类型而不是 CHAR 或 VARCHAR 类型从数据库中出来。

问题是,备忘录栏喜欢显示整个单词,如果不能显示整个单词,它就不显示它的任何部分。正常的网格列显示了它们可以显示的所有内容,直到右边框并切断那里的显示,但备忘录列没有,这势必会让最终用户感到困惑。有什么办法可以让备忘录栏显示部分单词?

4

2 回答 2

1

您可以所有者绘制列。然后,您可以使文本看起来像您想要的那样。调用DrawText并使用dt_End_Ellipsis标志在长文本的末尾画一个省略号,或者只是让长文本被剪切到绘图区域。

于 2009-09-18T02:28:16.787 回答
1

在 column 的onGetText事件中,您可以修改显示的文本以适应可用的大小:

// the TTextFormats flags are defined in Graphics, add it to your uses clause
procedure TMyForm.gridMyColGetText(Sender: TObject; ANode: TdxTreeListNode;
  var AText: string);
var
  R: TRect;
begin
  // Calculate actual displayable text (with ellipsis) depending on cell size
  R := (Sender as TdxDBGridColumn).TreeList.CellRect(ANode, (Sender as TdxDBGridColumn).ColIndex);  // get the cell rectangle
  Windows.InflateRect(R, -2, 0); // shrink a bit for grid lines
  grid.Canvas.TextRect(R, AText, [tfModifyString, tfEndEllipsis]); // shorten the text ...
end;
于 2009-09-18T07:52:02.290 回答