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

Вниз

Приветствую Мастеров! Как в ТМемо сдвинуть курсор в конец строки?   Найти похожие ветки 

 
IronHawk ©   (2003-07-07 19:26) [0]

Вот тут подсказали вариант, но он громоздкий, помню раньше как-то одной строкой всё делалось, а теперь оптимум вот этот код:
var
P: PChar;
begin
with Memo1 do
begin
SelLength := 0;
P := PChar(Lines.Text) + SelStart;
while not (P^ in [#10, #26]) do
begin
P := P + 1;
SelStart := SelStart + 1;
end;
end;

Подскажите старый вариант ПЛИЗЗЗ.


 
Song ©   (2003-07-07 19:31) [1]

EM_LINEINDEX - надёшь смещение следующей строчки, потом вычитаешь 2 байта, этим находишь индекс конца предыдущей.


 
IronHawk ©   (2003-07-07 19:32) [2]


> Song © (07.07.03 19:31)

Ты явно смеешься, это тоже как минимум 3-4 строки...


 
Ученик ©   (2003-07-07 19:35) [3]

SendMessage(Memo1.Handle, wm_keydown, vk_end, 0)


 
Song ©   (2003-07-07 19:37) [4]

2IronHawk © (07.07.03 19:32)
Ну так здесь надо выбрать: программирование или извращение.


 
IronHawk ©   (2003-07-07 19:44) [5]


> Ученик © (07.07.03 19:35)

8-/
8-О
Это что-то новое!

> Song © (07.07.03 19:37)

Мне надо программирование без извратов!
Ну ведь помнил же!

Там вроде через TStringList...


 
Ученик ©   (2003-07-07 19:56) [6]

>IronHawk © (07.07.03 19:44)
Очередной претендент на 700 тем ? :-)


 
Babay ©   (2003-07-08 06:33) [7]

А может так?
Memo1.selStart:=Length(memo1.text);


 
BillyJeans ©   (2003-07-08 09:08) [8]

PostMessage(Memo1.Handle, WM_KEYDOWN, 35, 17);


 
IronHawk ©   (2003-07-08 11:12) [9]


> Ученик © (07.07.03 19:56)

Не на 700 тем, а на 2-3 точных ответа!

А ты что, мой ярый поклонник, и читал ту ветку?

> Babay © (08.07.03 06:33)

Что-то тип такого...

> BillyJeans © (08.07.03 09:08)

Блин, Сонг №2, Вы чуть что, всё через меседжи, да там проще как-то было определялась строка, а потом делался переход курсором в её конец.


 
IronHawk ©   (2003-07-08 12:06) [10]

Ок, есть номер строки, как найти сколько символов в ней?
Как мне передвинуться в этой сроке курсор и поставить его после последнего символа?



 
Radionov Alexey ©   (2003-07-08 12:18) [11]

>IronHawk © (08.07.03 12:06)
Var P : TPoint;
Idx : Integer; // Известный номер
begin
P.Y := Idx;
P.X := Length(memo1.Lines[P.Y]);
Memo1.CaretPos := P;
end;


 
Radionov Alexey ©   (2003-07-08 12:19) [12]

Только не забудь назначить Idx. Первая строка имеет индекс 0


 
IronHawk ©   (2003-07-08 12:20) [13]


> Radionov Alexey © (08.07.03 12:18)

О, уже что-то!
И без всяких сенд меседжей!


 
Radionov Alexey ©   (2003-07-08 12:24) [14]

>IronHawk © (08.07.03 12:20)
Ну да, как же "без меседжей" :)

procedure TCustomMemo.SetCaretPos(const Value: TPoint);
var
CharIdx: Integer;
begin
CharIdx := SendMessage(Handle, EM_LINEINDEX, Value.y, 0) + Value.x;
SendMessage(Handle, EM_SETSEL, CharIdx, CharIdx);
end;




 
MBo ©   (2003-07-08 12:25) [15]

одна длинная строка - то, что Song прописал ;)
with Memo1 do SelStart:=Perform(EM_LineIndex,1+Perform(EM_LineFromChar,SelStart,0),0)-2;


 
IronHawk ©   (2003-07-08 12:29) [16]


> MBo © (08.07.03 12:25)

Тоже супер,
Я так думаю, чтоль FAQ попутно писать?

Song
MBo
Radionov Alexey

Благодарствую!


 
IronHawk ©   (2003-07-08 12:57) [17]


> MBo © (08.07.03 12:25)

Супер, то что доктор прописал!



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

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

Наверх




Память: 0.5 MB
Время: 0.016 c
14-68024
Dmitriy O.
2003-07-04 08:08
2003.07.21
Наставления злобного юзера.


7-68077
Vicheslav
2003-05-04 15:32
2003.07.21
Flash Drive USB Win2K как ним работать?


1-67906
Sword-Fish
2003-07-08 12:32
2003.07.21
Создание кнопки


1-67892
Fantasy
2003-07-07 14:23
2003.07.21
ошибка в EHLib


1-67870
Yojik
2003-07-07 10:15
2003.07.21
Unicod - сравнение кодовых таблиц