скрыть

скрыть

  Форум  

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

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



Google  
 

Как сделать, чтобы TEdit воспринимал одни цифры и DecimalSeparator



Сообщение в newsgroups:
Вопрос:
- Что такое RTFM?
Ответ:
- RTFM


type
  TNumEdit = class(TEdit)
    procedure CreateParams(var Params: TCreateParams); override;
    procedure KeyPress(var Key: Char); override;
end;

procedure register;

implementation

procedure register;
begin
  RegisterComponents('Standard', [TNumEdit]);
end;

procedure TNumEdit.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT;
end;

procedure TNumEdit.KeyPress(var Key: Char);
begin
  case key of
    '0'..'9': ; // цифры
    #8: ; // забой
    '.', ',':
      if Pos(DecimalSeparator, Text) = 0 then
        Key := DecimalSeparator
      else
        Key := #0; // десятичный разделитель
    else
      key := #0;
  end; // case
end;

end.






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook