Главная страница
    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.048 c
1-28129
FROM_X
2002-11-28 17:43
2002.12.09
Ну будте человеками Innerfuse Pascal Script кто знает ?


14-28212
Александр Павлов
2002-11-17 05:59
2002.12.09
FindFirst( Украина Донецк Гуру.MAN ,faНеРедиска, Delphi + Beer );


3-27855
Alexsandr (GEG)
2002-11-20 09:32
2002.12.09
Обновление данных в програме.


14-28244
Bboy tn
2002-11-14 23:16
2002.12.09
Запутался в корпусах


4-28332
Renat
2002-10-23 16:55
2002.12.09
С помощью какой API - функции можно вызвать из моей программы..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский