Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
7 / 7 / 1
Регистрация: 04.03.2011
Сообщений: 87

TEdit не допустить пустое поле и запрет вставки из буфера

03.07.2013, 23:11. Показов 2621. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, помогите решить следующую проблему, пожалуйста.

Есть стандартный TEdit в который необходимо вводить числа.
Делаю так.
C++
1
 if((Key!=VK_BACK)&&(Key<'0'||Key>'9'))Key=0;
Как добиться того чтобы при удалении чисел в TEdit нельзя было удалить все числа, точнее при удалении всех автоматически будет 0. И второй вопрос. Как запретить вставку из буфера в TEdit.


Спасибо
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.07.2013, 23:11
Ответы с готовыми решениями:

Delphi 2010 - TEdit - запрет операций буфера обмена
Здравствуйте! У меня Delphi 2010 Мне нужно запретить буфер обмена в TEdit. Нашёл вот в интернете код TEditClipboard который TEdit с...

Запрет вставки из буфера в edit, без отключения shift
Нужно запретить вставку из буфера в edit, без отключения shift. Подскажите, как это осуществить в минимум действий

Запрет Ctrl C в TEdit
Добрый день! Подскажите, пожалуйста, как можно запретить сочетание клавиш Ctrl-C в TEdit? Просто сделать его Readonly не пойдет,...

5
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
03.07.2013, 23:57
C++
1
2
3
4
if(Edit1->Text.IsEmpty)
{
 Edit1->Text = "0";
}
0
7 / 7 / 1
Регистрация: 04.03.2011
Сообщений: 87
04.07.2013, 00:19  [ТС]
Так я пробовал уже . не работает. Для того чтобы работал этот вариант необходимо 2 раза нажимать бэкеспейс. По умолчанию у меня уже записан 0. Если один раз нажимаю бэкспейс он удаляется, но при этом новый ноль не появляется. Второй раз нажимаю - появляется 0.

Добавлено через 15 минут
А на какое событие вы цепляете этот код?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
04.07.2013, 00:21
Цитата Сообщение от ksv_uk Посмотреть сообщение
А на какое событие вы цепляете этот код?
EditChange
1
7 / 7 / 1
Регистрация: 04.03.2011
Сообщений: 87
04.07.2013, 00:23  [ТС]
Да, спасибо. Я цеплял на Edit1KeyPress, поэтому не работало.
Можно еще вопрос, как переместить каретку , чтобы она встала после нуля?

И возможно ли запретить вставку из буфера?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,901
Записей в блоге: 12
04.07.2013, 01:07
Лучший ответ Сообщение было отмечено volvo как решение

Решение

Цитата Сообщение от ksv_uk Посмотреть сообщение
возможно ли запретить вставку из буфера?
Возможно. Напиши наследника, с переопределенным методом WndProc:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Перед классом формы
namespace MyNamespace
{
     class TEdit : public Stdctrls::TEdit
     {
     public:
          inline __fastcall virtual TEdit(Classes::TComponent* AOwner) :
               Stdctrls::TEdit(AOwner) {}
     protected:
          virtual void __fastcall WndProc(Winapi::Messages::TMessage &Message)
          {
               if(Message.Msg != WM_PASTE)
                    Stdctrls::TEdit::WndProc(Message);
          }
     };
};
#define TEdit MyNamespace::TEdit
 
// Ну, а потом - то, что и было:
class TForm1 : public TForm
// ...
, если надо для всех Edit-ов на форме, или назначай свою оконную функцию, которая блокирует WM_PASTE, и пропускает все остальные сообщения (содержание ее будет практически таким же, как и в моем случае), определенному контролу через SetWindowLongPtr + GWLP_WNDPROC, примеры подобной подмены на форуме уже были... На Дельфи это делается вот так: Перехват сообщений
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.07.2013, 01:07
Помогаю со студенческими работами здесь

Ограничение ввода в TEdit и горячие клавиши копирования-вставки
Всем здравствуйте. Допустим мы ограничили ввод в текстовое окно редактирования так: void __fastcall TForm1::Edit3KeyPress(TObject...

Как очистить одно поле input если другое поле пустое
К примеру, я пишу какой-то текст в поле 1, у меня в скрытое поле2 присваивается id. Если я сотру (backspace) текст из поля 1, то должно...

Заполнить поле случайным числом, если другое соответствующее поле не пустое
est table. mne neobhodimo(v sql server) zapolnit pole 'Number_of_Reviews' sluchainimi chislami v diapazone ot 50 do 5000 pri uslovii chto...

Клик в пустое поле: Access считает, что поле перестало быть пустым
Ребяяяяяят!!! Добрый день! Скажите пожалуйста, когда на форме есть поле, значение которого передается через CurrentDb.Execute...

Как запретить пустое поле или кириллицу в поле?
Вечер добрый. Помогите разобраться. Как в поле запретить кириллицу или пустое поле. Пустое поле не проблема. А вот и то и другое не...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru