Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Scrollen, Combobox und OnChange


Timelesk - Mi 24.01.07 23:05
Titel: Scrollen, Combobox und OnChange
Hallo,

Erläuterung
ich lade in eine Combobox eine Liste mit Dateipfaden.
Wähle ich nun einen Eintrag aus, so wird der Inhalt der Datei eingelesen, Zeile für Zeile anhand von Separatoren gesplittet und in 3 Listboxen angezeigt.
Das Ganze läuft über die Ereignisprozedur TCombobox.OnChange().

Problem
Wenn ich nun den Focus auf die Combobox setze, die Liste jedoch nicht aufklappe (z.B. von einem vorherigen Element aus mit der Tabtaste auf die Combobox springe) und dann durchscrolle, dann lädt er mir teilweise den Inhalt einer Datei A teilweise und den Inhalt einer Datei B komplett (wobei Datei B die Datei ist, welche in der Combobox letztendlich ausgewählt ist).

Lösung
Derzeit habe ich es so gelöst, dass ich die Combobox in jedem OnChange-Aufruf disable und am Ende wieder enable!
Da mann dann aber von Datei A nicht schön zu Datei K springen kann, sondern 11x Dateien laden lassen muss, ist das keine schöne Lösung!


Könnt ihr mir helfen, wie ich dieses Problem umgehen/lösen kann?
Vielen Dank!

gruß
Timelesk


Narses - Mi 24.01.07 23:13

Moin!

Hast du dir schonmal das Ereignis OnSelect der ComboBox angesehen? ;)

cu
Narses


Saubäär - Mi 24.01.07 23:14

Ich würde es im OnKeyPress- Ereignis machen.

Gruß

Saubäär


Timelesk - Mi 24.01.07 23:19

Hi

@Narses: OnSelect? Ähhmm... Ok, ich schau mal eben!

@Saubäär: Dann würden ja nur noch Tastatureingaben zählen. Es soll ja aber auch mit der Maus gearbeitet werden können :)


Edit:
Jetzt liest er mir die Daten nicht mehr Dateistückleweise ein, sondern gibt mir einen Eintrag in einer Listbox biszu 5x hintereinander wieder. Also er liest die Zeile 5x ein bzw. gibt sie mir 5x aus, obwohl sie nur 1x existiert.
Lustig ist auch, dass am Anfang der Funktion ein listbox.Clear steht, weshalb der Eintrag keine 5x kommen dürfte!

Wahrscheinlich mal wieder "unsauberes coden"!
Ich werde die Funktionen mal komplett außeinandernehmen und wieder zusammensetzen!

Über weitere Ansätze/Lösungsmöglichkeiten freue ich mich natürlich auch weiterhin *g*


Vielen Dank

gruß
Timelesk


Saubäär - Mi 24.01.07 23:21

user profile iconTimelesk hat folgendes geschrieben:
Es soll ja aber auch mit der Maus gearbeitet werden können :)


Dann mach halt noch nen Button daneben :wink:
Ansonsten keine Ahnung!

Gruß

Bäär