Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   C# listView zu langsam? (https://www.delphipraxis.net/53452-listview-zu-langsam.html)

faux 17. Sep 2005 22:14

Re: listView zu langsam?
 
Bin ich blind? :wall:

Hir mal die Eigenschaften: http://img107.imageshack.us/img107/5...led25bo.th.gif

NACHTRAG:
Zitat:

Delphi-Quellcode:
listView1.BeginUpdate();

listView1.EndUpdate();

Ups, ich dachte das sind Events... :oops:
Danke.

alzaimar 19. Sep 2005 08:37

Re: listView zu langsam?
 
Gut, nachdem das geklärt ist... gibt es auch den virtual mode (Property "OwnerData"=True)? Vermutlich ja. Demm damit bekommst Du eine Listview mit 4.294.967.295 Einträgen innerhalb von 1ms angezeigt.

Delphi-Quellcode:
Procedure TForm1.FillData (aCount : Integer);
Begin
  ListView1.OwnerData := True;
  ListView1.Items.Count := aCount;
  ListView1.OnData := ListView1Data;
End;

procedure TfmEditCustomer.ListView1Data(Sender: TObject; Item: TListItem);
begin
  Item.Caption := MyUserData[Item.Index].MainTitle;
  Item.ImageIndex := MyUserData[Item.Index].DataType;
...
End;

faux 19. Sep 2005 14:32

Re: listView zu langsam?
 
OwnerData hab ich leider nicht....

alzaimar 19. Sep 2005 15:04

Re: listView zu langsam?
 
Also, ich find bei msdn was über 'Virtual mode'. Wenn es die 'VirtualListSize' Property gibt, dann den Rest wohl auch.
So wie ich das sehe (obwohl ich noch nie .NET programmiert habe), setzt Du damit eine Cache-Größe. Dann gibt es ein Event 'CacheVirtualItems' oder so, das wohl immer dann aufgerufen wird, wenn mal wieder einige Items neu geladen werden müssen.

faux 19. Sep 2005 15:22

Re: listView zu langsam?
 
Hallo!

Ja, ich habe die Properties VirtualMode und VirtualListSize. Was meinst du mit "den Rest dann wohl auch"?
Kannst du mir den Link zum MSDN-Beitrag schicken? Ich finde unter VirtualMode nix... :?

generic 19. Sep 2005 15:58

Re: listView zu langsam?
 
virtualstringtree

der mike lischke arbeitet an einer .net verson.
ggf. ist schon eine version in der sourceverwaltung.

ich meine etwas gelesen zuhaben.

Robert_G 19. Sep 2005 16:53

Re: listView zu langsam?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Da du (anhand des Screenies erkennbar) .Net 2.0 nimmst:
Schaue dir mal den DataGridView an. Das ist ein Hybride aus ListView und dem DataGrid.

Nur um das mal nachvollziehen zu können, habe ich mal eine ClassLib mit einer Klasse mit 2 Properties sowie einer BindingList, die eine Überladung für Add bekam angelegt:
Code:
public class SomeClass
{
    string someString;
    int someInt;

    public string SomeString
    {
        get { return someString; }
        set { someString = value; }
    }
    public int SomeInt
    {
        get { return someInt; }
        set { someInt = value; }
    }

    public SomeClass(int someInt, string someString)
    {
        this.someInt = someInt;
        this.someString = someString;
    }
}
Code:
public class SomeClassCollection : BindingList<SomeClass>
{
    public void Add(int someInt, string someString)
    {
        Add(new SomeClass(someInt, someString));
    }
}
Im WinApp Project wählst du über Data\Add Datasource deine Klasse (nicht die Collection) aus der ClassLib aus.
In der DataSource Ansicht kannst du nun den Mapping type der Klasse auf DataGridView stellen und sie danach einfach auf dein Form ziehen. *plopp* Ist der vorkonfigurierte DGV und eine BindingSource auf deinem Form.

Im Click handler des Buttons habe ich das reingepackt:
Code:
SomeClassCollection collection = new SomeClassCollection();
for ( int i = 0; i < 100000; i++ )
{
    collection.Add(i, i.ToString());
}
bindingSource1.DataSource = collection;
Draufdrücken -> *foomp* -> sofort sieht man die Daten...

Du kannst auch da virtual arbeiten wenn es dir nicht schnell genug ist. Ich habe noch keine Performance engpässe bei realistischen Datenmengen bemerkt. (Realistisch und praktikabler ist _wesentlich_ kleiner als 100.000! ;) )

Auf die Art hast du netten Designtime support ohne auf ein lahmes DataSet ausweichen zu müssen, oder dir eine full fledged designtime Listen Klasse selbst schreiben zu müssen...

edit: noch 2 screenies angehängt

faux 19. Sep 2005 17:48

Re: listView zu langsam?
 
Danke Robert!
Ich habe beim suchen der Komponente schon die DataGrid im Visier, hab aber keine passende Ansicht zusammen bekommen...
Dass es das DataGridView gibt, hab ich anscheinend übersehen... :wink:
Werds mal testenm ob das schneller ist.

Grüße
Faux

faux 19. Sep 2005 17:58

Re: listView zu langsam?
 
@Robert:

Wie nennt sich das, was du da machst? Bis zum Doppelpunkt versteh ists ja :wink:, aber dann is mir unklar... :oops:

Code:
public class SomeClassCollection : BindingList<SomeClass>


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:07 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz