Siemka. Mam pytanko: Jak zrobić autouzupełnianie w ComboBox, np.: wpisuje jakis tekst klikam na Button, zaraz wpisuje zamiast tego tekstu jakiś inny a na liście już mam do wyboru ten, co miałem przed skasowaniem, Potem wyłączam program, włączam ponownie i na ComboBox'ie jest nadal ta lista, jak to zrobić [???] Z tym zapisem i odczytem to łatwe, tylko jak zrobić to pierwszy ?
0
0
Autouzupełnianie tekstu w ComboBox'ie z jego itemów
Przykładem w/w autouzupełniania może być menu -> Start\Uruchom. Tam jest pole gdzie wpisujemy nazwę programu jaki chcemy uruchomić. Po wpisaniu początku wyrażenia występującego na liście Windows automatycznie dokończy zaznaczając dany tekst. Oto przykład takiego właśnie rozwiązania :
procedure TForm1.ComboBox1Change(Sender: TObject);
var
LengthOldText: Integer;
lcount : Integer;
begin
LengthOldText:=Length(ComboBox1.Text); //zapamietanie dlugosci wpisanego ciagu
if ComboBox1.Text='' then exit; //jesli jest on pusty to exit
with ComboBox1 do
for lcount:=0 to Items.Count-1 do //sprawdzamy wszystkie item'y
if CompareText(Text,Copy(Items[lcount],1,Length(Text)))=0 then //porownanie bez uwzglednienia polskich liter
begin
Text:=Items[lcount]; //wpisanie calego tekstu
SelStart:=LengthOldText; //ustawienie skad ma zaczac zaznaczac
SelLength:=Length(Text)-LengthOldText; //ustawienie dokad ma zaznaczac
exit; // jesli znalaz odpowiednik to exit
end;
end;
Należy jeszcze obsłużyć zdarzenie OnKeyPress w następujący sposób :
procedure TFormNotka.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#8 then//jeżeli naciśnięty zostanie klawisz backspace
with ComboBox1 do
begin
Text:=Copy(Text,1,Length(Text)-SelLength);
SelStart:=Length(Text);
end;
end;
0
Szkoda, ale niedziała, a już myślałem :( NIE MA tak, że wpisze text klikne na button skasuje wszystko z ComboBox wpisze inny text a na liście rozwijalnej mam ten powszedni :( Może coś źle powiedziałem wcześniej, może teraz rozumiecie, chodzi przeważnie o zapisanie tekst w autouzupełnianiu po naciśnieniu buttona.
0
Moze chodzi Ci o to:
ComboBox1.Items.Add(ComboBox1.Text)
0
Cześć :)
O to chodzi ?
//sprawdza w czy jest już taki wpis, jeżeli nie to dopisuje...
if (not ComboBox1.Items.IndexOf(ComboBox1.Text) > -1) and (ComboBox1.Text >'')then
ComboBox1.Items.Append(ComboBox1.Text);
//sprawdza w czy jest już taki wpis - jeżeli znajdzie to go kasuje...
with ComboBox1.Items do if IndexOf(ComboBox1.Text) > -1 then Delete(IndexOf(ComboBox1.Text));
// w nawiasach akurat nie musi być ComboBox1.Text - możesz z jakiejś zmiennej
pobierać tekst np. po kliknięciu na button