Текущий архив: 2002.12.09;
Скачать: CL | DM;
Вниз
Координаты курсора в Memo Найти похожие ветки
← →
sers (2002-11-28 09:42) [0]CaretPos возвращает координаты в терминах символов, а мне надо получить координаты в пикселях. Как это можно сделать ?
← →
Игорь Шевченко (2002-11-28 10:23) [1]RTFM: EM_xxxx messages
← →
Kudatsky (2002-11-28 10:26) [2]Создать обработчик OnMouseMove. X и Y - координаты курсора в пикселях.
procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
end;
← →
sers (2002-11-28 10:55) [3]>> Kudatsky
Мне надо так - пользователь ввел . - и в этом месте создается ListBox, так что это событием мне не подходит
>> Игорь Шевченко
Не разобрался :(
Пробовал так:
procedure TForm1.Memo1KeyPress(.....
Label3.Caption:=IntToStr(Hi(
SendMessage
(Memo1.Handle,
EM_POSFROMCHAR,
1,
0))
);
Label4.Caption:=IntToStr(Lo(
SendMessage
(Memo1.Handle,
EM_POSFROMCHAR,
1,
0))
);
Во первых не уверен, что я вообще правильно делаю. Во вторых не понятно с третьим параметром. В MSDN сказано следующее:
Edit controls and Rich Edit 2.0:
Specifies the zero-based index of the character.
А что это за zero-based index ?
← →
sers (2002-11-28 10:59) [4]При увеличении третьего параметра на 1 - значение
SendMessage
(Memo1.Handle,
EM_POSFROMCHAR,
1,
0)
Увеличивается на 6. Как я понимаю это ширина символа. Значит логично бы подставить третьим символом Memo1.CaretPos.X
Но тогда не будет учитываться координата Y.
← →
Игорь Шевченко (2002-11-28 11:06) [5]Zero-based - значит первый символ имеет индекс 0
← →
sers (2002-11-28 11:47) [6]Спасибо. Но ситуацию это не пояснило. Как определяется значение третьего параметра в этом сообщении ?
Может проще самому - получать размер символов в пикселах и умновать кол-во символов на их размер ?
← →
Игорь Шевченко (2002-11-28 11:55) [7]Третий параметр - это позиция в тексте...Посимвольная...
← →
sers (2002-11-28 12:51) [8]Блин. Да не сообращу я никак. Что значит посимвольная ? Это номер символа ?
Вот первый текст.
Вот
второй
текст.
Посимвольная позиция точки и в том и в другом тексте одна и та же. Однако координаты различные.
Поясни пожалуйста.
← →
Игорь Шевченко (2002-11-28 13:01) [9]
> Вот
> второй
> текст.
Edit1.GetText (...)
Возвратит "Вот второй текст". Вот позиция символа в этой строке, с учетом того, что позиция первого символа равна 0 и есть параметр LParam в сообщении EM_POSFROMCHAR, определяющем координаты X и Y этого символа в Edit1
← →
sers (2002-11-28 17:00) [10]Все оказалось гораздо проще:
GetCaretPos(pnt);
где pnt : TPoint;
Страницы: 1 вся ветка
Текущий архив: 2002.12.09;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.008 c