Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 101
1

Авто перенос курсора в Richedit при достижении длины строки определенного числа символов.

02.02.2011, 20:52. Показов 2538. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вопрос - как в RichEdit эмулировать нажатие клавиши enter или просто осуществить перенос каретки при достижении длины строки 18 символов?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2011, 20:52
Ответы с готовыми решениями:

Перенос строки в Memo1 при достижении определённой длины строки
Здравствуйте. помогите. забуксовал. как правильно перенести строку в Memo1 при достижении...

Автоматический перенос на следующую строку в Textarea при достижении 30 символов
Всем привет, имеется текстовая область textarea, в нее вводиться текст, как можно сделать так,...

Как убрать перенос строки в конце RichEdit при вставке из буфера обмена
Здравствуйте, уважаемые форумчане! Подскажите пожалуйста: Копирую текст. Вставляю в своей...

Сигнал при достижении определенного времени
Доброе время суток. Есть программа, в которой задается начало урока. Допустим 8 часов, 30...

10
LK
Заблокирован
02.02.2011, 21:04 2
C++
1
2
3
4
// 1.
if (Key == VK_RETURN) {...}
// 2.
if (RichEdit1->Lines->Strings[i].Length()) == 18) {...}
C++
1
2
3
4
5
6
// например, в RichEditOnKeyUp
for (int i=0; i<RichEdit1->Lines->Count; i++) {
  if (RichEdit1->Lines->Strings[i].Length() == 18) {
    Key == VK_RETURN;   
  }
}
(не проверял).
0
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 101
02.02.2011, 21:11  [ТС] 3
Мне не выровнять надо текст а в процессе ввода чтобы переносилось. чтобы я не жал enter по достижении 18 символов
0
LK
Заблокирован
03.02.2011, 01:21 4
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::FormKeyPress(TObject *Sender, wchar_t &Key)
{
// в инспекторе указать для формы Form1->KeyPreview = true;
  for (int i=0; i<=RichEdit1->Lines->Count-1; i++) {
    if (i == (int)RichEdit1->CaretPos.y) {
      if (RichEdit1->Lines->Strings[i].Length() == 18) {
        RichEdit1->Lines->Strings[i] = RichEdit1->Lines->Strings[i]+"\n";
      }
    }
  }
}
Добавлено через 3 часа 3 минуты
Цитата Сообщение от Valery_
Мне не выровнять надо текст а в процессе ввода чтобы переносилось. чтобы я не жал enter по достижении 18 символов
Я долго думал... Наверное, за выравнивание было принято это :
C++
1
if (RichEdit1->Lines->Strings[i].Length() == 18)
?
0
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,064
28.04.2011, 09:42 5
Дабы не создовать новую тему, вопрос задам здесь.
Как из Edit1 после нажатия ентер перенести курсор в Edit2 а с Edit2 на Button1.
не по теме - понимаю что это азы, но...
0
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
28.04.2011, 09:45 6
Используй метод
C++
1
SetFocus()
1
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,064
28.04.2011, 09:49 7
Цитата Сообщение от Sasha Посмотреть сообщение
Используй метод
C++
1
SetFocus()
А во вкладке евент какой обработчик у нажатия клавиши ентер?
0
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
28.04.2011, 09:54 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 if (Key==VK_RETURN)
  {
   Edit2->SetFocus();
  }
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 if (Key==VK_RETURN)
  {
   Button1->SetFocus();
  }
}
Там в свойствах формы устанвливаешь KeyPrewiev = true;
1
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,064
28.04.2011, 10:39 9
Спасибо Саша!
А нажатие на кнопку "Tab" как упорядочить, ато фокус скачет как "конь в шахматах" а мнебы определенный порячдок переключения...
0
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
28.04.2011, 10:45 10
Правой клавишей на форме вызываешь контекстное меню.
Находишь пункт TabOrder.
И выставляешь там приоритет
1
Покинул форум
3187 / 1366 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
28.04.2011, 13:39 11
Samrisbe, за это отвечает свойство TabOrder у компонента. Переключение происходит по нарастающей (от компонента со значение TabOrder равным 0 к компонету со значение 1, 2 и т.д.)
0
28.04.2011, 13:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2011, 13:39
Помогаю со студенческими работами здесь

Остановка таймера при достижении определенного времени
вообщем реализовываю таймер и столкнулся с проблемсом мне нужно что бы в if как только таймер...

Сделать перенос строки при вводе определенного символа
Собственно, проблема. Нужно чтобы при вводе определённого количества символов пользователем...

Настройка оповещения при достижении таймером определенного момента
Доброго времени суток, коллеги. Есть некая форма, в которой есть 2 лейбла, кнопка и таймер....

Как при достижении определенного размера файла закрыть его
Доброй ночи! Сново я со своими вопросами.... Есть вечный цикл. Он себе работает и заполняет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru