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

Вниз

Окошко с пунктами   Найти похожие ветки 

 
Dr. Genius   (2005-01-30 16:57) [0]

Если, например, в Delphi где-нибудь в коде программы написать SysUtils и поставить точку, то откроется небольшое окошко с функциями и процедурами библиотеки SysUtils. Вообще, такое меню часто встречается в приложениях Windows. Вот, к примеру, если запустить Internet Explorer и в поле для ввода адреса написать www и поставить точку, то в таком окошке появится список всех сайтов, которые были посещены пользователем. Вопрос: как мне сделать в своей программе так, чтобы в Edit’е при вводе символа { (открывающая фигурная скобка), открывалось такое же меню и можно было бы выбирать пункты. Да, и как заполнить это меню нужными пунктами?


 
Neznaika ©   (2005-01-30 17:29) [1]

Ну во-первых я так понимаю не edit а combobox...

1.Читаем первый введенный символ
2.Если это "{" то
3.Ждем пока пользователь закончит ввод и нажмет например Enter
4.Читаем что ввел пользователь
5.Если введеная строка когда либо вводилась то предлагаем ее
6.Если введенная строка не вводилась то записываем ее в *.txt
7.При повторной попытке пользователя ввести что либо, после каждого keyup ищем в *.txt такойже набор символов если есть то предлагаем если нет то ждем оригинальную строку и записываем ее в файл

просто мои мысли по этому поводу... :-0


 
Dr. Genius   (2005-01-30 19:44) [2]

Да, но КАК открыть это окошко с пунктами?


 
Dr. Genius   (2005-02-04 14:06) [3]

Нет, нет, Вы меня не так поняли. Я это хочу сделать не с помощью средств компонента ComboBox, а с помощью Edit’а. Я знаю, что в Edit’е это возможно, т. к. встречал подобное в приложениях Windows. Мне требуется сделать так, чтобы при вводе определённого символа (вне зависимости от того, какова позиция введённого символа в строке) открывалось окошко с пунктами (в Windows оно белого цвета и, если не ошибаюсь, в нижнем правом его краю есть область для растягивания (изменения размера) этого окошка). Неужели никто не знает, как это сделать?


 
TUser ©   (2005-02-04 14:10) [4]

Окошко в Delphi IDE очень мало похоже на комбобокс из эксплорера. А что тебе надо от эдита - вообще загадка.


 
esu ©   (2005-02-04 14:16) [5]


> Dr. Genius   (04.02.05 14:06) [3]

ну что бы окошко появилось его нужно создать :) Насколько оно будет похоже на то что ты видел зависит от параметров которые ты задашь при создании. Ну а в нем уже рисуй что хочешь.


 
wl ©   (2005-02-04 14:17) [6]

нужно сделать ещё одно окно без заголовка и с ListBox-ом на всё окно, и когда его надо вывести, заполнить ListBox и вывести окошко по координатам курсора. как только окно потеряет фокус или пользователь сделает выбор - прятать окно


 
Плохиш ©   (2005-02-04 14:23) [7]

>Dr. Genius

В моей версии IE 6.х строка ввода адреса является комбобоксом.


 
wl ©   (2005-02-04 14:35) [8]

Плохиш ©   (04.02.05 14:23) [7]

там не только комбобокс, окошко автокомплекции можно порастягивать во все стороны. вот в Opera - там только комбобокс


 
Плохиш ©   (2005-02-04 14:43) [9]

>wl ©   (04.02.05 14:35) [8]

Хм, и правда :-) никогда не обращал внимания. Ну тогда как ты в [6] и описал.


 
snake_r   (2005-02-04 15:14) [10]

function SHAutoComplete(hwndEdit: THandle; Flags: Cardinal): HRESULT; stdcall;

function EnableAutoComplete(Handle: THandle; FileSystem, URL: Boolean): Boolean;

implementation

function SHAutoComplete; external "ShlWApi" name "SHAutoComplete";

function EnableAutoComplete(Handle: THandle; FileSystem, URL: Boolean): Boolean;
const
 SHACF_FILESYSTEM = $00000001;
 SHACF_URLHISTORY = $00000002;
 SHACF_URLMRU = $00000004;
 SHACF_USETAB = $00000008;
const
 IFileSystem: array[Boolean] of Cardinal = (0, SHACF_FILESYSTEM);
 IURL: array[Boolean] of Cardinal = (0, SHACF_URLHISTORY or SHACF_URLMRU);
var
 Flags: Cardinal;
begin
 Result := False;

 Flags := IFileSystem[FileSystem] or IURL[URL];
 if Flags <> 0 then
 begin
   Flags := Flags or SHACF_USETAB;
   Result := SHAutoComplete(Handle, Flags) = 0;
 end;

end;

// Пример использования:
// Для комбобокса:
// EnableAutoComplete(FindWindowEx(ComboBox1.Handle, 0, "Edit", nil), False, True)
// работает в точности как на IE


 
wl ©   (2005-02-04 15:21) [11]

snake_r   (04.02.05 15:14) [10]

решение красивое, но только для url и файлов.
вопрос был также и о самостоятельном заполнении списка


 
Igor_thief   (2005-02-04 16:54) [12]

snake_r   (04.02.05 15:14) [10]
EnableAutoComplete(FindWindowEx(ComboBox1.Handle, 0, "Edit", nil), False, True)

Чего-то никак не врублю, как этот код использовать?


 
Dr. Genius   (2005-02-07 12:21) [13]


> Чего-то никак не врублю, как этот код использовать?


Я тоже...


 
Dr. Genius   (2005-02-07 12:22) [14]


> Чего-то никак не врублю, как этот код использовать?


Я тоже...


 
Dr. Genius   (2005-02-07 12:22) [15]


> Чего-то никак не врублю, как этот код использовать?


Я тоже...



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

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

Наверх




Память: 0.47 MB
Время: 0.037 c
4-1104329917
Tatianka
2004-12-29 17:18
2005.02.20
Как получить код возврата потока, вызываемого из другого прилож?


8-1099345742
dredd
2004-11-02 00:49
2005.02.20
Вопрос по математике


1-1107843367
hgd
2005-02-08 09:16
2005.02.20
Вопрос про RichEdit


1-1107760505
Homa_Programer
2005-02-07 10:15
2005.02.20
инсталлятор


14-1107021523
Knight
2005-01-29 20:58
2005.02.20
Delphi...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский