Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.018 c
1-28115
Брат
2002-11-28 14:22
2002.12.09
Как узнать открыта или закрыта в текущий момент форма?


1-27956
Переяслов Григорий
2002-11-27 16:47
2002.12.09
Версия Windows


14-28273
Dmitriy Polskoy
2002-11-19 09:39
2002.12.09
Логика Reget / FlashGet


14-28231
copyr25
2002-11-16 14:59
2002.12.09
В Исландию! Поздравьте меня!


6-28193
Azbul
2002-10-10 19:08
2002.12.09
проблема с WebBrowser