Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.28;
Скачать: CL | DM;

Вниз

Выпадающий список подсказок в произв.месте?   Найти похожие ветки 

 
kaif   (2002-03-15 23:25) [0]

Часто нужен бывает выпадающий список типа того, что при наборе в тексте Delphi выдает (меню возможных имен свойств и методов, скажем). Это какое-то простейшее меню, возможно делающееся прямым вызовом API-функций. Я бы хотел написать что-то вроде невизуального компонента, который бы что-то в этом роде делал, беря данные для списка из DataSet.
Если такой компонент уже существует, сообщите, пожалуйста, если нет - то пару советов, как реализовать такое меню (со скроллингом, естественно)...
Хотелось бы подключать такой компонент к DBGrid, чтобы он рисовался в его Canvas или к TMemo или к TEdit. Одним словом, поймать, где сейчас InplaceEditor или карет находится и высветить такое меню методом типа MyComponent.ShowHintMenu...
Сделать событие вида
THintMenuSelectionEvent =
procedure(ID: integer; const Text: string);
И свойства: DataSet, IDfield, TextField.
Кто что посоветует?


 
lipskiy   (2002-03-15 23:29) [1]

А если просто какой-нибудь ListBox отрисовать, как обычно?


 
kull   (2002-03-16 01:55) [2]

Посмотри по ссылке:
http://sourceforge.net/projects/synedit/
компоненты для подсветки синтаксиса в разных языках,
в том числе и Delphi.
Есть там и выпадающие списки как в Delphi.


 
MBo   (2002-03-16 08:08) [3]

судя по описанию потребностей, нужен обычный комбобокс, с динамическим заполнением подходящими значениями


 
kaif   (2002-03-16 13:52) [4]

Спасибо всем.
Комбобокс я делать не стал, чтобы не делать Fetch всех записей из DataSet (у меня это обычно IBQuery).
Но я попробовал сделать что-то в этом духе на основе временной высветки DBLookupComboBox, используя временный перехват OnKeyPress (для #13) и OnKeyDown (для vk_up, vk_down, vk_prior, ...) winконтрола, к которому подключается мой компонент, прописав что-то вроде
------
if DataSet.Active then
begin
case Key of
vk_up:
begin
DataSet.Prior;
DBLookupListBox.KeyValue :=
DataSet.FieldByName("IDFieldName").Value;
end;
vk_down:
begin
DataSet.Next;
DBLookupListBox.KeyValue :=
DataSet.FieldByName("IDFieldName").Value;
end;
и т.д.
-------------
Работает неплохо. В общем, все оказалось проще, чем я думал.
Но пока не совсем ясно, как позиционировать это на экране так, чтобы это легко подключалось к разным WinControl и высвечивалось в нужном месте...



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

Текущий архив: 2002.03.28;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.006 c
1-90905
kronos
2002-03-13 21:03
2002.03.28
Помогите чайнику!!!


3-90736
Ptr
2002-02-27 14:54
2002.03.28
MasterSource - в чем проблема ?????????????????


1-90854
SlavaS
2002-03-16 21:35
2002.03.28
Неудаётся найти файл *.bpl


3-90780
Alexander Vasjuk
2002-02-25 16:47
2002.03.28
КРИЗИС ЖАНРА или Настройка ширины колонок подчиненной таблицы


4-91132
Itspets
2002-01-27 20:41
2002.03.28
API функция есть в NT, но нет в Win9x





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