![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ComboBox [D5]
Sergey-ZZZ © (2002-09-12 14:20:00)Подскажите. Нужно сделать так чтобы при вводе буквы в ComboBox лист ComboBox скортировался и указатель становился на первое вхождение этой буквы и так по второй и т.д.
Демонов Е.В. (2002-09-12 16:16:00) [1]Не довелось мне на D5 работать
Alx2 (2002-09-12 16:13:00) [2]>Демонов Е.В. © (12.09.02 16:10)
У человека D5
Демонов Е.В. (2002-09-12 16:10:00) [3]Такое поведение стандартно
// надо только некоторые свойства .... вспомнил
AutoComplite // кажеться так и ещё такм одно свойство было, в итнспекторе рядом находиться // они както в паре работают
Smithson (2002-09-12 16:06:00) [4]У меня это сделано так:
var S,s1: String;
i: Integer;
bBegin
// Если объект не в фокусе - не надо нам клавиатуры!
if not (Sender as TWinControl).Focused then exit;
// Вводят начало строки....... идиоты
if Upper(Sender.ClassName) = "TCOMBOBOX" then begin
// Ну ладно уж....
if (Key = #13) and (TComboBox(Sender).DroppedDown) then begin // Enter нажали
I := TComboBox(Sender).ItemIndex;
TComboBox(Sender).DroppedDown := False;
TComboBox(Sender).Text := TComboBox(Sender).Items[I];
end;
if (Key < " ") then exit;
s1 := TComboBox(Sender).SelText;
S := TComboBox(Sender).Text+Key;
if s1 > "" then begin
System.Delete(S,Pos(s1,s),Length(s1));
end;
if not TComboBox(Sender).DroppedDown then TComboBox(Sender).DroppedDown := True;
for i := 0 to TComboBox(Sender).Items.Count-1 do
if CmpLines(S,TComboBox(Sender).Items[i]) then begin
TComboBox(Sender).ItemIndex := i;
Key := #0;
TComboBox(Sender).Text := S;
TComboBox(Sender).SelStart := 300;
exit;
end;
end;
End;
function CmpLines(L1,L2: String): Boolean; // True, если начало одной строки равно другой
var i, j: Integer;
begin
j := Length(L1);
if j > Length(L2) then j := Length(L2);
Result := False;
if J < 1 then exit;
L1 := Upper(L1);
L2 := Upper(L2);
for i := 1 to J do
if L1[i] <> L2[i] then exit;
Result := True;
end;
Kaban (2002-09-12 14:53:00) [5]на королевсетве такой компонент видел, что-то типа IECombobox
Alx2 (2002-09-12 14:49:00) [6]В D6 такое поведение наблюдается у стандартного комбобокса.
Если хочешь, вышлю stdctrls от D6, где посмотришь как это делается на прмере TCustomComboBox.