code-completion (как в Delphi)

RomanSW
Дата: 12.10.2004 12:47:16
Субж. Я делал через OnKeyPress, KeyDown и подобные события. То есть при нажатии клавиши '<' всплывает форма где расположен TListBox (это KeyPress), при нажатии любой клавиши фокус передается на форму где лежит TMemo (это для того, что бы курсор находился на позии и мигал :). При нажатии управляющих клавиш я гуляю по списку и соответственно при нажатии на управляющие клавиши (вверх, вниз, ...) опять ставлю фокус на TMemo. В общем бред :)
Вопрос: Как можно реализовать code-completion красиво и просто (знаю что можно но вот в голову ничего не приходит)?
Ярослав Татаренко
Дата: 12.10.2004 12:55:56
В общем случае Вам прийдется самому управлять кареткой: SetCaretPos.

У меня была подобная задача на заре творчества: сделал себе спец. редактор: расчет положения каретки для моноширинных шрифтом достаточно тривиален, а вот для текста с несколькими штрифтами да еще и разной ширины/высоты - это задачка посложнее.
FEV
Дата: 12.10.2004 13:03:05
Ярослав Татаренко
В общем случае Вам прийдется самому управлять кареткой: SetCaretPos.

У меня была подобная задача на заре творчества: сделал себе спец. редактор: расчет положения каретки для моноширинных шрифтом достаточно тривиален, а вот для текста с несколькими штрифтами да еще и разной ширины/высоты - это задачка посложнее.

Это одна из проблем. В её решении поможет
TCanvas.TextWidth;
TCanvas.TextHeight;
Картинка с другого сайта.
Makar4ik
Дата: 12.10.2004 13:11:16
Стоп...
Тут что-то не так.

CaretPos - это позиция курсора в СИМВОЛАХ.
При чем тут ширины шрифтов?
И нафига пиксели при этом мерять?
FEV
Дата: 12.10.2004 13:32:31
RomanSW
при нажатии клавиши '<' всплывает форма где расположен TListBox (это KeyPress), при нажатии любой клавиши фокус передается на форму где лежит TMemo (это для того, что бы курсор находился на позии и мигал :). При нажатии управляющих клавиш я гуляю по списку и соответственно при нажатии на управляющие клавиши (вверх, вниз, ...) опять ставлю фокус на TMemo. В общем бред :)
Вопрос: Как можно реализовать code-completion красиво и просто (знаю что можно но вот в голову ничего не приходит)?

Не переключайте фокус на всплывшую форму. Обрабатывайте нажатие "управляющих клавиш" и прокрутку TListbox в основной форме.
Картинка с другого сайта.
softwarer
Дата: 12.10.2004 16:20:19
RomanSW
Вопрос: Как можно реализовать code-completion красиво и просто (знаю что можно но вот в голову ничего не приходит)?

Пока что я не видел достойной реализации этой фичи (включая Delphi). Соответственно, у меня есть сомнение в том, что Вы получите в форуме хороший ответ.