Pan-SQL |
Отправлено: 11.05.2005, 18:13 |
|
Не зарегистрирован
|
Здравствуйте уважаемые участники форума. У меня возник такой вопрос: можно ли в C++Buillder реализовать поле с раскрывающимся списком, т.е. при вводе какого либо значения в поле раскрывается список ранее введенных значений, если произошло совпадение первых букв или цифр (как в Яндексе или Рамблере). заранее благодарю! |
|
Rius |
Отправлено: 11.05.2005, 18:50 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
Это не в яндексе и рамблере, а в интернет-обозревателе, называется MRU List (Most Recently Used)
Если "поле с раскрывающимся списком" — от базы данных, то такое есть в EhLib. Если просто — тогда вместо Edit использовать ComboBox, список которого заполнять ранее введенными значениями. Ввел новое и запомнил в файле или в реестре, перед вводом следующий раз — считывать список обратно. А выпадение можно задать свойствами или программно.
|
|
Pan-SQL |
Отправлено: 11.05.2005, 19:01 |
|
Не зарегистрирован
|
Дело в том, что список должен выглядеть как поле, т.е. без стрелкии справа. |
|
Rius |
Отправлено: 12.05.2005, 14:33 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
Для базы данных или нет?
http://delphiworld.by.ru/base/create_combo...bo_control.html
|
|
Sl@Sh |
Отправлено: 12.05.2005, 16:12 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Для этого вполне пригоден TComboBox.
Выполнять проверку нужно в событии OnChange. В этой самой проверке можно конечно сверять подстроки (методом SubString), но это гораздо медленнее,чем например сверять посимвольно.
Чисто теоретически можно так — создать массив символов. Элементов в массиве столько, сколько значений в ComboBox. При вводе нового символа, вы должны считывать в ваш масив все символы из списка по номеру вводимого символа. В этом случае процесс пойдёт быстрее.
P.S.: Извините за чисто теоретический ответ. Если что не понятно я попробую объяснить. Удачи !
|
|
Влад |
Отправлено: 13.05.2005, 11:24 |
|
Не зарегистрирован
|
А нет ли готового компонента от сторонних производителей, решающего этот вопрос? |
|
Rius |
Отправлено: 13.05.2005, 13:12 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
Алёёё....
Компоненты EhLib, конкретно например TDBEditEh. Может работать и без подключения к базе данных, как обычный TEdit, только с выпадающим список MRUList
|
|
Sl@Sh |
Отправлено: 13.05.2005, 16:19 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Я тут так подумал, а вам обязательно чтобы список выпадал или нужно чтобы автоматом слово подбиралось ? ComboBox ведь такое может. От стрелки тоже можно избавиться (см. свойство Style)
|
|
Pan-SQL |
Отправлено: 16.05.2005, 12:08 |
|
Не зарегистрирован
|
Именно так, чтобы список выпадал. |
|
** Rius |
Отправлено: 16.05.2005, 13:24 |
|
Не зарегистрирован
|
Pan-SQL Такое что ли?
|
|
Sl@Sh |
Отправлено: 16.05.2005, 16:08 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Не по теме : Где такую кнопочку взяли ? Какой компонент ? Скажите если можно
|
|
** Rius |
Отправлено: 16.05.2005, 19:46 |
|
Не зарегистрирован
|
Именно это — обычная кнопка, в винде включен стиль Longhorn Aero — Aero Plex, из Longhorn Transformation Pack 8.
Посмотри ещё здесь |
|
Pan-SQL |
Отправлено: 18.05.2005, 07:04 |
|
Не зарегистрирован
|
Да! именно то, что мне нужно. Подскажите, как это реализовать |
|
GIZMO |
Отправлено: 18.05.2005, 09:31 |
|
Машинист паровоза
Группа: Участник
Сообщений: 174
|
QUOTE (Pan-SQL @ 18/05/2005, 07:04) | Да! именно то, что мне нужно. Подскажите, как это реализовать |
1. Кинуть на форму TEdit
2. Создать программно TListBox
3. У ListBox установить:
а) стили окна WS_BORDER | WS_EX_PALETTEWINDOW;//SetWindowLong
б) стиль класса окна CS_SAVEBITS; //SetWindowWord
в) WindowParent = GetDesktopWindow();
г) Visible = false;
4. Обработать OnMouseMove и OnMouseUp у ListBox, чтобы подсветить и выбирать елементы при перемещении и нажатии мыши.
5. Обработать OnChange у Edit — здесь ищем в ListBox строки если есть, то отображаем его и подсвечиваем строку.
6 . При отображенном ListBox нужно перенаправить нажатие стрелок вверх, вниз в ListBox//SendMessage
7. Спрятать список если:
а) в Edit пришло WM_KILLFOCUS
б) в Edit пришло VK_RETURN
в) в Форму пришло WM_NCLBUTTONDOWN
|
|
Guest |
Отправлено: 18.05.2005, 11:35 |
|
Не зарегистрирован
|
QUOTE (Pan-SQL @ 18/05/2005, 07:04) | Да! именно то, что мне нужно. Подскажите, как это реализовать |
Это кем же надо быть!....
QUOTE | Это не в яндексе и рамблере, а в интернет-обозревателе, называется MRU List (Most Recently Used)
Если "поле с раскрывающимся списком" — от базы данных, то такое есть в EhLib. Если просто — тогда вместо Edit использовать ComboBox, список которого заполнять ранее введенными значениями. Ввел новое и запомнил в файле или в реестре, перед вводом следующий раз — считывать список обратно. А выпадение можно задать свойствами или программно. |
QUOTE | Алёёё....
Компоненты EhLib, конкретно например TDBEditEh. Может работать и без подключения к базе данных, как обычный TEdit, только с выпадающим список MRUList |
если до сих пор не понятно, это компонент TDBEditEh из пакета EhLib
GIZMO у этого списка размер изменяется как в обозревателях. |
|
Pan-SQL |
Отправлено: 18.05.2005, 11:47 |
|
Не зарегистрирован
|
Компонент я нашел, только как его скачать и установить? |
|
** Rius |
Отправлено: 18.05.2005, 12:35 |
|
Не зарегистрирован
|
А нашел бы, если б я не дал ссылку на сайт?
Зайди в русский раздела сайта EhLib и смотри раздел загрузки, там все по-русски написано (сегодня только смотрел). Когда скачаешь, в архиве лежит инструкция по установке.
Засим умываю руки, которые при виде такой несамостоятельности просто опускаются. |
|
Pan-SQL |
Отправлено: 18.05.2005, 13:13 |
|
Не зарегистрирован
|
Библиотеку я установил. Работает. Только какой копмонент лучше использовать. Компонент должен работать от базы данных |
|
Sl@Sh |
Отправлено: 18.05.2005, 13:48 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Из раздела загрузок : EhLib 3.6 Evaluation Version (works only within IDE) archive for D4-D9, BCB4-BCB6.
У вас кряк есть ?
|
|
Guest |
Отправлено: 18.05.2005, 14:15 |
|
Не зарегистрирован
|
Да какой кряк, он же бесплатный
Зайдите наконец на официальный сайт, в русский раздел |
|
Sl@Sh |
Отправлено: 18.05.2005, 17:33 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Спокойно Guest (он же Rius ). Мне этот компонент не нужен, я поэтому сайт не рассматривал, а заглянул только в англ. downloads. Там естественно не написано про 2-й месяц.
|
|
Лена |
Отправлено: 19.05.2005, 08:50 |
|
Не зарегистрирован
|
>EhLib 3.6 Evaluation Version (works only within IDE) archive for D4-D9, BCB4-BCB6
У меня этот архив скачивается с ошибками.
Скачала архив ниже — EhLib 3.6 Evaluation Setup for C++ Builder 6. Все установилось, без требования паролей.
Скажите нет функциональной разницы для С++ Builder 6? |
|
olegenty |
Отправлено: 19.05.2005, 08:52 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
http://ehlib.com/RUS/ehlibrus.exe — для тех, кто хочет пользоваться полнофункциональной бесплатной для русских версией. (ну как дети).
|
|
Лена |
Отправлено: 19.05.2005, 09:15 |
|
Не зарегистрирован
|
Я поэтому и вопрос задала что по указанной ссылке у меня скачивается всего 710 кв и выдает сообщение об ошибке при разархивации. Не знаю в чем дело, может наш сервер на работе, может что еще.
Поэтому я и скачала версию ниже EhLib 3.6 Evaluation Setup for C++ Builder 6. Она скачалась без проблем. Так будет функциональная разница между EhLib 3.6 Evaluation Setup for C++ Builder 6 и EhLib 3.6 Evaluation Version (works only within IDE) archive for D4-D9, BCB4-BCB6
которую мне не удается скачать? |
|
olegenty |
Отправлено: 19.05.2005, 09:22 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
как и написано, работать будет только при запущенном C++Builder/Delphi
|
|
Лена |
Отправлено: 19.05.2005, 11:28 |
|
Не зарегистрирован
|
Спасибо! |
|
Pan-SQL |
Отправлено: 19.05.2005, 12:39 |
|
Не зарегистрирован
|
Так какой компонент мне лучше всего использовать? Я пробовал DBEditEh, при вводе список не выпадает.
P.S.
Этот сайт посвящен C++Builder. Зачем умопинать Delphi? |
|
Rius |
Отправлено: 19.05.2005, 14:33 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
QUOTE | Я пробовал DBEditEh, при вводе список не выпадает. | поздравляю! хоть поставил...
смотри свойство MRUList, список называется Items, разрешение выпадания — Active. Значения, которые будут выпадать при вводе добавляются программно в Items (Работает аналогично Memo->Lines, т.е. является объектом TStringList).
Delphi и C++ Builder очень близкие системы, а из всей инфы по ним обеим 90% приходится на Delphi. Перевод из одного в другое обычно вполне простой.
|
|
Лена |
Отправлено: 20.05.2005, 10:06 |
|
Не зарегистрирован
|
Товарищи, если кому не тяжело скинте мне на email файл по адресу http://ehlib.com/RUS/ehlibrus.exe ну не хочет он скачиваться в полном объеме у меня.
Email vmyletterbox@yandex.ru
Заранее спасибо. |
|
Gedeon |
Отправлено: 20.05.2005, 10:22 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Отмылил
|
|