Форум: "Основная";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
ВнизПриветствую Мастеров! Как в ТМемо сдвинуть курсор в конец строки? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c