15.09.2018, 18:23
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Выводи в TLabel, а клаву отлавливай на уровне формы.
Код:
// Вывод времени. У Label1 поставить Align=alRight
// Кондово, но должно работать.
procedure TForm1.InputTime(N : Integer);
var
s, t : String;
I : Integer;
begin
If (N >= 0) And (N <=10) Then
Begin
s := StringReplace(Label1.Caption,':','',[srReplaceAll]);
If N = 10 Then
Begin
If s <> '' Then s := Copy(s,1,length(s)-1);
End
Else
Begin
If Length(s) < 6 Then s := s + IntToStr(N);
End;
t := ''
For I := Length(s) DownTo 1 Do
Begin
t := s[i] + t;
If (Length(t) = 2) Or (Length(t) = 5) Then t := ':' + t;
End;
Label1.Caption := t;
End;
end;
// Обработчик кнопок. Назначить всем кнопкам 0-9 и забой.
// Каждой кнопке указать в св-ве Tag соответсв. значение (0-9
// для цифр, 10 - для забой)
procedure TForm1.KeyButtonClick(Sender : TObject)
begin
InputTime((Sender As TButton).Tag);
end;
// Обработчик для клавиатуры. У формы поставить свойство
// KeyPreview:=True
procedute TForm1.FormKeyPress(Sender : TObject; var Key : Char);
begin
If Key In ['0'..'9'] Then InputTime(StrToInt(Key))
Else If Key = #8 Then InputTime(10); // #8 - забой, если не ошибаюсь.
end;
|