Einzelnen Beitrag anzeigen

a.def
(Gast)

n/a Beiträge
 
#1

ListView Spaltenbreite bei Form onResize neu berechnen?

  Alt 18. Jan 2017, 00:31
Ich stehe wieder vor einem kleinen Problem.

Ich habe eine ListView mit ein paar Spalten. Sagen wir der einfachheithalber mal 5.
Aktuell ist es so, dass ich in einem Array in Prozent stehen habe, wie breit jede Spalte beim Form OnResize sein soll.
 aColumnDefWidth: array[0 .. 4] of Byte = (16, 16, 20, 20, 25); // = 97% (Edit: [0 .. 4] hinzugefügt, vergessen gehabt)


Mein Helfer:
Delphi-Quellcode:
function getPercentageValue(const aBase: Extended; const aPercentage: Extended): Int64;
begin
 if (aPercentage > 0) and (aBase > 0) then
  Result := Trunc(aBase / 100 * aPercentage)
 else
  Result := 0;
end;
Und im FormResize dann in etwa
Delphi-Quellcode:
for i := 0 to ListView1.Columns.Count - 1 do
 ListView1.Columns[i].Width := getPercentageValue(ListView1.Width, aColumnDefWidth[i]) - 2;
Das funktioniert wunderbar. Beim verändern der Größe meines Formulars werden alle Spalten genau so groß (in Prozent) gemacht, wie ich es in aColumnDefWidth definiert habe.

Nun zum Problem bzw. zur Frage:
angenommen ich verändere die Spaltenbreite manuell im ListView zur Laufzeit - wie schaffe ich es, dass die prozentuale von mir zur Laufzeit veränderte Breite beibehalten wird?

Geändert von a.def (18. Jan 2017 um 10:17 Uhr)
  Mit Zitat antworten Zitat