TEdit i automatyczne dokańczanie

Odpowiedz Nowy wątek
2006-09-05 15:15
Kamilos19
0

Cześć!

W moim programie, w pewnym formularzu korzystam z kontrolek TEdit do wprowadzania danych. Chciałbym zrobić tak, że jak ktoś wpisuje pewne dane do tych kontrolek, by się one same uzupełniały... ale tak, by to uzupełnienie było "zaznaczone", żeby użytkownikowi ono nie przeszkadzało, jeśli podpowiedź jest błędna. Np. mam w bazie danych wpisane nazwisko Karol i Kamil. Jak ktoś wciśnie w polu "K" to mu się wyświetli "Kamil", ale "amil" będzie podświetlone a kursor będzie za literką "a". Tak, że jak użytkownik wciśnie 'a', to się nic nie zmieni, tzn. tylko podświeli się 'mil'. Jak teraz wpisze "r", to tekst zmieni się na 'Karol'. Mam nadzieję, że rozumienie.

Męczę się z tym i nie wiem jak to zrobić. Próbowałem używać tylko SelStart i SelLength... by końcówke zaznaczać, ale wtedy kursor jest na końcu zaznaczenia a nie na początku.

Będę wdzięczny za sugestie. A może są inne kontrolki, które same to realizują?

Z góry dzięki

edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26

Pozostało 580 znaków

2006-09-05 15:21
0

Umieść na formie komponent typu TComboBox.
W Items umieść elementy które będą wśród tych automatycznie wpisywanych.
Styl komponentu zmień na csSimple.
To wszystko.

Jeśli takie rozwiązanie Cię nie satysfakcjonuje daj znać... :-)

Pozostało 580 znaków

2006-09-05 15:41
0

a jak nie to masz... pokombinuj (chociaż osobiście zostalbym przy ComboBox)

EDIT1
onKeyDown

Edit1.SelText := '';

onKeyUp

var
  I: Integer;
  S: String;
begin
if Length(Edit1.Text)>0 then
for I:=0 to Memo1.Lines.Count -1 do
begin
  if Copy(Memo1.Lines[I], 1, Edit1.SelStart) = Copy(Edit1.Text, 1, Edit1.SelStart) then
    S:=Copy(Memo1.Lines[I], Edit1.SelStart+1, Length(Memo1.Lines[I]));
end;
Edit1.SelText := S;
Edit1.SelStart := Length(Edit1.Text)-Length(S);
Edit1.SelLength := Length(Edit1.Text);
end;

i wrzucasz na formatke Memo1 i do niej wpisujesz podpowiedzi.... (oczywiscie mozesz to przerobic na dowolnego StringLista ;) )

pozdro

Pozostało 580 znaków

2015-10-20 12:19
Pele2
0

Ten kod działa całkiem nieźle, ale problem jest z cofaniem kursora (klawisz Backspace)
Mam już wpisany tekst, wciskam Backspace i znajduje pierwszą podpowiedź i znowu ustawia kursor na końcu.

Pozostało 580 znaków

2015-10-20 12:26
0

http://delphidabbler.com/tips/111

Powinno śmigać

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0