Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.16;
Скачать: CL | DM;

Вниз

Как установить коррдинаты курсора в МЕМО?   Найти похожие ветки 

 
tort   (2006-03-29 20:32) [0]

Вечер добрый! Мастера, как можно установить координаты текстового курсора в МЕМО относительно границ клиентской области?


 
Troan_81   (2006-03-29 20:54) [1]

Может, поможете разобраться, как работать с таким вот делом:
 memo1.CaretPos.X;
 memo1.CaretPos.Y;


 
tort   (2006-03-30 00:18) [2]

Неужели так сложно?


 
begin...end ©   (2006-03-30 08:36) [3]

> tort   (29.03.06 20:32)

> как можно установить координаты текстового курсора в МЕМО
> относительно границ клиентской области?

Если понимать вопрос буквально, то так: SetCaretPos(X, Y) (предварительно нужно будет передать memo-контролу фокус ввода).

А если предположить, что позиция курсора должна быть всё же не произвольной, а "привязанной" к ближайшему символу, то так: Memo.SelStart := LoWord(Memo.Perform(EM_CHARFROMPOS, 0, MakeLParam(X, Y))).


 
Troan_81   (2006-03-30 11:09) [4]

Доброе утро все мастерам!
begin...end большое тебе спасибо за сообщение! У меня только что-то не получилось :(  Я сначала предварительно передаю фокус ввода, потом пишу как ты мне подсказал.
Взглянь пожалуйста:

 memo1.setfocus;
 {Memo1.SelStart := LoWord(Memo1.Perform(EM_CHARFROMPOS, 0, MakeLParam(X, Y)));}


 
begin...end ©   (2006-03-30 11:17) [5]

> Troan_81   (30.03.06 11:09) [4]

Что именно не получилось, и что передаётся в качестве X, Y?


 
Troan_81   (2006-03-30 11:41) [6]

В качкестве Y,X я указываю координаты (10,10) соответственно для горизонтали и вертикали. В момент старта проги мемо как был так и остался.
Хочется реализовать работу как в паскале. Указать кооридинаты, откуда можно начинать печатать.


 
begin...end ©   (2006-03-30 11:48) [7]

> Troan_81   (30.03.06 11:41) [6]

(10, 10) — это координаты, выраженные в чём? В пикселях или в символах? Нужно установить курсор возле 10-го символа 10-й строки, или в точке с пиксельными клиентскими координатами (10, 10)?


 
Troan_81   (2006-03-30 11:53) [8]

В символах, должно быть :)
Вот мой кусок кода:


procedure TForm1.FormCreate(Sender: TObject);
var x,y: integer;
begin
 x:=10;
 y:=10;
 memo1.setfocus;
 Memo1.SelStart := LoWord(Memo1.Perform(EM_CHARFROMPOS, 0, MakeLParam(X, Y)));


 
begin...end ©   (2006-03-30 12:06) [9]

> Troan_81   (30.03.06 11:53) [8]
> В символах, должно быть

А приведённый мной код устанавливает курсор по заданным пиксельным координатам. И приведён он был потому, что изначально шла речь о клиентских координатах.

Если нужно "в символах", то можно использовать Memo.CaretPos := Point(X, Y).


 
Troan_81   (2006-03-30 12:14) [10]

Разберёмся еще разок, что мне надо.
Как я понимаю - пиксельные координаты - границы мигающего текстового курсора в Мемо. Значит, мне нужно указать, где (на каком месте) будет торчать мигающий курсор.


 
begin...end ©   (2006-03-30 12:50) [11]

> Troan_81   (30.03.06 12:14) [10]

> Как я понимаю - пиксельные координаты - границы мигающего
> текстового курсора в Мемо.

А я понимаю так: пиксельные координаты — это координаты, выраженные в пикселях. И если имелись в виду именно они, то см. [3].

А если имелись в виду "символьные" координаты (т.е. координаты, выраженные в виде номера строки и номера символа в ней), то см. [9].


 
Первокласник Вася   (2006-03-30 13:00) [12]


А я понимаю так: пиксельные координаты — это координаты, выраженные в пикселях. И если имелись в виду именно они, то см. [3].


Хорошо, тогда почему ничего не происходит? Курсор на месте торчит.


 
Troan_81   (2006-03-30 13:02) [13]

Первокоасник прав! Почему курсор на месте? Я так и не понял. Хотя метод Perform - ох как хорош собой и полезен как вишня, а олку почему-то нет :(


 
begin...end ©   (2006-03-30 13:10) [14]

> Первокласник Вася   (30.03.06 13:00) [12]

А у меня не торчит. Кладу на форму memo, в его обработчике OnMouseMove пишу такой код:

procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 with Sender as TMemo do
   SelStart := LoWord(Perform(EM_CHARFROMPOS, 0, MakeLParam(X, Y)));
end;

тыкаю в memo мышкой, и перемещаю курсор мыши. Каретка перемещается вслед за курсором.


 
Troan_81   (2006-03-30 13:14) [15]

Да... шаман однако :)
А как при появлении формы? Что бы автоматом курсор был например, чуть-чуть правее от положенного?



Страницы: 1 вся ветка

Текущий архив: 2006.04.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.068 c
2-1144053643
VAZMan
2006-04-03 12:40
2006.04.16
RadioButton


15-1143524367
Ega23
2006-03-28 09:39
2006.04.16
С Днём рождения! 28 марта


2-1144061876
Anatolik_
2006-04-03 14:57
2006.04.16
Уважаемые, подскажите есть в реестре ключик, хранящий дату


2-1143717287
fedpavel
2006-03-30 15:14
2006.04.16
DataSource


15-1142943346
Геро
2006-03-21 15:15
2006.04.16
Российские сотовые телефоны