![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пару вопросов по VirtualStringTree и VirtualDrawTree
NeyroSpace © (2004-10-08 09:34:00)1.VirtualStringTree
Обработчик VirtualStringTree1GetText(...):
begin
PNodeData := Sender.GetNodeData(Node);
CellText := PNodeData.Text;
end;
При этом в дереве отображается 2е одинаковые надписи друг за другом. Столбцов нет, проверял. Где подвох?
2.VirtualDrawTree
Более гибкого конструктора дерева не встречал! Однако появился вопрос:
Если отключить отрисовку [+] и фокуса выделения узла, то все равно срабатывает двойной клик на раскрытие ветки. Причем срабатывает в том месте, где раньше отрисовывался пустой прямоугольник фокуса.
Как задать свои координаты и размер прямоугольнику фокуса?
Reindeer Moss Eater (2004-10-08 10:47:00) [1]Про DrawTree ничего не скажу. Никогда не имел дело.
NeyroSpace (2004-10-08 10:45:00) [2]Млин... Создал проект заново все нормально. Хотя выдляется уже не вся строка а только надпись, наверное где-то что-то изменил в опциях.
А Что касается отрисовки прямоугольника фокуса в VirtualDrawTree?
Как изменить его размер при собственной отрисовке?
Reindeer Moss Eater (2004-10-08 10:19:00) [3]У меня этот код рисует все как надо.
NeyroSpace (2004-10-08 10:11:00) [4]type
TNodeData = record
Text: String[10];
end;
PNodeData = ^TNodeData;
var
Form1: TForm1;
VirtualNode:PVirtualNode;
NodeData:TNodeData;
implementation
{$R *.DFM}
procedure TForm1.VirtualStringTree1InitNode(Sender: TBaseVirtualTree;
ParentNode, Node: PVirtualNode;
var InitialStates: TVirtualNodeInitStates);
var PND:PNodeData;
begin
end;
procedure TForm1.FormCreate(Sender: TObject);
var PND:PNodeData;
begin
VirtualStringTree1.NodeDataSize := SizeOf(TNodeData);
VirtualNode := VirtualStringTree1.AddChild(nil);
PND := VirtualStringTree1.GetNodeData(VirtualNode);
PND.Text := 'text1';
end;
procedure TForm1.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
var PND:PNodeData;
begin
PND := Sender.GetNodeData(Node);
CellText := PND.Text;
end;
end.
Reindeer Moss Eater (2004-10-08 10:06:00) [5]Как объявлен тип, для которого создан указательный тип PNodeData?
И чему равно NodeDataSize у VirtualStringTree1?
NeyroSpace (2004-10-08 10:01:00) [6]Добавляю 1 узел следующим образом:
VirtualNode := VirtualStringTree1.AddChild(nil);
PNodeData := VirtualStringTree1.GetNodeData(VirtualNode);
PNodeData.Text := 'text1';
на форме появляется:
text1 text1
Выделяется фокусом как один узел.
Reindeer Moss Eater (2004-10-08 09:56:00) [7]С каждой нодой связан блок данных.
У тебя две ноды.
Обе ссылаются на блок(и) в которых текст один и тот же.
NeyroSpace (2004-10-08 09:54:00) [8]>Reindeer Moss Eater © (08.10.04 09:35) [1]
А можно поподробнее? Что за блоки?
procedure TForm1.VirtualStringTree1GetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
begin
PNodeData := Sender.GetNodeData(Node);
CellText := PNodeData.Text;
end;
В обработчик только столбцы передаются...
Reindeer Moss Eater (2004-10-08 09:35:00) [9]При этом в дереве отображается 2е одинаковые надписи друг за другом. Столбцов нет, проверял. Где подвох?
Подвоха нет.
В обеих блоках одинаковые данные.