Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 593

•  TDictionary Custom Sort  6 604

•  Fast Watermark Sources  6 372

•  3D Designer  9 324

•  Sik Screen Capture  6 706

•  Patch Maker  7 090

•  Айболит (remote control)  7 094

•  ListBox Drag & Drop  5 959

•  Доска для игры Реверси  97 506

•  Графические эффекты  7 297

•  Рисование по маске  6 588

•  Перетаскивание изображений  5 460

•  Canvas Drawing  5 830

•  Рисование Луны  5 542

•  Поворот изображения  5 061

•  Рисование стержней  3 627

•  Paint on Shape  2 866

•  Генератор кроссвордов  3 754

•  Головоломка Paletto  3 021

•  Теорема Монжа об окружностях  3 833

•  Пазл Numbrix  2 521

•  Заборы и коммивояжеры  3 223

•  Игра HIP  2 190

•  Игра Go (Го)  2 121

•  Симулятор лифта  2 503

•  Программа укладки плитки  2 150

•  Генератор лабиринта  2 637

•  Проверка числового ввода  2 305

•  HEX View  2 636

•  Физический маятник  2 258

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Ограничение TEdit на ввод не-цифровой информации



Автор: Михаил Шпанер

Встречаются три операционных системы:
- PC-DOS. Version 7.
- OS/2. Version 4. Merlin.
- А я Windows... Просто Windows.

Посылаю Вам несколько расширенный вариант числовой маски компонента TЕdit c помощью OnKeyPress. В отличие от имеющегося в "Советах", приведенный код не "запирает" поле ввода при заполнении десятичной части, преобразует точку в запятую (для удобства пользователя), не позволяет поставить десятичную запятую перед числом и позволяет стирать знаки в поле ввода клавишей 'Back Space'. Код проверен в Delphi 5.


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var //цифровая маска
  vrPos, vrLength, vrSelStart: byte;
const
  I: byte = 1;
    //I+1 = количество знаков после запятой (в данном случае - 2 знака)
begin

  with Sender as TEdit do
  begin
    vrLength := Length(Text); //определяем длину текста
    vrPos := Pos(',', Text); //проверяем наличие запятой
    vrSelStart := SelStart; //определяем положение курсора
  end;

  case Key of

    '0'..'9':
      begin
        //проверяем положение курсора и количество знаков после запятой
        if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then
          Key := #0; //"погасить" клавишу
      end;
    ',', '.':
      begin
        //если запятая уже есть или запятую пытаются поставить перед
        //числом или никаких цифр в поле ввода еще нет
        if (vrPos > 0) or (vrSelStart = 0) or (vrLength = 0) then
          Key := #0 //"погасить" клавишу
        else
          Key := #44; //всегда заменять точку на запятую
      end;
    #8: ; //позволить удаление знаков клавишей 'Back Space'
  else
    Key := #0; //"погасить" все остальные клавиши
  end;
end;





Похожие по теме исходники

Расширение компонента TEdit

Проверка числового ввода

Оптимальное кодирование информации




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте