Wskaźniki - trochę teori

Wskaźniki - trochę teori
  • Rejestracja: dni
  • Ostatnio: dni
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:

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

W OnCreate formy przyporządkowujemy komponentowi nasz rekord:

Kopiuj
VirtualStringTree1.NodeDataSize := SizeOf(TWirtualnyRekord);

Treść procedury OnGetText komponentu VirtualStringTree:

Kopiuj
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

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
2
Kopiuj
  Data := Sender.GetNodeData(Node);

Zobacz co tam jest.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.