Wskaźniki - trochę teori

0

Witam.

Zmienną wskaźnikową, obiekt (poprzez wskaźnik który pokazuje na rekord) tworzymy poprzez operator New() a zwalniamy po rzez Dispose().

Poniżej zacytuję kawałek tutoriala dotyczącą komponentu Virtual Tree View i prosiłbym o wyjaśnienie w którym miejscu jest tworzony dynamicznie ten rekord ??? nie ma nigdzie operatora New().

.....deklarujemy rekord - odpowiedzialny za przechowywanie danych związanych z wierszami listy:

type
  PWirtualnyRekord = ^TWirtualnyRekord;
  TWirtualnyRekord = record
    Caption : WideString;
    Size    : Int64;
end;

W OnCreate formy przyporządkowujemy komponentowi nasz rekord:

VirtualStringTree1.NodeDataSize := SizeOf(TWirtualnyRekord);

Treść procedury OnGetText komponentu VirtualStringTree:

var
  Data: PWirtualnyRekord; //Zauważ że odwołujemy się do rekordu przez nas napisanego.
begin
  Data := Sender.GetNodeData(Node);
  if Length(Data.Caption) = 0 then
  Data.Caption := 'Wiersz ' + IntToStr(Sender.AbsoluteIndex(Node)+1);
  CellText := Data.Caption;
end;

poprawienie wszystkich znaczników - fp

2
  Data := Sender.GetNodeData(Node);

Zobacz co tam jest.

0

i prosiłbym o wyjaśnienie w którym miejscu jest tworzony dynamicznie ten rekord ???

VirtualTreeView automatycznie alokuje i zwalnia pamięć pola Data każdego node-u, zgodnie z wartością w polu NodeDataSize.

1 użytkowników online, w tym zalogowanych: 0, gości: 1