На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Неправильное положение курсора в поле Edit. , Borland C++ Builder v.6.0.
    Пусть есть число в Edit "555555". Курсор стоит справа после вбивания этих чисел вручную.

    Если после этого изменить значение именно программно - курсор оказывается именно слева от числа.

    Как задать правое положение, без нарушения ручного ввода?

    Пробовал SelText или что-то похожее - мешает при ручном вводе, постоянно отодвигая курсор вправо.
      Ап.
        Нет решения.
          Сергей85, если какому-нибудь Эдиту поменять содержимое (любым способом), то его паренту
          будет направлено уведомление об этом. В оконную процедуру.
          По этому уведомлению можно:

          1. Считать строку, узнать размер текста.
          2. Сдвинуть курсор на нужную позицию. Например, в конец строки.
          Сообщение отредактировано: ЫукпШ -
            "Сдвинуть курсор на нужную позицию" - если бы это можно было сделать - вопроса бы не было.
              http://www.cyberforum.ru/delphi-beginners/thread329624.html

              Добавлено
              ExpandedWrap disabled
                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;


              Добавлено
              Пробовал юзать данное свойство?
                Цитата Сергей85 @
                "Сдвинуть курсор на нужную позицию" - если бы это можно было сделать - вопроса бы не было.

                Насколько я помню:
                ExpandedWrap disabled
                  // если pos1 = pos2, тогда курсор переместиться на указанную позицию (счёт с 0)
                  ::SendMessage(hwndEdit,(UINT)EM_SETSEL,(WPARAM)(pos1),(LPARAM)pos2);
                  Вот почему-то именно сейчас SelStart сработало. Другая машина, другой проект.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0249 ]   [ 16 queries used ]   [ Generated: 29.03.24, 02:33 GMT ]