我想用一个TMaskEdit组件来控制RichEdit中的字号procedure TForm1.MaskEdit1Change(Sender: TObject);
begin   RichEdit1.Font.Size:=StrToInt(MaskEdit1.Text);end;输入字号时:StrToInt(MaskEdit1.text)为什么会出错?提示“is not valid integer value"若用Tedit实现,怎么处理非法字符?有没有好的方法?

解决方案 »

  1.   

    VAR
      S:STRING;
      I:INTEGER;
    .........
      S:=TRIM(MASKEDIT1.TEXT);
      TRY
        I:=STRTOINT(S);
      EXCEPT
        I:=9;
      END;
      RichEdit1.Font.Size:=I;
      

  2.   

    修改如下吧:RichEdit1.Font.Size:=StrToIntDef(MaskEdit1.Text, 8);
      

  3.   

    MaskEdit1的text属性的类型是TMaskedTest类型。用TEdit可以在它的KeyPress事件中处理非法字符,窗体的KeyPreview属性设置为Trueif  (key in ['0'..'9']=false) and (word(key)<>vk_back) then
      key:=#0;
      

  4.   

    上面错了,是TMaskedText类型。
      

  5.   

    aiirii(ari) 的回答Very very Good! Thanks a lof!
      

  6.   

    你定义的是change事件,只要MaskEdit的text变化时该事件就执行,应该是你的MaskEdit中的Text中还有其他非数字字符,所以产生这个错误。你用以下程序处理非法字符
    procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not(Key in ['0'..'9']) then Key := #0;
    end;