Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2009, 05:54   #1
EdNovice
Пользователь
 
Регистрация: 13.04.2007
Сообщений: 65
По умолчанию TMemo OnKeyDown

Есть необходимость написать класс на основе TMemo который будет выводить только цифры, игнорируя ножатие других клавиш.
Есть код:

Код:
TEditForCalc = class(TMemo)
  private
    procedure EditForCalcKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  public
    constructor Create(AOwner: TComponent); override;
  end;

constructor TEditForCalc.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  self.Parent := AOwner as TWinControl;
  self.Alignment := taRightJustify;
  self.OnKeyDown := self.EditForCalcKeyDown;
  self.TabOrder := 0;
  self.Height := 21;
  self.Width := 233;
end;

procedure TEditForCalc.EditForCalcKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (Key >= 96) and (Key <= 105) then
  begin
     .......
  end
  else
  begin
    Key := 0;
  end;
end;
При возникновении события OnKeyDown при нажатии клавиши с Key < 96, Key переписывается, а в TMemo буква отображается. Как это исключить?

Заранее благодарен!

Последний раз редактировалось Stilet; 22.01.2009 в 09:41.
EdNovice вне форума Ответить с цитированием
Старый 22.01.2009, 07:42   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Можно еще активировать событие OnKeyPress и там прописать (если нужно отображать только цифры) :
Код:
procedure TEditForCalc.EditForCalcKeyPress(Sender: TObject; var Key: Char);
begin
if (Key in['0'..'9']) then begin
......
end
else
begin
Key := #0;
end;
end;
... и будут вводиться только цифры, или изменить условие на (Key in['0'..'9','.']) и будут только цифры и точка - для десятичного ввода ,например ....
Здесь не забудьте про #0 , а не просто 0
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помощь в событии onkeydown Titan123 Общие вопросы Delphi 2 11.08.2008 17:26
KOL onkeydown формы Simply-Art Помощь студентам 2 29.07.2008 17:22
TMemo terminadoor Помощь студентам 10 23.07.2008 19:41
Tmemo BlackOmen Общие вопросы Delphi 2 16.03.2008 21:03
Помогите разобраться с процедурой OnKeyDown!!! frai Общие вопросы Delphi 9 13.04.2007 15:46