1

我有一个填充的 tcxtreelist,其中所有根节点(任何设置为级别 0 的节点)都是更多所需信息的父节点。我遇到的问题是文本被用于子节点的列剪切。

我希望能够让根节点(LSite.Name)中的文本跨越所有列的长度,基本上我想删除剪辑。但是我希望子节点默认工作。

这是怎么做到的?

编辑:添加代码

LSite : TSiteList;
i : Integer;
LNode : TcxTreeListNode;
// variables used are above
for i := 0 to FSiteList.Count - 1 do
begin
LSite := TSiteList(FSiteList.Items[i]);then
LNode := TreeTypes.Add;
LNode.Values[0] := LSite.Name;
LNode.Data := LSite; // this is is location name built up from a database which populates FSiteList(Object list)
end

这就是根节点的填充方式。数以千计的记录以及其他地方使用的一些信息,但关于列表,我关心的是适合所有列的名称。

子节点:

LOffer : TOfferList;
i : Integer;
LNode, LSiteNode : TcxTreeListNode;

begin
LSiteNode := TreeTypes.FocusedNode;
for i := 0 to FOfferList.Count - 1 do
begin
  LOffer := TOfferList(FOfferList.Items[i]);
  LNode := LSiteNode.AddChild;
  LNode.Values[1] := Trim(FOfferList.Items[i].InstName  + ' ' + FOfferList.Items[i].SoftName);
  LNode.Values[2]  := Trim(FOfferList.Items[i].SerialNumber + ' ' + FOfferList.Items[i].ActivateNum);
  LNode.Values[3]  := Trim(FOfferList.Items[i].OfferNum);
  LNode.Data := LOffer;
end;
end;

仅当单击站点时才会填充子节点。然后,这将显示该站点存在的所有报价。再次offerlist是一个objectlist

我玩过自定义绘图事件,但我不知道要查看哪些选项。

在自定义绘图处进行测试 - OnCustomDrawDataCell:

AViewInfo.EditViewInfo.TextColor := clBlack;
AViewInfo.BoundsRect.Width := 200;
//AViewInfo.ContentRect.Width := 200;
AViewInfo.EditViewInfo.Paint(ACanvas);
ADone := True;

所有这一切似乎都是将所有节点聚集到网格的最左侧,并将所有列组合在一起,同时仍然不增加根节点文本列的宽度。

TLDR:我希望能够让来自 column[0] 的文本不被剪辑,而是继续进入其他列或覆盖其他列。对于已由数据库和对象列表填充的 tcxtreelist。

编辑 2:添加了带有视觉示例的图像,说明了它现在的外观 现在的网格示例

如您所见,“公司”正在被剪裁,如果需要,我希望该根节点继续在所有列中显示其文本。这样我可以更好地整理其他列的宽度以尝试获得所需的视图。

4

0 回答 0