Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: TVirtualStringTree AutoFitColumns erste Spalte wird nicht angepasst

  Alt 4. Apr 2017, 13:39
Ok, ich verstehe es zwar nicht so ganz aber ich glaube ich habe die Ursache gefunden. Weil die Zeile ja immer noch den Focus hat und ausgewählt ist wird wohl intern der Inhalt für die erste Spalte geändert so das bei der Berechnung der maximalen Breite keine Veränderung erkannt wird. Hebe ich die Auswahl vor dem Ändern auf klappt es und auch die erste Spalte wird korrekt geändert.

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  Node: PVirtualNode;
  Data: PMyDataSet;
  
begin

  ShowMessage(IntToStr(vstTable.GetMaxColumnWidth(0, False))); //62px
  ShowMessage(IntToStr(vstTable.GetMaxColumnWidth(1, False))); //77px

  vstTable.BeginUpdate;
  
  Node := vstTable.FocusedNode;

  vstTable.ClearSelection; //Auswahl aufheben
  
  if Assigned(Node) then
  begin
    Data := vstTable.GetNodeData(Node);
    if Assigned(Data) then
    begin
      Data.Name := Data.Name + 'xyz 12345';
      Data.Desc := Data.Desc + 'xyz 12345';
    end;
  end;

  vstTable.EndUpdate;

  vstTable.FocusedNode := Node; //Zeile wieder auswählen
  vstTable.Selected[Node] := True; //und markieren

  ShowMessage(IntToStr(vstTable.GetMaxColumnWidth(0, False))); //106px
  ShowMessage(IntToStr(vstTable.GetMaxColumnWidth(1, False))); //127px

  vstTable.Header.AutoFitColumns(False, smaAllColumns);
end;
  Mit Zitat antworten Zitat