![]() |
|
#1
|
|||
|
|||
![]() Доброго времени суток!
не поддскажите как сделать ввод чисел с клавиатуры в memo? |
#2
|
||||
|
||||
![]() А что не так? Печатаешь текст, появляется в мемо. Если нужно только чисел - можно например поставить обработчик onChange, где фильтровать ввод пользователя.
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
||||
|
||||
![]() Вот пример кода фильтрующего числа для Edit (LabeledEdit у меня). Не очень понимаю для чего в калькуляторе Memo, но по аналогии можно сделать. В событии OnKeyPress я написал такой код.
Код:
procedure TForm1.LabeledEdit1KeyPress(Sender: TObject; var Key: Char); begin If Not( (Key In ['0'..'9']) Or (Key=#8) Or ((Key=DecimalSeparator) And (AnsiPos(DecimalSeparator, LabeledEdit1.Text)=0) And (LabeledEdit1.Text<>'')) ) Then Key:=#0; end; Чем больше знаешь, тем сильнее осознаёшь, что знаешь гораздо меньше, чем не знаешь!.. Последний раз редактировалось DelphiM0ZG, 09.12.2011 в 13:31. |
#4
|
|||
|
|||
![]() Процедурка:
Код:
procedure StringFormat(aEdit:TMemo; CharAllo: array of Char; MaxCharCount:Byte); var i,j:byte; Result:ShortString; begin Result:=''; for i:=1 to Length(aEdit.Text) do for j:=0 to Length(CharAllo) do if aEdit.Text[i]=CharAllo[j] then begin Result:=Result+aEdit.Text[i]; break; end; Delete(Result, MaxCharCount+1, Length(Result)-MaxCharCount); if Result='' then Result:=CharAllo[0]; aEdit.Text:=Result; aEdit.SelStart:=MaxCharCount+1; aEdit.SelLength:=1; end; Использовать? Код:
procedure TForm1.Edit3Change(Sender: TObject); var CA: array [0..9] of Char; i:byte; begin for i:=0 to 9 do CA[i]:=Char(48+i); StringFormat(TEdit(Sender),CA,3); end; |