Текущий архив: 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.48 MB
Время: 0.039 c