Autouzupełnianie w ComboBox...

Odpowiedz Nowy wątek
Sun
2004-06-19 16:00
Sun
0

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 ?

Pozostało 580 znaków

2004-06-19 16:06

Rejestracja: 16 lat temu

Ostatnio: 10 lat temu

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;

Pozostało 580 znaków

Sun
2004-06-19 16:11
Sun
0

Szkoda, ale niedziała, a już myślałem :( Niema 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.

Pozostało 580 znaków

2004-06-22 12:22

Rejestracja: 15 lat temu

Ostatnio: 14 lat temu

0

Moze chodzi Ci o to:

ComboBox1.Items.Add(ComboBox1.Text)

Pozostało 580 znaków

Inter
2004-06-22 15:19
Inter
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

Pozostało 580 znaków

Odpowiedz

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