AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

listView zu langsam?

Ein Thema von faux · begonnen am 16. Sep 2005 · letzter Beitrag vom 19. Sep 2005
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: listView zu langsam?

  Alt 17. Sep 2005, 23:14
Bin ich blind?

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...
Danke.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: listView zu langsam?

  Alt 19. Sep 2005, 09:37
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;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: listView zu langsam?

  Alt 19. Sep 2005, 15:32
OwnerData hab ich leider nicht....
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: listView zu langsam?

  Alt 19. Sep 2005, 16:04
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: listView zu langsam?

  Alt 19. Sep 2005, 16:22
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...
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#16

Re: listView zu langsam?

  Alt 19. Sep 2005, 16:58
virtualstringtree

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

ich meine etwas gelesen zuhaben.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#17

Re: listView zu langsam?

  Alt 19. Sep 2005, 17:53
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
Miniaturansicht angehängter Grafiken
datasource.select_132.png   datasource.designtime_187.png  
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: listView zu langsam?

  Alt 19. Sep 2005, 18:48
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...
Werds mal testenm ob das schneller ist.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: listView zu langsam?

  Alt 19. Sep 2005, 18:58
@Robert:

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

Code:
public class SomeClassCollection : BindingList<SomeClass>
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 Uhr.
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