VirtualTreeview для Borland C ++ Builder 6 - PullRequest
0 голосов
/ 11 января 2019

Я скачал компонент VirtualTreeView для Borland C ++ Builder 6.0 и пытаюсь научиться его использовать. К сожалению, я не могу найти никакого кода для этого компилятора, который служит примером, и я основан на коде 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 ();
}

В Н:

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 голосов
/ 12 января 2019

Спасибо за ваш ответ.

Код, который вы указали мне, я уже пробовал, и я не могу понять его, потому что не могу найти, в какой части необходимо указывать литерал узла. Прикрепленное изображение - результат, полученный с этим примером кода.

Форма CBMininal

Как видите, результат практически такой же, как на изображении, которое я показал вчера. Больше всего мне жаль, что, хотя я искал, я не нашел ни одного примера кода для этого компонента для Borland C ++.

Более того: если я запускаю пример с отладчиком, со мной происходит то же самое, что и с моим кодом.

В моем коде, когда я выполняю строку pRecData-> Literal = cLiteral; Я вижу в отладчике, что он имеет вычисленные значения ( Node 0 , Node 1 и т. Д.) И в примере, когда этот выполняется ( Text = Data-> Caption; ), я вижу, что и Text, и Data-> Caption содержат значение, например , Уровень 0, индекс 5 , но этот литерал не отображается в TVirtualStringTree.

0 голосов
/ 12 января 2019

Вы храните строковые данные для каждого узла, но у вас нет обработчиков событий, назначенных для TreeView, в частности OnGetText, для предоставления этих строк в TreeView при его визуализации. Это виртуальный элемент управления, вы должны предоставить ему данные, когда он попросит вас об этом.

В репозитории GitHub VirtualTreeView

имеется демонстрационная версия C ++ Builder
...