XbpListbox langsam [Erledigt]

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

XbpListbox langsam [Erledigt]

Beitrag von Jan »

Wenn ich Einträge per :addItem zu einer Listbox hinzufüge, dann geht das total lahm. Grob gemessen ca. 2-3 Einträge/Sekunde. Wie kann man das beschleunigen?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: XbpListbox langsam

Beitrag von peternmb »

Hallo Jan,

ich hatte das Problem mit der 1.90.331 unter Win7.
Nach einem sleep( 0.1 ) zwischen den Einträgen war das Problem weg.

Noch einen schönen Restfeiertag :santa:
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von Jan »

Hallo Peter,

super! Das ist immer noch nicht berauschend, aber ganz wesentlich schneller. Ich hab den Parameter auf 0.01 gesetzt. Damit ist eine Liste mit gut 2.000 Einträgen jetzt innerhalb von ca. 50 Sekunden fertig, vorher waren das gut 10 Minuten.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von Martin Altmann »

Moin Jan,
was passiert denn, wenn Du den Dialog (oder die Listbox) erst anzeigst, wenn die Listbox gefüllt ist? Geht das dann schneller?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: XbpListbox langsam

Beitrag von peternmb »

Jan hat geschrieben:Damit ist eine Liste mit gut 2.000 Einträgen jetzt innerhalb von ca. 50 Sekunden fertig, vorher waren das gut 10 Minuten.
Jan
Das ist aber immer noch recht lange. Hast du dafür evtl. ein Statusanzeige laufen?
Ich hatte ähnliche Probleme bei einer Statusanzeige mit einer (versehentlich) hohen Priorität.
Bei mir dauert das Füllen einer Listbox mit dem Inhalt einer Datenbank bei ca. 3000 Einträgen nur wenige Sekunden.
Soweit ich weiss, war das auch nur ein Problem das die 1.90.331 betraf - du hast doch die aktuelle Version.
Da würde ich das Problem noch woanders suchen.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von Jan »

Peter,

stimmt. Ich habe die Fortschrittsanzeige aus dem XBPack eingebunden. Wenn ich die rausnehme dann dauert das immer noch ca. 16 Sekunden für die 2.000 Einträge. Das irritiert mich etwas, denn im Gegensatz zu meiner selbstgebauten Fortschrittsanzeige auf ActiveX-Basis schien mir die von Alaska immer sehr Verzögerungsfrei zu sein.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von brandelh »

Bei allen solchen "Fortschrittsanzeigen" etc. muss man die Aufrufanzahl deulich senken,
sodass für den gesamten Vorgang maximal jeder 10. teilweise auch 100. Aufrufe angezeigt wird.
Es würde sogar reichen 1% Schritte anzuzeigen wenn man mit Schrift arbeitet.

Wobei 2000 Einträge in einer Listbox, wie soll man die auswählen, insbesondere wo das scrollen teilweise recht seltsam reagiert.
Gruß
Hubert
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: XbpListbox langsam

Beitrag von azzo »

Kann es sein, dass hier ein COMMIT ausgeführt wird.
mfg
Otto
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von Jan »

Hallo Otto,

nein. Zum Glück ist das hier nicht nötig.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von UliTs »

Hallo Jan,

hilft vielleicht statt eines delay auch oder sogar besser ein ProcessMessages?

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von Jan »

Moin Uli,

wie bitte meinen?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von Tom »

Mit jedem AddItem() muss die Listbox neu "kalibriert" werden, etwa, was ihren Scrollbalken anbetrifft, aber auch den nötigen Darstellungsraum. Wozu soll eine Listbox mit 20.000 Einträgen gut sein? Vernünftig suchen kann man darin jedenfalls nicht.
Herzlich,
Tom
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von Martin Altmann »

Tom,
darum schlug ich ja auch vor, die Listbox zu hiden() - aber ob es was gebracht hat? Jan hat ja nicht geantwortet.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von brandelh »

