![]() |
|
|
#1
|
|||
|
|||
|
Доброго времени суток!
не поддскажите как сделать ввод чисел с клавиатуры в memo? |
|
#2
|
||||
|
||||
|
А что не так? Печатаешь текст, появляется в мемо. Если нужно только чисел - можно например поставить обработчик onChange, где фильтровать ввод пользователя.
|
|
#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; |