最好举个例子,谢谢!

解决方案 »

  1.   

    改造HINT的输出方式 
        Delphi为每个可视构件(而非快速按钮专属)都提供了Hint  
    及ShowHint特性,其中Hint属性指定文本提示盒中的文本,  
    而ShowHint属性则决定鼠标指向构件时是否显示文本提示盒,  
    当ShowHint值为True时,显示文本提示盒。用户可在对象监  
    视器(ObjectInspector)的属性栏中设置或在程序中修改Hint  
    及ShowHint属性。  
        除此之外,Delphi还在类TApplication中提供了  
    HintColor、HintPause、HintHidePause、HintShortPause几  
    个属性来控制文本提示盒的输出方式。  
        一般来说,HintColor、HintPause、HintHidePause、  
    HintShortPause通常在Form的OnCreate事件中设定它们的值  
    (如有需要的话),如以下的一段程序。  
        ProcedureTMainForm.FormCreate(Sender:TObject);  
        begin  
        Application.HintPause:0;{使文本提示盒立即出现}  
        Application.HintPause:clBlue;{以蓝色小方框的  
    方式出现}  
        Application.HintHidePause:10000;{延长停留时间  
    为10秒}  
        Application.HintShortPause:100;  
        end;  
        另外,在编程中,我们还可以通过TApplication的OnHint  
    事件获取鼠标指向构件的Hint文本。  
        事实上,Delphi提供的文本提示盒输出方框、文本字型都  
    太小,既不美观亦不易看清。值得庆幸的是,Delphi2.0版提  
    供了全部构件的源代码,我们可以通过对类TApplication的  
    源码作一些小修改,增加一个HintFont的属性,即可象修改  
    HintColor一样来修改文本提示盒的字体、字型大小等。  
        TApplication是在Forms单元里定义的,因此让我们打开  
    Forms.pas单元文件来作以下一些修改:  
        ProcedureSetHintColor(Value:TColor};  
        ProcedureSetHintFont(Value:TFont);  
    {1997.04.19Mynewidea}  
        PropertyHintColor:  
    TColorreadFHintColorWriteSetHintColor;  
        PropertyHintFont:TFontwriteSetHintFont;  
    {1997.04.19Mynewidea}  
        ProcedureTApplication.SetHintColor(Value:Color);  
    上增加一个过程  
        {1997.04.19Mynewidea}  
        ProcedureTApplication.SetHintFont(Value:TFont);  
        beginif(Value nil)and(FHinWindow nil)then  
        FHintWindow.Canvas.Font:Value;  
        end;{1997.04.19Mynewidea}  
        别忘了在新增的语句旁作一些必要的注释,如上面的  
    {1997.04.19Mynewidea},可以很清楚地知道哪些语句是你  
    自己加进去的。  
        将修改后的Forms.pas存盘,然后重建库文件,以后在  
    你的库文件里,类TApplication就多了一个属性HintFont,  
    你就可以很轻易的通过HintFont属性来修改文本提示盒的字  
    体、字型大小了,如以下一段程序:  
        ProcedureTMainForm.FormCreate(Sender:TObject);  
        Var  
        NewHintFont:TFont.Create;  
        begin  
        NewHintFont:TFont.Create;  
        NewHintFont.Name:′楷体-GB2312′;{设置字体为  
    楷体}  
        NewHintFont.Size:12;{设置字型大小为12}  
        Application.HintFont:NewHintFont;  
        end;  
        此外,Delphi绘制文本提示盒是在类THintWindow的方法  
    ActivateHint中通过WindowsAPI资源函数SetWindowPos来实  
    现的,这段代码在Controls.pas单元文件里,有兴趣的读者  
    可以进一步修改这段代码以绘制其他任意形状(如椭圆、圆等)  
    而不仅仅是矩型方框的文本提示盒!但或许最好的方法是从类  
    THintWindow继承下来一个新类,并重载ActivateHint方  
    法,然后在应用程序开始处给变量HintWindowClass指派一个  
    新类实例.
      

  2.   

    to lion_lh(xmanx):谢谢!将修改后的Forms.pas存盘,然后重建库文件
    -------------------------------------
    怎么来重建库文件,望指点!
      

  3.   

    to wsz1995(你好) :谢谢!
    能告诉我怎么来创建ThintWindow实例么?我不会啊!
      

  4.   

    //系统提示帮助
    Application.HintColor := clInfoBk; //clYellow,clLime
    if not Application.ShowHint then
      Application.ShowHint := True;
      

  5.   

    to  tongdings(痛定):谢谢你!我是想让HINT提示的字体变颜色,用什么办法呢?
      

  6.   

    application.HintColor:=rgb(255,150,80) ;
      

  7.   

    to lihongyue (虚怀若谷)  :
    不好意思,刚看到,
    这样吧,我这儿有篇文章其中有介绍这个的,
    如需要,请告诉E-mail我给你发过去。格式pdf
      

  8.   

    wsz1995(你好) :非常感谢![email protected]
      

  9.   

    dongfang73(东方) :谢谢!wsz1995(你好) :谢谢,正在接收,有没有收获都会给分的。
      

  10.   

    wsz1995(你好) :谢谢你,我会好好研究的。
      

  11.   

    嗬嗬,建议不要更改VCL的本身结构和数据。可以通过外部数据来实现,另外,可以自己编写合适hint啊。
      

  12.   

    to  reallike(爱翔) :谢谢指点!更改VCL本身结构和数据是不是会有什么影响?我想请教一下,怎么通过外部数据来实现?我不懂啊,谢谢!
      

  13.   

    wsz1995(你好) 你好,
    可以给我一份吗?
      

  14.   

    简单的说: 从ThintWindow继承下一个类, 在子类的属性中设置字体的COLOR,
    type
       Tmyhintwindow = class(Thintwindow)
    ....
    在构建函数中设置Font.color
    然后在程序里的
    initialization部分
    Application.showhint := false;
    hintwindowsclass := 从ThintWindow继承下的类;
    application.showhint := true;
    end;
      

  15.   

    to wl3c(卧龙) :谢谢支持!to wsz1995(你好) :再次表示感谢!
      

  16.   

    to lihongyue(虚怀若谷) 
    to wl3c(卧龙) 
    你们好邮件已发出请查收,
      

  17.   

    要改变字体,需重构THintWindow类。
    具体可参考lion_lh(xmanx)兄的方法。
      

  18.   

    补充一点,最好不要改变vcl内部结构及其代码。
    重构THintWindow类
      

  19.   

    源代码是这样的请大家审查
    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    type
      TMyHintWindow = class(Thintwindow)
      protected
        procedure Paint; override;
      end;
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    var
      Form1: TForm1;
    implementation
    {$R *.dfm}
    procedure TMyHintWindow.Paint;
    var
      R: TRect;
    begin
      R := ClientRect;
      Inc(R.Left, 2);
      Inc(R.Top, 2);
      Canvas.Font.Color := $0000FF00;//clgreen
      DrawText(Canvas.Handle, PChar(Caption), -1, R, DT_LEFT or DT_NOPREFIX or
        DT_WORDBREAK or DrawTextBiDiModeFlagsReadingOnly);
    end;
    initialization
      application.ShowHint := false;
      HintWindowClass := TMyHintWindow;
      application.ShowHint := true;
    end.