Im Prinzip müsste man die Neuberechnung bzw. Anzeigeaktualisierung abschalten und ganz am Ende einmalig durchführen.
Ob das eine Listbox kann weiß ich aber nicht. SOOO lange Listen habe ich noch nie geladen ;-)
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von Jan »

Moin,

Martin: Leider hatte ich Deinen Beitrag beim ersten Lesen mißverstanden. Ich hab das erst wirklich begriffen, als Du das jetzt wiederholt hast. Und er war genau richtig. 2.000 Einträge in nicht mal 1 Sekunde! So muß das sein. Jetzt darf ich erstmal die Maximumwerte der Progressbar in den Listen wieder umschreiben :-(

Tom: Ansich hast Du Recht. Eine Listbox in dieser Größe zu haben ist nicht unbedingt die eleganteste Lösung. Normalerweise. Hier geht es aber um etwas anderes. Ursprünglich waren das Listen, die einfach nur gedruckt wurden, inkl. einer Druckvorschau. Es kam dann aber von Anwendern die Frage, wie man denn die einzelnen Positionen bearbeiten könne (im Sinne von die Daten bearbeiten, die hinter jeder Druckzeile stehen). Also habe ich das jetzt so umgeschrieben, das jede Druckzeile ein Listbox-Element ist. Und auf Klick auf einige Pushbuttons neben der Liste kann man entweder wie gehabt die gedruckte Version erhalten, oder zu dem Datensatz hinter dem Listeneintrag springen, diesen bearbeiten, oder einzeln ausführlich ausdrucken. Und DAFÜR ist die Listbox durchaus das Richtige. Wobei die allermeisten Listen auch nur einige Dutzend Einträge haben. Die ganz lange ist eher die Ausnahme.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpListbox langsam [Erledigt]

Beitrag von brandelh »

Hallo Jan,

für mich hört sich das eher nach einem Job für den Browser an ;-)
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpListbox langsam [Erledigt]

Beitrag von Jan »

Hallo Hubert,

in diesem Fall finde ich die Listbox interessanter. Hier mal ein Beispiel der Listen, die ich damit erzeuge:
Geburtstagsliste.jpg
Geburtstagsliste.jpg (52.23 KiB) 6658 mal betrachtet
Es gibt auch noch Listen, die nach dem Nachnamen, Beruf, etc. sortiert sind. Ich finde das so sehr übersichtlich, da eine "Überschrift" immer nur dann erscheint, wenn die anders ist als die aus dem vorigen Satz.

Mir fällt aber auf, das irgendwas noch nicht richtig funktioniert: Wenn die Liste angezeigt wird, dann ist kein Satz markiert. Ich muß immer erst einmal den Cursor ab drücken, damit der erste Satz markiert ist. Merkwürdig.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbpListbox langsam

Beitrag von AUGE_OHR »

Tom hat geschrieben:Vernünftig suchen kann man darin jedenfalls nicht.
man kann doch inkrementell "suchen"
gruss by OHR
Jimmy
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: XbpListbox langsam [Erledigt]

Beitrag von azzo »

>Wenn die Liste angezeigt wird, dann ist kein Satz markiert
SetFocus()
mfg
Otto
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpListbox langsam [Erledigt]

Beitrag von Jan »

Otto,

neenee. Den Fokus hat die Liste. Sonst würde ja auch der CursorAb nicht wirken.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: XbpListbox langsam

Beitrag von UliTs »

Jan hat geschrieben:Moin Uli,
wie bitte meinen?
Jan
:?:
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: XbpListbox langsam [Erledigt]

Beitrag von peternmb »

Jan hat geschrieben:Mir fällt aber auf, das irgendwas noch nicht richtig funktioniert: Wenn die Liste angezeigt wird, dann ist kein Satz markiert. Ich muß immer erst einmal den Cursor ab drücken, damit der erste Satz markiert ist. Merkwürdig.
Jan
wie wäre es mit

Code: Alles auswählen

oLbox:SetData(1) 
Antworten