Jetzt habe ich es herausgefunden, die
Unit CommCtrl fehlte mir in Uses.
Falls jemand auch auf der Suche nach automatisch maximum Breiten Spalten ist, hier der Code mit dem es bei mir funktioniert oder lest die
MSDN Artikel für andere Möglichkeiten.
Danke DeddyH!
CommCtrl.ListView_SetColumnWidth(LVProcess.Handle,1,LVSCW_AUTOSIZE_USEHEADER);
.
Parameter 1 = Das ListView
Handle
Parameter 2 = Die Spalte (Column)
Parameter 3 = Es wird so breit wie der Längste String
auch Danke an Redeemer, Du meintest auf jeden Fall das Richtige, nur hab ichs nicht so ganz verstanden gehabt, jetzt schon.
hier seht ihr den Vorher Nacher effekt
Delphi-Quellcode:
procedure TfrmKnips.FillListView;
var
i1, i2 : Integer; // <- hier verschwindet gleich was :)
begin
frmKnips.LVProcess.Clear;
SLHandles.Clear;
SLNames.Clear;
if EnumWindows(@MyEnumProcess, i2) = False then
MessageBox(0, 'EnumWindows wird nicht Unterstützt! ','Fehler!',0);
LVProcess.Items.BeginUpdate;
i2 := 0;
for i1 := 0 to SLHandles.Count - 1 do
begin
with LVProcess.Items.Add do
begin
// if Canvas.TextWidth(SLNames[i1]) > i2 then i2 := Canvas.Textwidth(SLNames[i1]);
Caption := SLHandles[i1];
SubItems.Add(SLNames[i1]);
end;
end;
LVProcess.Items.EndUpdate;
CommCtrl.ListView_SetColumnWidth(LVProcess.Handle, 1, LVSCW_AUTOSIZE_USEHEADER);
// LVProcess.Columns[1].Width := i2+GetSystemMetrics(SM_CXVSCROLL);
end;