大家好,
最近面试时遇到一个难题:如何让一个Label标签的Caption上的一部分文字显示为一种字体,另外一部分显示为另外一种字体?
而且要写一个控件实现这种功能。请高手加入讨论,给些相关提示,信息和链接都行啊。

解决方案 »

  1.   

    delphi自带的Label好像不能,我觉得最简的方法是用两个Lable,并在一起
      

  2.   

    这样可以:
    设Label1的AutoSize为false
    设Label1的Caption为''
    设Label1的Width为100
    设Label1的Height为50
    然后用以下程序
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Label1.Canvas.TextOut(10,10,'aaa');
    Label1.Canvas.Font.Name:='黑体';
    Label1.Canvas.Font.Size:=20;
    Label1.Canvas.TextOut(50,10,'aaa');
    label1.Update;
    end;
      

  3.   

    以下是完整的程序,你可以看看效果:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Label1.AutoSize:=false;
    Label1.Caption:='';
    Label1.Width:=120;
    Label1.Height:=80;
    Label1.Update;
    Label1.Canvas.Font.Name:='宋体';
    Label1.Canvas.Font.Size:=12;
    Label1.Canvas.TextOut(10,10,'我们');
    Label1.Canvas.Font.Name:='黑体';
    Label1.Canvas.Font.Size:=20;
    Label1.Canvas.TextOut(50,10,'你们');
    end;
      

  4.   

    两个label连在一起就可以了啊
      

  5.   

    keiy() 提供的方法最小化恢复后字就没有了,怎么解决?
      

  6.   

    办法不是没有,变通一下,这样label1永远有效
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Label1.AutoSize:=false;
    Label1.Visible:=false;
    Label1.Caption:='';
    Label1.Width:=120;
    Label1.Height:=80;
    end;
      

  7.   

    少贴部分程序
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Label1.AutoSize:=false;
    Label1.Visible:=false;
    Label1.Caption:='';
    Label1.Width:=120;
    Label1.Height:=80;
    end;procedure TForm1.FormPaint(Sender: TObject);
    begin
    Label1.Canvas.Brush.Color:=color;
    Label1.Canvas.Font.Name:='宋体';
    Label1.Canvas.Font.Size:=12;
    Label1.Canvas.TextOut(10,10,'我们');
    Label1.Canvas.Font.Name:='黑体';
    Label1.Canvas.Font.Size:=20;
    Label1.Canvas.TextOut(50,10,'你们');end;
      

  8.   

    我在d6下测试没问题,(在FormCreate里设lable的参数,在FormPaint中显示)
    当然,用第三方控件也是一种选择