Как изменить значок узла TVirtualStringTree, когда этот узел развернут - PullRequest
0 голосов
/ 25 августа 2018

Звучит как глупый вопрос, но я попробовал все, что мог придумать, но безуспешно. Как я могу изменить изображение значка узла VirtualStringTree при расширении этого узла. то есть, когда узел свернут, я хочу показать значок закрытой папки, а когда он развернут, я хочу показать значок открытой папки.

В GetImageIndex я не вижу, как определить, расширен узел или нет. Вид только говорит мне, когда он выбран.

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Параметр Node: PVirtualNode; события OnGetImageIndex() может сообщить вам через это свойство States, развернуто оно или нет.

procedure TForm1.VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex);
begin
  if vsExpanded in Node.States then
    // select image as needed
  ...
end;

Фон:

Из источника(единица VirtualTrees)

TVirtualNodeState = (
  ...
  vsExpanded,          // Set if the node is expanded.
  ...
);
0 голосов
/ 25 августа 2018

TBaseVirtualTree имеет свойство Expanded для проверки, развернут ли данный узел или нет:

procedure TForm1.VTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
          Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
begin
  if Sender.Expanded[Node] then begin
     ...
  end;
end;
...