すべてのルート ノード (レベル 0 に設定されている任意のノード) がより必要な情報の親である tcxtreelist を作成しました。私が抱えている問題は、子ノードに使用される列によってテキストが切り取られることです。
ルート ノード (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;
子ノードは、サイトがクリックされたときにのみ読み込まれます。これにより、そのサイトに存在するすべてのオファーが表示されます。繰り返しますが、オファーリストはオブジェクトリストです
カスタム ドロー イベントを試してみましたが、どのオプションを検討すればよいかわかりません。
カスタム描画でテスト - OnCustomDrawDataCell:
AViewInfo.EditViewInfo.TextColor := clBlack;
AViewInfo.BoundsRect.Width := 200;
//AViewInfo.ContentRect.Width := 200;
AViewInfo.EditViewInfo.Paint(ACanvas);
ADone := True;
これが行うように見えるのは、すべてのノードをグリッドの左端に集め、すべての列を互いの上にグループ化することですが、ルート ノードのテキスト列の幅を広げていません。
TLDR: column[0] のテキストをクリップせずに、他の列に続けるか、他の列をオーバーレイできるようにしたいと考えています。データベースとオブジェクトリストによって取り込まれた tcxtreelist の場合。
「会社」がクリップされていることがわかるように、必要に応じて、そのルート ノードのテキストをすべての列に表示し続けたいと思います。このようにして、他の列の幅をより適切に整理して、目的のビューを取得できるようにします。