
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.175] |
![]() |
|
Сообщ.
#1
,
|
|
|
Пусть есть число в Edit "555555". Курсор стоит справа после вбивания этих чисел вручную.
Если после этого изменить значение именно программно - курсор оказывается именно слева от числа. Как задать правое положение, без нарушения ручного ввода? Пробовал SelText или что-то похожее - мешает при ручном вводе, постоянно отодвигая курсор вправо. |
Сообщ.
#2
,
|
|
|
Ап.
|
Сообщ.
#3
,
|
|
|
Нет решения.
|
Сообщ.
#4
,
|
|
|
Сергей85, если какому-нибудь Эдиту поменять содержимое (любым способом), то его паренту
будет направлено уведомление об этом. В оконную процедуру. По этому уведомлению можно: 1. Считать строку, узнать размер текста. 2. Сдвинуть курсор на нужную позицию. Например, в конец строки. |
Сообщ.
#5
,
|
|
|
"Сдвинуть курсор на нужную позицию" - если бы это можно было сделать - вопроса бы не было.
|
Сообщ.
#6
,
|
|
|
http://www.cyberforum.ru/delphi-beginners/thread329624.html
Добавлено ![]() ![]() procedure TForm1.Button1Click(Sender: TObject); var S : String; i : Integer; begin Edit1.Text := '1234567890'; Edit1.SetFocus; //Установить курсор перед первым символом. Edit1.SelStart := 0; Edit1.SelLength := 0; //Задержка в 2 секунды - для того, чтобы пользователь успел увидеть //где теперь расположен курсор. for i := 1 to 100 do begin Application.ProcessMessages; Sleep(20); end; //Установить курсор перед вторым символом. Edit1.SelStart := 1; Edit1.SelLength := 0; for i := 1 to 100 do begin Application.ProcessMessages; Sleep(20); end; //Установить курсор перед вторым символом. Edit1.SelStart := 1; Edit1.SelLength := 0; for i := 1 to 100 do begin Application.ProcessMessages; Sleep(20); end; //Установить курсор перед пятым символом. Edit1.SelStart := 4; Edit1.SelLength := 0; for i := 1 to 100 do begin Application.ProcessMessages; Sleep(20); end; //Установить курсор перед последним символом. Edit1.SelStart := Length( Edit1.Text ) - 1; Edit1.SelLength := 0; for i := 1 to 100 do begin Application.ProcessMessages; Sleep(20); end; //Установить курсор после последнего символа. Edit1.SelStart := Length( Edit1.Text ); Edit1.SelLength := 0; end; Добавлено Пробовал юзать данное свойство? |
Сообщ.
#7
,
|
|
|
Цитата Сергей85 @ "Сдвинуть курсор на нужную позицию" - если бы это можно было сделать - вопроса бы не было. Насколько я помню: ![]() ![]() // если pos1 = pos2, тогда курсор переместиться на указанную позицию (счёт с 0) ::SendMessage(hwndEdit,(UINT)EM_SETSEL,(WPARAM)(pos1),(LPARAM)pos2); |
Сообщ.
#8
,
|
|
|
Вот почему-то именно сейчас SelStart сработало. Другая машина, другой проект.
|