Форум: "Основная";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
ВнизВопрос по TVirtualStringTree. Найти похожие ветки
← →
AndrewK (2003-12-19 12:46) [0]Уважаемые мастаки, кто-нибудь работал с TVirtualStringTree?
Подскажите, пожалуйста, как в него добавлять свои значения. Насколько я понял, авторы рекомендуют использовать для инициализации реакцию на событие VSTInitNode. Только не пойму, как мне этим пользоваться. Например, есть файл с данными, который мне надо загрузить в VirtualStringTree. Открываю файл, получаю данные и все. Что с ними делать дальше не знаю. Пробовал VirtualStringTree.AddChild(nil, vData), где vData - указатель на данные, которые храняться в VirtualStringTree, получается что-то не то. К тому же авторы не рекомендуют использовать этот метод.
Как быть?
← →
Reindeer Moss Eater (2003-12-19 12:51) [1]Что с ними делать дальше не знаю.
Не знаешь что делать со своими данными? Мы то здесь при чем?
Пробовал VirtualStringTree.AddChild(nil, vData), где vData - указатель на данные, которые храняться в VirtualStringTree, получается что-то не то.
Что именно не то?
К тому же авторы не рекомендуют использовать этот метод.
Вот так и пишут открытым текстом, не рекомендуем мол?
← →
AndrewK (2003-12-19 12:58) [2]> Rindeer Moss Eater:
Не знаешь что делать со своими данными? Мы то здесь при чем?
Что делать со своими данными то знаю. Не знаю как их правильно засунуть в VirtualStringTree.
Что именно не то?
Данные в структуру попадают, но обращение к ним не проходит. Для теста в структуре просто хранил сторочку. При трассировке при вводе строка нормальная, а отображается совсем не то, что вводил.
Вот так и пишут открытым текстом, не рекомендуем мол?
Выдержка из хелпа:
Creates and adds a new child node to given node.
Declaration
function AddChild(Parent: PVirtualNode, UserData: Pointer = nil): PVirtualNode;
Description
The new node will be created as last child of Parent and is returned as result.
Notes
Using AddChild is not recommended. The method is merely there for easier migration from TTreeview. The reason is that the
method has to validate the node and does some other processing, which prevents the tree from utilizings its virtual
paradigm. Important advantages will so disappear. If possible you should restructure your design and try to use the right
way: via OnInitNode and OnInitChildren.
← →
Reindeer Moss Eater (2003-12-19 12:59) [3]Все, что они не рекомендуют делать - так это самому распределять память под vData
← →
Reindeer Moss Eater (2003-12-19 13:01) [4]Данные в структуру попадают, но обращение к ним не проходит. Для теста в структуре просто хранил сторочку. При трассировке при вводе строка нормальная, а отображается совсем не то, что вводил.
Чье обращение не происходит?
Где код обработчика события OnGetText?
← →
AndrewK (2003-12-19 13:45) [5]Вот код.
...
PNodeData2 = ^TNodeData2;
TNodeData2 = record
Text1 : WideString;
end;
...
procedure TForm1.LoadTree;
var I : Integer;
vData : PNodeData2;
begin
New(vData);
for I := 0 to 9 do begin
with vData^ do begin
Text1 := Format("Text %d", [I+1]);
end;
VirtualStringTree.AddChild(nil, vData);
end;
end;
...
procedure TfrmConfigurator.VirtualStringTree.GetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
var
Data: PNodeData2;
begin
Data := Sender.GetNodeData(Node);
CellText := "";
case Column of
0: begin
CellText := Data.Text1;
end;
1: begin
CellText := Data.Text1 + " <+>";
end;
end;
end;
← →
Reindeer Moss Eater (2003-12-19 14:17) [6]
procedure TForm1.LoadTree;
var I : Integer;
vData : PNodeData2;
begin
for I := 0 to 9 do
begin
vData := VirtualStringTree1.GetNodeData(VirtualStringTree1.AddChild(nil));
vData.Text1:=Format("Text %d", [I+1]);
end;
end;
← →
AndrewK (2003-12-19 16:29) [7]:)
Все гениальное просто.
Огромное спасибо.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c