Проблемы с выводом в компонент VirtualStringTree1(VST1) выводит подстроки во второй строке когда надо выводить в первой.
И как можно сделать цыкл до конца массива типа.
То есть (если массив не буду указывать)
Код:
for I:=1 to Worker: array [1 .. 2] of PWorker;
Вообще есть ли какие нить поправки пожелания. так как курю мануал но мало его понимаю. (Я помню что слышал что в этом компоненте единая интекс система тое сть подстроки продолжают интекс а не создается новый)
Код:
unit VST;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VirtualTrees;
type
TDataName = record
Name: string;
DIndex: integer;
end;
type
TPool = record
NamePool: string;
NameCoin: string;
end;
type
TWorker = record
NameWorker: string;
end;
PPool = ^TPool;
PWorker = ^TWorker;
PDataName = ^TDataName;
type
TForm_VST = class(TForm)
VST1: TVirtualStringTree;
procedure FormCreate(Sender: TObject);
procedure VST1GetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
private
Data: array [1 .. 2] of PDataName;
Worker: array [1 .. 2] of PWorker;
// Node: PVirtualNode;
DataPool: array of PPool;
IndexNodeRoot: integer;
IndexNodeChild: integer;
{ Private declarations }
public
{ Public declarations }
end;
var
Form_VST: TForm_VST;
implementation
{$R *.dfm}
uses mainform;
procedure TForm_VST.FormCreate(Sender: TObject);
Var
I, II: integer;
RootNode, ChildNode: PVirtualNode;
begin
IndexNodeRoot := 0;
IndexNodeChild := 0;
// ------------ Выделяем память для объектов;----------------------------
VST1.NodeDataSize := SizeOf(PDataName);
VST1.NodeDataSize := SizeOf(PWorker);
// -----------------------------------------------------------------------
for I := 1 to 2 do
begin
RootNode := VST1.AddChild(VST1.RootNode);
if not (vsInitialized in RootNode.States) then
VST1.ReinitNode(RootNode, False);
Data[i] := VST1.GetNodeData(RootNode);
end;
for I := 1 to 2 do
begin
if I = 1 then
begin
Data[i].Name := 'Text lvl 1.1';
Data[i].DIndex := 0;
for II := 1 to 5 do
begin
ChildNode := VST1.AddChild(RootNode);
if not(vsInitialized in ChildNode.States) then
VST1.ReinitNode(ChildNode, False);
Worker[II] := VST1.GetNodeData(ChildNode);
Worker[II].NameWorker := 'Text lvl 2.1 ';
IndexNodeChild := IndexNodeChild + 1;
end;
end;
if I = 2 then
begin
Data[i].Name := 'Text lvl 1.2';
Data[i].DIndex := 1;
end;
IndexNodeRoot := IndexNodeRoot + 1;
end;
end;
procedure TForm_VST.VST1GetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: string);
var
I, II: integer;
begin
for I := 1 to (IndexNodeRoot+IndexNodeChild) do
begin
Column := I;
Data[i] := Sender.GetNodeData(Node);
CellText := Data[i].Name;
Worker[i] := Sender.GetNodeData(Node);
CellText := Worker[i].NameWorker;
end;
end;
end.