Pobieranie tekstu Parenta

Pobieranie tekstu Parenta
Młody
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 418
0

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

Kopiuj
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 :)

Opi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1034
0

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

Kopiuj
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?

Kopiuj
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;
Młody
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 418
0

Dziękuje Opi :)

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

Opi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1034
0
Kopiuj
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;
Młody
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 418
0

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

Jeszcze raz serdeczne dzięki :)

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.