Einzelnen Beitrag anzeigen

neothemachine

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

Re: ListView Columns aus- und einblenden (nicht width=0!)

  Alt 3. Jun 2007, 17:41
@marabu: ja das ist ja das Problem. Wenn man das macht, treten merkwürdige Effekte auf. Neue Daten werden dann in die falschen Spalten eingetragen.

Die einzige Möglichkeit das "sauber" zu machen, ist die Items zu clearen, die Spalten zu löschen und dann alles neu einzutragen. So machts auch MS, wie ich rausgefunden hab (Taskmanager). Ist auch nicht weiter schwer, allerdings wollte ich daraus eine neue ListView-Komponente machen, damit man nicht bei jeder ListView den Zusatz-Code (und das ist schon ne Menge) hinzufügen muss.

Neue Komponente TListViewHide....von TListView abgeleitet....noch nie gemacht, hab auch keine Ahnung wie. Deswegen waren meine Versuche in den letzten Stunden auch etwas vergeblich. Ich will dem TListColumn (meine Ableitung: "TListColumnHide") eine neue Property namens "Visible" geben. Dazu muss ja aber mein TListViewHide auch die abgeleiteten Columns benutzen (auch abgeleitet zu: "TListColumnsHide", welche dann die TListColumnHide's benutzen soll), aber ich scheitere immer an den Zugriffsbeschränkungen, z.B.:

In ComCtrls steht ja:
Delphi-Quellcode:
constructor TCustomListView.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
{...}
  FListColumns := TListColumns.Create(Self);
{...}
end;
Das müsste ich ersetzen mit FListColumns := TListColumnsHide.Create(Self);

Was natürlich in der TListViewHide.Create nicht funktioniert, da FListColumns ja private ist.

Ich weiß wirklich nicht, wie ich da rangehen soll..

Kann mich jemand in die richtige Richtung schieben? Oder treten?
  Mit Zitat antworten Zitat