适用于Borland C ++ Builder 6的Virtualtreeview

时间:2019-01-11 17:42:41

标签: c++builder

我下载了适用于Borland C ++ Builder 6.0的VirtualTreeView组件,我正在尝试学习如何使用它。不幸的是,我找不到用于此编译器的任何代码作为示例,并且我基于所提供的Delphi代码。

我用一个仅包含一个TVirtualStringTree的表单创建了一个项目。我正在使用此代码来尝试了解其工作原理。

在CPP中:

void __fastcall TForm1 :: FormCreate (TObject * Sender)
{
    AnsiString cLiteral;
    PTrecBase pRecData;
    PVirtualNode Node;

    VST-> BeginUpdate ();
    VST-> Clear ();
    VST-> NodeDataSize = sizeof (TRecBase);

    for (int nItem = 0; nItem <10; nItem ++)
    {
        cLiteral = "Node" + IntToStr (nItem);
        Node = VST-> AddChild (NULL);
        pRecData = (PTrecBase) VST-> GetNodeData (Node);
        pRecData-> Literal = cLiteral;

        for (int nSub = 0; nSub <5; nSub ++)
        {
            Node = getNodeDondeInsert (cLiteral);
            Node = VST-> AddChild (Node);
            pRecData = (PTrecBase) VST-> GetNodeData (Node);
            pRecData-> Literal = cLiteral + "Sub" + IntToStr (nSub);
        }
    }
    VST-> EndUpdate ();
}

在H:

class TForm1: public TForm
{
__published: // IDE-managed Components
     TVirtualStringTree * VST;
     void __fastcall FormCreate (TObject * Sender);
private: // User declarations
public: // User declarations
     __fastcall TForm1 (TComponent * Owner);
};

struct TRecBase
{
     AnsiString Literal;
};

typedef TRecBase * PTrecBase;

但是我无法获得想要显示的文字。仅显示以下内容: enter image description here

我不知道我在做什么错,这样您就看不到我正在定义的字面量。有人有可以指导我的C ++ Builder代码吗?谢谢。

2 个答案:

答案 0 :(得分:1)

您正在存储每个节点的字符串数据,但是没有为TreeView分配事件处理程序,尤其是OnGetText,以便在呈现TreeView时将这些字符串提供给TreeView。这是一个虚拟控件,当它要求您提供数据时,您必须为其提供数据。

VirtualTreeView的GitHub存储库上有一个C++Builder demo

答案 1 :(得分:-1)

感谢您的答复。

您向我指示的代码我已经尝试过了,但我无法理解,因为我找不到需要在节点的哪一部分中指示节点文字的信息。所附的图片是我通过该示例代码得到的结果。

Form CBMininal

正如您所看到的,结果实际上与我昨天上升的图像相同。最令我遗憾的是,即使我进行了搜索,也没有找到适用于Borland C ++的该组件的任何示例代码。

更重要的是:如果我使用调试器运行该示例,则与代码相同的事情也会发生。

在我的代码中,当我执行 pRecData-> Literal = cLiteral; 时,我在调试器中看到它具有计算出的值(节点0 节点1 等),在示例中,当执行该节点时( Text = Data-> Caption; ),我可以看到Text和Data-> Caption都包含值,例如 Level 0,Index 5 ,但此文字不会显示在TVirtualStringTree中。