nut |
Отправлено: 26.02.2007, 08:02 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
Ребят помогите как изменить в virtualtreeview надпись у ноды, пытался и по описанию самого компонента и находил статью на русском но она на делфи и переводил ее на с++, не получалось. |
|
olegenty |
Отправлено: 26.02.2007, 08:28 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
см. OnGetText, и всё станет понятно.
|
|
nut |
Отправлено: 07.03.2007, 11:19 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
Всетаки не получилось у меня, я так понял что надо подцепить данные с нодой. Можно примерчик. |
|
Doga |
Отправлено: 09.03.2007, 14:36 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
Вот здесь
http://cbuilder.ru/forums/index.php?s=5e8c...l=vtvdemo&st=30
есть и пример по работе с TVirtualStringTree и ссылка на ресурс с русскоязычным описанием компонента
|
|
** desivers |
Отправлено: 10.03.2007, 14:19 |
|
Не зарегистрирован
|
Скачал пример, очень все запутано мне не разобрать, может кинете примерчик. |
|
desivers |
Отправлено: 10.03.2007, 17:34 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 32
|
Все ребят заканчиваю диплом но осталось разаобратся с этим компонентом, напишите примерчики простые для заненсение текста и картинок буду очень благодпрен, без него валится диплом. |
|
desivers |
Отправлено: 13.03.2007, 15:20 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 32
|
по ковырял VTW заношу данные таким способом
CODE |
WideString Names[4]={
"Петя",
"Маша",
"Костя",
"Дима"
}; |
CODE |
//---------------------------------------------------------------------------
void __fastcall TForm1::VirtualStringTree1GetText(TBaseVirtualTree *Sender,
PVirtualNode Node, TColumnIndex Column, TVSTTextType TextType,
WideString &CellText)
{
CellText = Names[Node->Index];
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
VirtualStringTree1->NodeDataSize = sizeof(TPhoneNode);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
for( int i = 0; i <= 3; i++)
{
VirtualStringTree1->AddChild(NULL);
}
}
//---------------------------------------------------------------------------
|
но это очень не удобно есть способ по лучше? |
|
olegenty |
Отправлено: 13.03.2007, 16:22 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
"не очень удобно" и "получше" — это очень относительная оценка. что конкретно не устраивает? а как устроило бы? а в чём проблема сделать так, как устроило бы?
|
|
desivers |
Отправлено: 13.03.2007, 16:45 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 32
|
можно сделать както через структуру, так в примерах но они на дельфях вот и не как перести не могу, а смог только эти строки |
|
olegenty |
Отправлено: 14.03.2007, 08:37 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
можно через что угодно. конкретизируй вопрос.
|
|
desivers |
Отправлено: 14.03.2007, 10:57 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 32
|
Вот смотрим хелп по нему, глава шаг за шагом там есть
Example class declaration
CODE |
unit TreeData;
interface
//===========================================
type
// declare common node class
TBasicNodeData = class
protected
cName: ShortString;
cImageIndex: Integer;
public
constructor Create; overload;
constructor Create(vName: ShortString; vIIndex: Integer = 0); overload;
property Name: ShortString read cName write cName;
property ImageIndex: Integer read cImageIndex write cImageIndex;
end;
// declare new structure for node data
rTreeData = record
BasicND: TBasicNodeData;
end;
implementation
constructor TBasicNodeData.Create;
begin
{ not necessary
cName := '';
cImageIndex := 0;
}
end;
constructor TBasicNodeData.Create(vName: ShortString; vIIndex: Integer = 0);
begin
cName := vName;
cImageIndex := vIIndex;
end;
end.
|
Здесь вроде принцип понятен кроме
CODE |
property Name: ShortString read cName write cName;
property ImageIndex: Integer read cImageIndex write cImageIndex;
constructor TBasicNodeData.Create;
begin
{ not necessary
cName := '';
cImageIndex := 0;
}
end;
|
Example creation of the tree
CODE |
// Tree will be created when the form is created.
procedure TMyForm.FormCreate(Sender: TObject);
var
Node: PVirtualNode;
NodeD: ^rTreeData;
begin
// create tree
MyTree.NodeDataSize := SizeOf(rTreeData);
if MainControlForm.filename = '' then
begin
// create tree with top level node
Node := MyTree.AddChild(nil); // adds a node to the root of the tree
// assign data for this node
NodeD := MyTree.GetNodeData(Node);
NodeD.BasicND := TBasicNodeData.Create('new project');
end
else
begin
// load tree
end;
...
end;
// returns the text (the identification) of the node
procedure TMyForm.MyTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: Integer;
TextType: TVSTTextType; var Text: WideString);
var
NodeD: ^rTreeData;
begin
NodeD := Sender.GetNodeData(Node);
// return the identifier of the node
if NodeD.BasicND = nil then
Text := ''
else
Text := NodeD.BasicND.Name;
end;
// returns the index for image display
procedure TMyForm.MyTreeGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: Integer; var Index: Integer);
var
NodeD: ^rTreeData;
begin
NodeD := Sender.GetNodeData(Node);
case Kind of
ikState: // for the case the state index has been requested
Index := -1;
ikNormal, ikSelected: // normal icon case
Index := NodeD.BasicND.ImageIndex;
end;
end;
|
Здесь не понятно вот
CODE |
NodeD: ^rTreeData;
NodeD := MyTree.GetNodeData(Node);
NodeD.BasicND := TBasicNodeData.Create('new project');
|
Вот надо разобраться с этим я так понимаю что при перерисовки текста и картинок каждая нода берет данные из соответствующей структуры.
|
|
desivers |
Отправлено: 20.03.2007, 22:56 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 32
|
помогитте перевести
CODE |
procedure TForm1.VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
Data: PVSTRecord;
begin
Data := Sender.GetNodeData(Node);
if Assigned(Data) then
Finalize(Data^);
end;
|
или напишите как у вас освобождается память |
|
desivers |
Отправлено: 22.03.2007, 23:36 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 32
|
а эту строку ка можно перевести
Include(InitialStates, ivsMultiline);
с этой сам разобрался
Отредактировано desivers — 24.03.2007, 02:44 |
|
desivers |
Отправлено: 23.03.2007, 22:41 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 32
|
как открыть определенную ноду, есть FullExpand но он не годится. в обычном было такое, а как здесь быть? |
|