强贴,100分!TEdit目前只能显示单种颜色的字体,如何对TEdit进行改造,可以支持不同字体和颜色??

解决方案 »

  1.   

    基本上是改造不了的, 因为这是Windows的通用控件
    要不你可以自己从一个TCustomControl继承下来写一个。
    要不用RichEdit,来实现
      

  2.   

    TCustomControl继承要怎么写啊,老大帮忙一下吧
      

  3.   

    还有一种方法就是用GetDC的方法,再用一个画布,不过自己要做很多事情
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      tmpCanvas: TCanvas;
    begin
      tmpCanvas := TCanvas.Create;
      tmpCanvas.Handle := GetDC(Edit1.Handle);
      tmpCanvas.Font.Color := clRed;
      tmpCanvas.TextOut(0, 0, '我');
      tmpCanvas.Font.Color := clGreen;
      tmpCanvas.TextOut(10, 0, '是');
      tmpCanvas.Free;
    end;
      

  5.   

    duanhai(段海):
    这也太假了吧,太难控制了
      

  6.   

    我先前就说过了,控制起来的确是蛮难的,而且当窗体刷新的时候,
    你得重画一次,否则就没有了我想说的是,这样做也是可以达到一种效果,呵呵对于字符的位置,楼主可以用画的GetTextHeight方法来得到
    宽度也有相应的方法如果楼主想写一个好一点的,那跟
    linzhengqun(风。爱的翔舞)说的一样,还不如从TCustomControl继承一个下来
      

  7.   

    但其实并不简单,不是三两行代码可以搞定的。
    所以建议楼主用RichEdit吧,也可以做成和Edit一样,只能输入一行数据的。