Einzelnen Beitrag anzeigen

TUX_der_Pinguin

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

AW: TVirtualStringTree AutoFitColumns erste Spalte wird nicht angepasst

  Alt 4. Apr 2017, 10:30
Hallo Tux,

ich nutze die Funktion zwar nicht da ich immer selbst die Breite der Columns angebe, habe aber im SourceCode gesehen, dass vor dem Ausführen des Sizing das Event OnBeforeAutoFitColumns ausgelöst wird (wenn denn ein EventHandler existiert).

Hier gibt es einen Parameter var SmartAutoFitType: TSmartAutoFitType . Setzt du diesen an irgendeiner Stelle auf einen anderen Wert oder nutzt du das Event überhaupt?

Wenn nicht, dann steht (wie du es beim Aufruf auch übergibst) die Option auf smaUseColumnOption .

Und das ist der Knackpunkt. Hast du auch bei deiner ersten Column die Option in den ColumnOptions eingeschaltet?
OnBeforeAutoFitColumns verwende ich nicht in dem Projekt, das komische ist es das ja eigentlich alles funktioniert und richtig ist nur beim Ändern eines Eintrags will er einfach nicht die erste Spalte anpassen. Füge ich einen weiteren Eintrag hinzu, wird die Spalte korrekt angepasst.

Delphi-Quellcode:
var
  Node: PVirtualNode;
  Data: PDataset;

begin
Node := vstTable.FocusedNode;
if Assigned(Node) then
begin
  Data := vstTable.GetNodeData(Node);
  if Assigned(Data) then
  begin
    Data.Name := edtName.Text; //1. Spalte, hier wird eine längere Bezeichnung eingegeben
    Data.Type := edtType.Text; //2. Spalte, hier wird ebenfalls etwas längeres Eingetragen
  end;
end;

//Spalten anpassen...
vstTable.Header.AutoFitColumns(False, smaUseColumnOption, 0, vstTable.Header.Columns.Count-1);
Jetzt passiert folgendes, Spalte 2 hat die korrekte und angepasste Breite und Spalte 1 bleibt unverändert und somit zu klein. Dazu kommt noch das erst wenn ich auf eine andere Zeile wechsle werden in der 1. Spalte die drei Punkte gezeichnet.
  Mit Zitat antworten Zitat