Einzelnen Beitrag anzeigen

a.def
(Gast)

n/a Beiträge
 
#12

AW: ListView Spaltenbreite bei Form onResize neu berechnen?

  Alt 18. Jan 2017, 10:01
Genau daran arbeite ich gerade aber es geht alles schief.

Meine Idee ist aktuell WMEnterSizeMove-Event die aktuellen, prozentualen Breiten aller Spalten in ein extra Array zu schreiben
und dann im FormResize-Event wieder umzurechnen. Klappt aber nicht ganz.

Delphi-Quellcode:
procedure TForm1.WMEnterSizeMove(var msg: TMessage);
var
 i: Byte;
begin
 iAllColWidth := 0;
 for i := 0 to ListView1.Columns.Count - 1 do
  Inc(iAllColWidth, ListView1.Columns[i].Width);

 SetLength(lvDefaultWidthInPercent, Length(aDefaultSettings.lvDefaultWidthInPercent));
 for i := 0 to ListView1.Columns.Count - 1 do
  lvDefaultWidthInPercent[i] := getPercent(iAllColWidth, ListView1.Column[i].Width);

 inherited;
end;

// OnResize (Form)
for i := 0 to ListView1.Columns.Count - 1 do
 ListView1.Columns[i].Width := getPercentageValue(ListView1.Width, lvDefaultWidthInPercent[i]) - 2;
VirtualTreeView ist wirklich eine tolle Sache. Nur beherrscht die auch die verschiedenen Ansichten wie die ListView? Konnte ich auf deren Webseite noch nicht ausfindig machen.

Edit:
im Prinzip funktioniert alles mit obigen Code nun wie gewüscht. Einziges Problem ist, dass ich getPercentageValue als Base ListView1.Width übergebe und somit alle Spalten insgesamt immer maximal so breit sein können wie die ListView. iAllColWidth kann ich zwar übergeben, aber dann werden die Spalten kleiner statt größer

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