请问怎么在 Gauge 上面输出文字呢?

解决方案 »

  1.   

    在 Gauge 上放一个 TLabel 。
      

  2.   

    liyinwei(月夜彩虹) 
    还有其他方法吗?hongqi162(失踪的月亮)
    表示进度的控件,和 Win32 页上的进度条相比好像能显示百分比。
    在 Sample 页
      

  3.   

    1st class 里有个
    fcProgressBar1这个比较好,这个组件包很实用
      

  4.   

    hongqi162(失踪的月亮)
    谢谢推荐。我想能在尽量不用第三方控件的情况下实现
      

  5.   

    方法应该有好几个。
    1。用lable覆盖来实现等效效果。
    2。第三方控件
    3。自己继承该控件并覆盖其Paint方法。
    4。拦截WM_PAINT消息,然后自己用Canvas写方法画。至于拦截的方式也有很多。比如WindowProc消息替换。
    可能还有更多。
      

  6.   

    3。自己继承该控件并覆盖其Paint方法。
    4。拦截WM_PAINT消息,然后自己用Canvas写方法画。至于拦截的方式也有很多。比如WindowProc消息替换。这两个看似符合我的需要。能谈一下具体该怎样做吗?我是新手,不太了解类的概念,至于继承,覆盖,冲载等等更是迷糊。
      

  7.   

    第3种方法,给你个示例参考一下:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Gauges;type  TMyGauge = class(TGauge)
      protected
        procedure Paint; override;
      end;  TForm1 = class(TForm)    procedure FormCreate(Sender: TObject);
      private
        Gauge1:TMyGauge;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TMyGauge }procedure TMyGauge.Paint;
    begin
      inherited;
      Canvas.TextOut(1, 1, 'Hello');
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin  Gauge1 := TMyGauge.Create(Self);
      with Gauge1 do
      begin
        Parent := Self;
        SetBounds(20, 20, 200, 20);
        Show;
      end;end;end.
      

  8.   

    to keyz(keyz)
    非常感谢!我再根据你的代码修改一下就达到我的要求了。
    还有两个问题,当然,这个已经和本主题无关了。如果你乐意 义务的讲解一下。小弟感激不尽。
    TMyGauge = class(TGauge)
    protected
    procedure Paint; override;
    end;1 为什么放在 protected 域呢? private 或者 public 不行吗?
    2 为什么用到 override,在什么场合应该用这个关键字呢?
    to 其他朋友。
    谢谢你们的献计献策。
      

  9.   

    1,如果你只是在这个类使用,可以放到任何地方。
    private,只有本类可见。
    protected,继承的子类可见。
    public,其他类可以调用,都可见。2,用override,重载父类的方法。如果父类的方法同名,且为虚函数或者动态函数。子类需要覆盖父函数。使用override。
    这个你可能需要找一本讲OO的书看,会讲的比较透彻。
      

  10.   

    keyz(keyz) 
    谢谢,谢谢!