|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.04.2009, 09:15 | #1 |
Форумчанин
Регистрация: 13.04.2009
Сообщений: 117
|
RichEdit Координаты Курсора
Здрасти.
Необходимо узнать координаты пикселя курсора RIchedIt1.CartePos.X RichEdot1.CaretPos.y дают координаты курсора для символов. Есть ли какая функция для перевода позицми каретки в "пиксельную форму" |
23.04.2009, 11:58 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Если не секрет зачем?
I'm learning to live...
|
24.04.2009, 05:58 | #3 |
Форумчанин
Регистрация: 20.06.2007
Сообщений: 270
|
API функция GetCaretPos(lpPoint: TPoint) сохраняет координаты каретки в пикселях относительно левого верхнего угла клиентской области компонента в lpPoint.
Позиция каретки всегда дается внутри клиентской области окна которое содержит каретку. Может она вас устроит.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько? (с) Библия. Вольный перевод с древнееврейского. |
24.04.2009, 08:53 | #4 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
Позволю добавить, координаты в RichEdit : x:= lpPoint.X; y:= lpPoint.Y;/Для всей формы координаты:
XForm:= RichEdit1.Left + x; YForm:= RichEdit1.Top + y;
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
24.04.2009, 09:01 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Лучще преобразование координат из локальных в экранные делать через ClientToScreen
I'm learning to live...
|
|
25.04.2009, 23:24 | #6 |
Регистрация: 09.02.2009
Сообщений: 5
|
я однажды искал это
вот код. у меня листбокс появлялся перед курсором. как в биледере предлогает варианты вставки, так и у меня. взял не помню где. но вставив первые две строки в гуглы можно найти думаю оригинальную статью void __fastcall TForm1::RichEditChange(TObject *Sender) { GetCaretPos(&CaretPos); CaretPos = RichEdit->ClientToScreen(CaretPos); CaretPos = Form1->ScreenToClient(CaretPos); ListBox->Left=CaretPos.x; ListBox->Top=CaretPos.y+14; if (CaretPos.x+ListBox->Width>=RichEdit->Left+RichEdit->Width) { ListBox->Left=CaretPos.x-ListBox->Width; } if (CaretPos.y+ListBox->Height+14>=RichEdit->Top+RichEdit->Height) { ListBox->Top=CaretPos.y-ListBox->Height; } } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Координаты текстового курсора | DeKot | Общие вопросы Delphi | 4 | 07.03.2009 20:47 |
как узнать координаты курсора | nikleb | Общие вопросы C/C++ | 2 | 29.10.2008 23:36 |
Координаты курсора на изображении | Ciberal | Мультимедиа в Delphi | 2 | 28.10.2008 19:33 |
как определить координаты курсора | snaem | Общие вопросы .NET | 0 | 23.04.2008 22:27 |
Координаты курсора | Haster | Win Api | 8 | 06.08.2007 12:04 |