Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Вниз

Координаты курсора в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-28113
SmashFX
2002-11-28 13:33
2002.12.09
работа с записью


1-28053
Сутковой Вадим
2002-11-27 16:33
2002.12.09
Раскладка клавы.


3-27824
Карелин Артем
2002-11-15 11:02
2002.12.09
Как вам такой запрос???


4-28348
DDS
2002-10-28 11:05
2002.12.09
Как поставить ассоциацию TXT файлов намою прогу.


3-27877
Oleon
2002-11-20 10:53
2002.12.09
Шаблоны платежных документов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский