[VB6] ListView - Problem

20/08/2010 - 17:24 von Lothar Geyer | Report spam
Ich habe ein ListView-Control als lvwReport. Aufgelistet werden einfache
Strings. Wie üblich kann man in diesem Control auf einen Eintrag sehr
einfach positionieren, indem man die ersten Zeichen des gesuchten
Strings eingibt. Bei jedem Tastendruck wird dabei der Event _ItemClick
getriggert.

Nun hàngt bei mir an dem _ItemClick eine Menge dran - und jetzt ist noch
mehr dazu gekommen. Offenbar können jetzt die Operationen nicht mehr in
der Zeit durchgeführt werden, die zwischen der Eingabe von zwei Zeichen
zur Verfügung steht.

Wie würdet Ihr das Problem lösen?

Ich habe mir natürlich schon was überlegt, aber ich hàtte gerne Eure
(unbeeinflussten) Vorschlàge gelesen.

Vielen Dank im voraus.

Lothar Geyer
 

Lesen sie die antworten

#1 Armin Zingler
20/08/2010 - 19:14 | Warnen spam
Am 20.08.2010 17:24, schrieb Lothar Geyer:
Ich habe ein ListView-Control als lvwReport. Aufgelistet werden einfache
Strings. Wie üblich kann man in diesem Control auf einen Eintrag sehr
einfach positionieren, indem man die ersten Zeichen des gesuchten
Strings eingibt. Bei jedem Tastendruck wird dabei der Event _ItemClick
getriggert.

Nun hàngt bei mir an dem _ItemClick eine Menge dran - und jetzt ist noch
mehr dazu gekommen. Offenbar können jetzt die Operationen nicht mehr in
der Zeit durchgeführt werden, die zwischen der Eingabe von zwei Zeichen
zur Verfügung steht.



Das kann dir immer passieren. Drücke mal zwei Tasten "gleichzeitig".
Das Problem ist also "unlösbar".

Wie würdet Ihr das Problem lösen?

Ich habe mir natürlich schon was überlegt, aber ich hàtte gerne Eure
(unbeeinflussten) Vorschlàge gelesen.



Du meinst wahrscheinlich, dass die Dauer der Verarbeitung verkürzt werden
soll. Wenn du schon optimiert hast, làsst sich das nicht àndern.

Die übliche Vorgehensweise ist, beim _ItemClick einen Timer zu stoppen
und neu zu starten. Der ist z.B. auf 200ms (musst du ausprobieren)
eingestellt. Erst im Timer-Ereignis führst du die Aktion aus, die bisher
im _ItemClick stand (und stoppst außerdem den Timer).
Unterm Strich wird die Aktion jetzt erst nach einer Eingabepause von xy ms
ausgeführt.

Armin

Ähnliche fragen