Pobieranie tekstu Parenta

0

Witam wszystkich.
Mam sobie na formie VirtualStringTree i teraz tak,
jest sobie taka procedurka:

type
  PVirtualRecord = ^TVirtualRecord;
  TVirtualRecord = record
    Caption : WideString;
    Size    : Int64;
end;

var Data     : PVirtualRecord;

begin
  Data := VST.GetNodeData(VST.GetFirstSelected);
  ShowMessage(Data.Caption);
end;

która po kliknięciu w Parenta pokazuje jego tekst a po kliknięciu w Childa jego tekst.
I teraz pytanko. Jak zrobić aby po kliknięciu w Childa, pobrać jednocześnie tekst i Parenta i Childa?

I jeszcze jedno pytanko:
Jak rozpoznać czy zaznaczony jest Parent czy Child?

Wszelkie wskazówki mile widziane :)

0

W ten sposób się odwołuj, bo dostaniesz AV jak nie będziesz mieć zaznaczonego węzła.

var
 Node: PVirtualNode;
 Data: PVirtualRecord;
begin
 {Jeśli nie ma nic na liście}
// Node := VST.RootNode;
// if Node = nil then Exit;

 {Jeśli nic nie podświetlono}
 Node := VST.GetFirstSelected;
 if Node = nil then Exit;

 Data := VST.GetNodeData(Node);
 ShowMessage(Data.Caption);
end;
Młody napisał(a)

Jak rozpoznać czy zaznaczony jest Parent czy Child?

var
 Node: PVirtualNode;
begin
 Node := VST.FocusedNode;
 if Node = nil then Exit;

 case VST.GetNodeLevel(Node) of
    0: ShowMessage('Kliknięto rodzica');
    1: ShowMessage('Kliknięto dziecko');
 end;
end;
0

Dziękuje Opi :)

Pozostaje jeszcze pierwsze pytanie:
Jak zrobić aby po kliknięciu w Dziecko, pobrać tekst Dziecka i jego Rodzica?

0
procedure TForm1.VSTClick(Sender: TObject);
var
 Node: PVirtualNode;
 Data: PVirtualTree;
 sChild, sParent: string;
begin
 Node := VST.FocusedNode;
 if Node = nil then Exit;

 if VST.GetNodeLevel(Node) = 1 then
   begin
    Data := VST.GetNodeData(Node);
    sChild := Data.Caption;
    Node := VST.NodeParent[Node];
    Data := VST.GetNodeData(Node);
    sParent := Data.Caption;

    ShowMessage('Kliknięto dziecko: ' + sChild + ' rodzica: ' + sParent);
   end;
end;
0

Właśnie przed chwilą znalazłem podobne rozwiązanie :)

Jeszcze raz serdeczne dzięki :)

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