Pobieranie tekstu Parenta

Odpowiedz Nowy wątek
2011-07-19 12:47
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 :)

edytowany 1x, ostatnio: Młody, 2011-07-19 13:26

Pozostało 580 znaków

2011-07-19 14:44
Opi
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;
edytowany 1x, ostatnio: Opi, 2011-07-19 14:52

Pozostało 580 znaków

2011-07-19 15:53
0

Dziękuje Opi :)

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

Pozostało 580 znaków

2011-07-19 19:29
Opi
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;
edytowany 1x, ostatnio: Opi, 2011-07-19 19:29

Pozostało 580 znaków

2011-07-19 19:39
0

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

Jeszcze raz serdeczne dzięki :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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