Главная страница
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.48 MB
Время: 0.015 c
3-90765
Sam
2002-02-20 19:53
2002.03.28
Конвертирование БД


14-91072
Fellomena
2002-02-14 10:59
2002.03.28
Вопрос о распространнёности Delphi в мире.


1-90957
AVT
2002-03-13 17:54
2002.03.28
Как поднять окно своего приложения поверх всех окон в win2k.


3-90795
Turalyon
2002-03-04 11:34
2002.03.28
Поделитесь, если не жалко


1-90889
Colibri
2002-03-17 15:58
2002.03.28
Про TImage