我想用一个TMaskEdit组件来控制RichEdit中的字号procedure TForm1.MaskEdit1Change(Sender: TObject); begin RichEdit1.Font.Size:=StrToInt(MaskEdit1.Text);end;输入字号时:StrToInt(MaskEdit1.text)为什么会出错?提示“is not valid integer value"若用Tedit实现,怎么处理非法字符?有没有好的方法?
MaskEdit1的text属性的类型是TMaskedTest类型。用TEdit可以在它的KeyPress事件中处理非法字符,窗体的KeyPreview属性设置为Trueif (key in ['0'..'9']=false) and (word(key)<>vk_back) then key:=#0;
上面错了,是TMaskedText类型。
aiirii(ari) 的回答Very very Good! Thanks a lof!
你定义的是change事件,只要MaskEdit的text变化时该事件就执行,应该是你的MaskEdit中的Text中还有其他非数字字符,所以产生这个错误。你用以下程序处理非法字符 procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char); begin if not(Key in ['0'..'9']) then Key := #0; end;
S:STRING;
I:INTEGER;
.........
S:=TRIM(MASKEDIT1.TEXT);
TRY
I:=STRTOINT(S);
EXCEPT
I:=9;
END;
RichEdit1.Font.Size:=I;
key:=#0;
procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(Key in ['0'..'9']) then Key := #0;
end;