Tipps:
warum 'ne lokale Variable, wie z.B. comp, global in der Klase definieren?
als Owner (für die ListView) kannst du entweder das EditControl oder dessen .Parent verwenden.
wenn du in dieser
for k:= 0 to wortzahl-1 do-Schleife viele Werte hinzufügen (Items.Add) willst, dann bietet sich Items.BeginUpdate und danach Items.EndUpdate an.
geht so schneller, da dann nichtmehr bei jedem Hinzufügen ein Update der StringList(ListView) ausgeführt wird.
die ListView sollte wieder ausgeblendet werden, wen sie nicht mehr benötigt wird. (z.B. das Edit verliert den Fokus)
in deinem Bild sieht man sogar gleich mehrere von diesen Dingern, zur selben Zeit.
kannst dich ja gern mal etwas umschauen:
- Strg + Leertaste = Autovervollständigung sofort anzeigen
- bei Eingabe eine Wortes, ab 3 Zeichen (Standard) Autovervollständigung anzeigen
- Links/Rechts = Markierung (im Wort) ändern
- Hoch/Runter/Bild Hoch/Bild Runter = in Liste Auswahl ändern
- irgendwo hinklicken/ESC/Tab = abbrechen
- Enter/Item anklicken = auswählen
- Backspace/Zeichen eintippen = Wort/Auswahl ändern
- Größe und Position der Auswahlbox ist unter dem EditControl (wenn's da hinpaßt), oder unter dem Cursor/Wort (in Memo und Co.), mit Breite des Controls, oder da, wie es angegeben ist (.Position und .Size)
- via PopupMenü im Edit Wort hinzufügen
- und über's PopupMenü der ListView Wort löschen
- WortListe wird nicht von der Komponente gespeichert ... sollte man also selber machen
z.B.: If AutoComplete._WordsChanged Then AutoComplete.SaveWordsTo.....
- Tschuldschung, hab mir mal deine Wörterlisten gemopst
[edit] Datei siehe
#17