Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TListItems in Variable kopieren


firefuzy - Mi 10.10.07 20:37
Titel: TListItems in Variable kopieren
Hallo!

Ich habe mal eine Frage bezüglich der Listview Komponente. Ich will eigentlich nur alle Items in eine Variable laden und (etwas später) das ganze wieder rückgängig machen. So sieht der Code dazu bisher aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
...
var
  Form1: TForm1;
  Items: TListItems;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
var
DateiListe, Inhalt: TStringList;
a: Integer;
begin
Items := TListitems.Create(Listview1);

Listview1.Clear;
{...}
Listview1.Items := Items;
Items.Free;
end;


Blos leider funzt der Code nicht :(
Wenn man den Button drückt wird die Listview einfach leer.

Sowas wie

Delphi-Quelltext
1:
Caption := Items[0].Caption;                    

funktioniert aber, dann erhalte ich die 1. Zelle der 1. Spalte als Caption der Form...

Ich hoffe Ihr könnt mir helfen :wink:

Greetz firefuzy


Lannes - Mi 10.10.07 21:42

Hallo,

teste das mal:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var  virtualListView : TListView;
     virtualListItems: TListItems;
begin
  virtualListView := TListView.CreateParented(THandle(-3));
  virtualListItems := TListItems.Create(virtualListView);
  try
    virtualListItems.Assign(ListView1.Items);

    ShowMessage(virtualListView.Items[0].Caption);
    virtualListItems.Delete(0);
    //oder virtualListView.Items.Delete(0);

    ListView1.Items.Clear;

    Listview1.Items.Assign(virtualListItems);

    finally
      virtualListItems.Free;
      virtualListView.Free;
      end;


firefuzy - Do 11.10.07 16:38

Hi
Vielen Dank es funktioniert. :D
Aber was bedeutet THandle(-3) in der Zeile

Delphi-Quelltext
1:
virtualListView := TListView.CreateParented(THandle(-3));                    

Wie kommt man auf die -3?
(Ich will immer gerne wissen, wie der Code funktioniert den ich in mein Projekt reinplaziere :wink: )

Bin dir auf jeden Fall sehr dankbar.

Greetz firefuzy


Lannes - Do 11.10.07 18:11

Hallo,

user profile iconfirefuzy hat folgendes geschrieben:
Wie kommt man auf die -3?
ich benötigte mal so etwas für TTreeNodes, also suchen, suchen, suchen >> lesen, lesen ... :wink:
Dort hab ich vor kurzem ein paar Links dazu gepostet:
http://www.delphi-forum.de/viewtopic.php?p=444734#444734


firefuzy - Do 11.10.07 20:16

Also wenn du das aus [url=http://msdn2.microsoft.com/en-us/library/ms632599.aspx#layout_mirroring]dem[/url] Text herausgefunden hast dann Hut ab! :flehan:
Ich konnte jedenfalls den Sinn von THandle(-3) nicht aus dem Text herausextrahieren. (ich muss den Text vielleicht wenn ich mal viiiel Zeit hab nochmal lesen...)


Lannes - Do 11.10.07 21:38

Hallo,

die wesentlichen Informationen habe ich aus dem ersten der verlinkten Links -die Erklärungen von DP-User marabu- entnommen. Der Link in die MSDN Library diente eher zur Vertiefung der erlangten Erkenntnisse, und zwar der Abschnitt Message-Only Windows. Die dort erwähnte Konstante HWND_MESSAGE brachte dann über eine Suche in Google weitere Informationen.