Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];

Вниз

Где взять combobox c историей   Найти похожие ветки 

 
AlexR_R   (2002-01-22 17:53) [0]

Нужен такой же контрол, как Address в IE.
Народ посоветуйте, где такое поискать.


 
AlexR_R   (2002-01-22 17:57) [1]

Sorry, описался.
Не с историей, а с быстрым поиском, чтоб на нажатие нескольких букв были только те items, которые с них начинаются


 
Феликс   (2002-01-22 18:07) [2]

Возможно, я не прав, но в IE стандартный combobox! Если искать, то только в самом comboboxe! А если нет, и это какой-то спец. космический компонент,то можно использовать listbox, в него записывать все адреса, потом осуществлять в листбох поиск и кидать параметры в комбобох. Метод фашисткий, но действенный.


 
AlexR_R   (2002-01-22 18:19) [3]

Во-первых он не стандартный. Если начинаешь что-то писать, то снизу появляется список, который включает только те адреса, которые начинаются с введенных букв. То что выпадает, даче не часть comboboxa. По-крайней мере ее можно уменьшить/увеличить
за правый нижний угол.

А во- вторых меня устроил бы и стандартный, только как сделать
чтоб в списке были только отфильтрованные items.

Я сейчас попробовал на OnChange заполнять список по новому, получается жутко криво.

Код примерно такой



procedure TFrame3.ResetHist;
var i : integer;
s : String;
begin
ComboBox1.Items.BeginUpdate;
try
s := ComboBox1.Text;
ComboBox1.Items.Clear;
for i := 0 to Items.Count - 1 do //Items -- это список всех строк
if Pos(s, Items.Strings[i]) = 1 then
ComboBox1.Items.Add(Items.Strings[i]);
finally
ComboBox1.Items.EndUpdate;
ComboBox1.DroppedDown := True;
end;
end;


Кривизна в том, что исчезает мышь!
И еще OnChange возникает когда что-то выбрали,
соответственно после этого список выпадает только
с одним итемом. Но это наверно еще как-то можно побороть.



 
Dimka Maslov   (2002-01-22 18:46) [4]

Для бысрого поиска в ComboBox подходит такой код:

procedure TForm1.ComboBox1Change(Sender: TObject);
var
i: Integer;
S: String;
begin
S:=ComboBox1.Text;
if FLastLength<Length(S) then for i:=0 to ComboBox1.Items.Count - 1 do begin
if AnsiSameText(S, Copy(hcbRecipients.Items[i], 1, Length(S))) then begin //или AnsiSameStr (сравнение с учётом регистра)
ComboBox1.Text:=ComboBox1.Items[i];
ComboBox1.SelStart:=Length(S);
ComboBox1.SelLength:=Length(ComboBox1.Text)-Length(S);
Break;
end;
end;
FLastLength:=Length(ComboBox1.Text);
end;


 
AlexR_R   (2002-01-22 18:50) [5]

Спасиб, в принципе уже что-то, а вот как сделать удаление не нужных?


 
MBo   (2002-01-23 09:07) [6]

можно хранить в списке, и выбирать нужные
посмотри еще
http://www.lmc-mediaagentur.de/dpool/vcl11.htm

procedure TForm1.FormCreate(Sender: TObject);
begin
sl:=tstringlist.create;
sl.loadfromfile("e:\qqq.txt")
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var s:string;
i:integer;
begin
s:=combobox1.Text;
combobox1.Items.Clear;
for i:=0 to sl.count-1 do begin
if pos(s,sl[i])>0 then combobox1.items.add(sl[i]);//нужное условие
end;
combobox1.DroppedDown:=true;
end;


 
nikkie   (2002-01-23 09:19) [7]

http://www.euromind.com/iedelphi/ieaddress.htm


 
AlexR_R   (2002-01-23 16:02) [8]

Спасибо всем ответившим.
Более менее разобрался.
Есть куча комбобоксов, которые реализуют AvtoCompletion
примерно в том же стиле, как предложил Dimka Maslov

2 nikkie это как раз то о чем я говорил, правда пока не удалось его заставить работать со своими строками. Все лезет в regestry.
Даже не знаю, может все-таки получится. Ты не в курсе?
Т.е. items в сам комбобокс уже не добавляет, а когда начинает искать в своих дебрях по введенной строке, то ищет по истории IE.

2MBo Спасибо за ссылку, а код по моему не сильно отличается от того, что я написал несколько сообщений назад. На фрейме это работает очень криво. Может у тебя на форме работало?

Thanks


 
nikkie   (2002-01-25 09:17) [9]

поток информации явно превышает мою способность ее переваривать :(

вчера совершенно случайно наткнулся на такой текст в своем загашнике. источник не помню - какая-то рассылка.

How do I add the autocomplete feature I"ve seen in IE text fields?

There is a little known function called SHAutoComplete that resides in
the shwlapi.dll. Calling this function with the handle of an edit field and
the appropriate flags enables the IE autocomplete feature.

One important thing to keep in mind is that this function works only after
you call the ole-related CoInitialize (or CoInitializeEx) function.
This task is accomplished by the initialization section of the ComObj unit.

Here is a sample unit that shows how to use such feature:

unit AutoCompleteUnit;

interface

uses Windows, StdCtrls, ComObj;

Const
SHACF_DEFAULT = $0;
SHACF_FILESYSTEM = $1;
SHACF_URLHISTORY = $2;
SHACF_URLMRU = $4;
SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU);
SHACF_AUTOSUGGEST_FORCE_ON = $10000000;
SHACF_AUTOSUGGEST_FORCE_OFF = $20000000;
SHACF_AUTOAPPEND_FORCE_ON = $40000000;
SHACF_AUTOAPPEND_FORCE_OFF = $80000000;

function AutoComplete(editField: TEdit; dwFlags: DWORD): Boolean;

implementation

function SHAutoComplete(hwndEdit: HWND; dwFlags: dWord): LongInt;
&nbsёТKХnbsp; stdcall; external "shlwapi.dll";

function AutoComplete(editField: TEdit; dwFlags: DWORD): Boolean;
begin
Result := (SHAutoComplete(editField.Handle, dwFlags) = 0);
end;

end.


 
MBo   (2002-01-25 13:08) [10]

ну сюда-то загляни
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1011711180&n=0



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
1-18838
Georg
2002-01-22 11:03
2002.02.07
Думку гадаю о текстовых файлах


3-18742
Yu
2002-01-11 10:34
2002.02.07
SQL - очень простой вопрос :-)


14-18963
VEG
2001-12-15 21:35
2002.02.07
Проблема при разработке графического компонента.


1-18893
VladimirL
2002-01-23 14:29
2002.02.07
Как отправить StringGrid на печать целиком?


1-18891
Alex Uskov
2002-01-21 16:24
2002.02.07
Программирование ScanDisk-а





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский