Einzelnen Beitrag anzeigen

neothemachine

Registriert seit: 23. Dez 2004
18 Beiträge
 
#2

Re: Spaltenbreite von ListView stimmt nicht

  Alt 5. Jun 2007, 14:19
Hab das Problem mittlerweile selber gelöst..

Ich hab immernoch keine Ahnung warum beim Abrufen der Spaltenbreite anscheinend die falsche ID benutzt wird, aber habs mit einem Workaround hinbekommen. Die ID, die benutzt wird ist nämlich nicht der Index, sondern die ID, in der die Spalten erzeugt wurden, also eine Art logische ID, die sich auch nicht ändert.

Beim Erzeugen der Spalten weise ich jeder Spalte mit .Tag eine eindeutige ID zu (in der Funktion unten: id). Dann speichere ich die Reihenfolge der Erzeugung der Spalten in einem Array (ListViewVisibleColumns), wo der Wert von .Tag gespeichert wird (also z.b. [0]:= 2; [1]:= 5).

Wenn ich nun die Breite von der Spalte mit Index 0 herausfinden will mache ich das mit dem Aufruf:


Delphi-Quellcode:
width:= ListViewFindColumnWidth(ListView.Column[0].Tag);

function TForm1.ListViewFindColumnWidth(id: integer):integer;
var x: integer;
begin
    result:= -1;

    for x:=0 to Length(ListViewVisibleColumns) - 1 do begin
        if ListViewVisibleColumns[x]=id then begin
            result:= ListView.Column[x].Width;
            break;
        end;
    end;
end;

Ich glaube zwar nicht, dass das im Sinne des Erfinders war, aber naja...zumindest gehts
  Mit Zitat antworten Zitat