Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 328
1

Перемещение каретки в поле Edit

28.08.2018, 18:04. Показов 3196. Ответов 14
Метки edit (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется поле ввода Edit1
Я вставляю заранее скопированный текст (например, "aaa") в Edit1 и малый регистр букв
должен перевестись в большой регистр букв, т.е. "aaa" в "AAA"
Возникает неприятный момент - каретка перескакивает в крайнее левое положение.
Что нужно сделать, что бы каретка была в конце строки?
Возможность копирования строки должна сохранятся, т.е. keybd_event(35,0,0,0) не использовать
Edit1->SelStart=i почему-то не помогает

Если вставлять "AAA", то каретка не прыгает в крайнее левое положение,
перемещение каретки связано с заменой символа в строке s.
Почему, ведь строка s никакого отношения к Edit1 не имеет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
  short n=Edit1->Text.Length();   //длина имеющейся строки Edit1
  char *s=new char[n+1];          //объявление переменной
  strcpy(s, Edit1->Text.c_str()); //строка из Edit1
  for(short i=0; i<n; i++)
  {
    if(s[i]=='a')s[i]='A';   //замена
  }
  Edit1->Text=AnsiString(s); //строку 's' в Edit1
  delete[]s;                 //удаление переменной
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.08.2018, 18:04
Ответы с готовыми решениями:

Перемещение каретки в консоли
Как это работает,как правильно написать это,я нашел кучу разных статей на эту тему ,все понял,но не...

Fstream перемещение каретки
Здравствуйте, не могу разобраться с классом fstream. Есть текстовый файл: 0 какие-то данные...

Перемещение каретки в указанные координаты
Доброе время суток, Подскажите как сдвинуть каретку в консоле на заданные координаты

Перемещение каретки мыши по координатам в Linux
Стоит Eclipse C/C++. Собираюсь сделать игру типа Adom, Dwarf Fortress, но мешает одно, не знаю как...

14
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
28.08.2018, 18:10 2
Цитата Сообщение от Инженер_3 Посмотреть сообщение
Edit1->SelStart=i почему-то не помогает
Так ты этого и не делаешь. Судя по исходнику.
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 328
28.08.2018, 19:28  [ТС] 3
Цитата Сообщение от Verevkin Посмотреть сообщение
Так ты этого и не делаешь. Судя по исходнику.
Делаю, но не помогает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
  short n=Edit1->Text.Length();   //длина имеющейся строки Edit1
  char *s=new char[n+1];          //объявление переменной
  strcpy(s, Edit1->Text.c_str()); //строка из Edit1
 
  for(short i=0; i<n; i++)
  {
    if(s[i]=='a'){s[i]='A'; Edit1->SelStart=i;} //замена
  }
  Edit1->Text=AnsiString(s); //строку 's' в Edit1
  delete[]s;                 //удаление переменной
0
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
28.08.2018, 19:30 4
Цитата Сообщение от Инженер_3 Посмотреть сообщение
Делаю, но не помогает
А может быть не надо это делать n раз? Да ещё и перед заменой текста.
Как-то неправославно это...
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 328
28.08.2018, 19:37  [ТС] 5
Цитата Сообщение от Verevkin Посмотреть сообщение
А может быть не надо это делать n раз? Да ещё и перед заменой текста.
Как-то неправославно это...
Вот так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
  short n=Edit1->Text.Length();   //длина имеющейся строки Edit1
  char *s=new char[n+1];          //объявление переменной
  strcpy(s, Edit1->Text.c_str()); //строка из Edit1
 
  for(short i=0; i<n; i++)
  {
    if(s[i]=='a')s[i]='A';   //замена
  }
 
  Edit1->Text=AnsiString(s); //строку 's' в Edit1
  Edit1->SelStart=n;         //установка каретки
  delete[]s;                 //удаление переменной
Да, каретка в конце строки, НО нельзя копировать из этой строки.
0
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
28.08.2018, 19:38 6
Цитата Сообщение от Инженер_3 Посмотреть сообщение
НО нельзя копировать из этой строки.
Delphi
1
Edit->SelectAll();
Забыл спросить: а зачем все эти несексуальные извращения?
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 328
28.08.2018, 19:42  [ТС] 7
Цитата Сообщение от Verevkin Посмотреть сообщение
Edit->SelectAll();
И куда эту строку вставить?
Я имел ввиду копирование - выделение текста строки, а потом Ctrl+Insert
0
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
28.08.2018, 19:45 8
Цитата Сообщение от Инженер_3 Посмотреть сообщение
И куда эту строку вставить?
В...
Цитата Сообщение от Инженер_3 Посмотреть сообщение
Я имел ввиду копирование - выделение текста строки, а потом Ctrl+Insert
Зачем всё это нужно? И зачем менять вставленный текст в визуальном компоненте, если проще поменять его прямо в памяти, а только потом вставить?
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 328
28.08.2018, 19:53  [ТС] 9
Цитата Сообщение от Verevkin Посмотреть сообщение
Зачем всё это нужно? И зачем менять вставленный текст в визуальном компоненте, если проще поменять его прямо в памяти, а только потом вставить?
Как пример, есть окно_1, в которой есть текст с прописными буквами, в нём копируем несколько букв и заносим в Edit1 в другом окне_2, там прописные буквы переводятся в заглавные буквы, все (или часть букв) копируем и возвращаем в окно_1.
0
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
28.08.2018, 19:58 10
Цитата Сообщение от Инженер_3 Посмотреть сообщение
сть окно_1, в которой есть текст с прописными буквами, в нём копируем несколько букв и заносим в Edit1 в другом окне_2, там прописные буквы переводятся в заглавные буквы, все (или часть букв) копируем и возвращаем в окно_1.
Омайгад! Зачем таскать вручную текст туда-сюда? Может выкинуть (пока не поздно) окно_2 и менять части текста прям там, где он находится, а?

Какой практический смысл всех этих телодвижений-то? Что у тебя на входе и что должно быть на выходе?

Перемещение каретки в поле Edit
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 328
28.08.2018, 20:01  [ТС] 11
Цитата Сообщение от Verevkin Посмотреть сообщение
Зачем таскать вручную текст туда-сюда? Может выкинуть (пока не поздно) окно_2 и менять части текста прям там, где он находится, а?
Это я в качестве примера привёл.
Значит по начальному вопросу ответ - так сделать нельзя.
Ладно, пусть каретка прыгает в левое крайнее положение..
0
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
28.08.2018, 20:07 12
Цитата Сообщение от Инженер_3 Посмотреть сообщение
Значит по начальному вопросу ответ - так сделать нельзя.
Я этого не говорил. Delphi/Builder - это мощная штука, в ней можно наворотить любой изврат или шедевр.
Но в данном случае мне вспоминается бородатый анекдот про кастрацию вместо обрезания.
Ну и матчасть, конечно же.
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 328
28.08.2018, 20:39  [ТС] 13
Нашёл решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
  short n=Edit1->Text.Length();   //длина имеющейся строки Edit1
  char *s=new char[n+1];          //объявление переменной
  strcpy(s, Edit1->Text.c_str()); //строка из Edit1
 
  for(short i=0; i<n; i++)
  {
    if(s[i]=='a')s[i]='A';   //замена
  }
  Edit1->Text=AnsiString(s); //строку 's' в Edit1
  delete[]s;                 //удаление переменной
 
  //Установка каретки в конец строки
  if(Key==VK_INSERT)Edit1->SelStart=n;
}
Копируем и вставляем через VK_INSERT
0
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
28.08.2018, 20:48 14
Цитата Сообщение от Инженер_3 Посмотреть сообщение
Нашёл решение
Сочувствую.
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 328
29.08.2018, 11:07  [ТС] 15
Цитата Сообщение от Verevkin Посмотреть сообщение
Сочувствую
Плохое решение? Чем?
Всё нормально работает!
0
29.08.2018, 11:07
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.08.2018, 11:07
Помогаю со студенческими работами здесь

Запрет ввода символов в поле Edit
Как запретить нажатие и вставку из буфера всех символов, кроме нужных мне, к примеру разрешить...

Перехват ошибки деления на ноль в поле Edit
Здравствуйте. У меня такой вопрос. Как можно перехватить ошибку деления на ноль, введенного в поле...

Как вывести текстовое поле БД Access в Edit?
начало здесь https://www.cyberforum.ru/ms-access/thread321693.html Да ты прав, но появилась новая...

Неправильное положение каретки в поле EDIT
Здравствуйте, уважаемые форумчане. Столкнулся с проблемой, даже не знаю как правильно ее назвать в...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru