|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
VirtualStringTree в первые с ним работаю
Проблемы с выводом в компонент 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. |