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




Вниз

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


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 и высвечивалось в нужном месте...




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




Наверх





Память: 0.72 MB
Время: 0.03 c
3-90786           Зинец Виктор          2002-03-01 15:23  2002.03.28  
Как заставить клиента MIDAS (или DCOM?) заработать?


1-90990           sdn                   2002-03-15 10:39  2002.03.28  
MDI Application


3-90747           Евгения               2002-02-28 10:50  2002.03.28  
Как сделать список с вложенным списком?


1-90933           Сержжж                2002-03-14 11:27  2002.03.28  
Патч к Delphi5 для работы в XP


1-90958           Alibaba               2002-03-14 17:47  2002.03.28  
Delphi-Excel