Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Кривое отображение корневых узлов в TVirtualStringTree  [new]
Sh2kerr
Member

Откуда:
Сообщений: 17
Доброго времени суток. Подскажите что я делаю не так, какое свойство не правильно настроил. Почему "-" для сворачивания дочерних узлов отображается в последнем столбце? В других формах тоже используется VT, но тот код писал не я. Не могу разобраться в чём у меня отличается.

procedure TfmAttachFiles.ReloadData(ChoosingNode: PVirtualNode = nil);
var
  i, n: Integer;
  AddingObject, filesBefore, filesAfter: tsFileInfo;
  AddingNode, filesBeforeRegister, filesAfterRegister, vtNode: PVirtualNode;
  FileInfoArray: tsArray;
begin

  vtFiles.Clear;
  
  FileInfoArray := WS.OmanService.TSMission_GetFileInfoArray(MissionID,
    WS.ArrayRequest); //Получаем данные с сервера
  n := 0;
  
  try
    vtFiles.BeginUpdate;

    filesBefore := tsFileInfo.Create;
    filesBefore.name_ := 'Файлы загруженные до регистрации';
    filesBefore.ftype := 'before';
    filesBeforeRegister := vtAddChild(vtFiles, nil, filesBefore);

    filesAfter := tsFileInfo.Create;
    filesAfter.name_ := 'Файл загруженные после регистрации';
    filesAfter.ftype := 'after';
    filesAfterRegister := vtAddChild(vtFiles, nil, filesAfter);

    for i := 0 to Length(FileInfoArray.items) - 1 do
    begin
      AddingObject := tsFileInfo(FileInfoArray.items[i]);

      if ((AddingObject.ftype = 'attach') then
      begin
        if Mission.endDate.AsDateTime >= AddingObject.dtr.AsDateTime then
          AddingNode := vtAddChild(vtFiles, filesBeforeRegister, AddingObject)
        else if Mission.endDate.AsDateTime < AddingObject.dtr.AsDateTime then
          AddingNode := vtAddChild(vtFiles, filesAfterRegister, AddingObject);

        inc(n);
      end;
    end;

    vtFiles.EndUpdate;
end;

//Обработчик события OnGetText

procedure TfmAttachFiles.vtFilesGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: string);
var
  FI: tsFileInfo;
begin
  FI := tsFileInfo(vtGetNodeDataObj(vtFiles, Node));
  if not(Assigned(FI)) then
  begin
    CellText := '-';
    Exit;
  end;
  if vtFiles.GetNodeLevel(Node) = 0 then
  begin
    if Column = 0 then
    begin
      CellText := FI.name_;
    end
    else
      CellText := '';
  end
  else
  begin
    case Column of
      0:
        CellText := FI.name_;
      1:
        CellText := FormatFileSize(FI.size);
      2:
        CellText := FormatDateTime('dd.mm.yyyy hh:nn', FI.dtr.AsDateTime);
      3:
        CellText := Trim(FI.loaderName);
      4:
        begin
          if FileIsChanged(FI) then
          begin
            CellText := 'Сохранить изменения';
            lblFileIsChanged.Visible := True;
            lblSave.Visible := True;
          end
          else
          begin
            CellText := '';
            lblFileIsChanged.Visible := False;
            lblSave.Visible := False;
          end;
        end;
    end;
  end;

end;


К сообщению приложен файл. Размер - 8Kb
13 авг 19, 11:37    [21947858]     Ответить | Цитировать Сообщить модератору
 Re: Кривое отображение корневых узлов в TVirtualStringTree  [new]
ёёёёё
Member

Откуда:
Сообщений: 1306
Sh2kerr,

посмотри (в дизайнтайме) у столбцов значение Position's.
А у самого дерева - значение MainColumn.
13 авг 19, 11:48    [21947874]     Ответить | Цитировать Сообщить модератору
 Re: Кривое отображение корневых узлов в TVirtualStringTree  [new]
swame2
Member

Откуда: Москва
Сообщений: 17
Sh2kerr,

Проверь порядок объявления столбцов. Удобно посмотреть в форме "View as Text".
13 авг 19, 11:50    [21947878]     Ответить | Цитировать Сообщить модератору
 Re: Кривое отображение корневых узлов в TVirtualStringTree  [new]
Sh2kerr
Member

Откуда:
Сообщений: 17
ёёёёё, помогло MainColumn. Заголовки столбцов заполняются во время выполнения, не обратил на это внимание. Теперь не видно линий связывающих узлы, но думаю с этим разберусь. Спасибо.
13 авг 19, 12:04    [21947902]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить