假如我有一个SpeedButton控件,它的Caption位于图片的下面。如果Caption的字符足够长,它将会自动截取两头字符。我想实现类似WINDOWS资源管理器的功能,就是显示不下的字符用省略号替代,当我的MOUSE点击在SpeedButton上的时候,它的省略号自动消除,显示全部的CAPTION。
这个问题我十分着急,望能够得到大家的帮助。

解决方案 »

  1.   

    可以用Hint特性實現嗎!
    Caption := ***;(縮寫)
    Hint := '';(全部);
    ShowHint := True;
      

  2.   

    加两个事件mousedown,mouseover,然后就很方便了。
      

  3.   

    有谁知道如何实现字体的大小与传统的width、height之间的转换?如果这个问题解决了,那剩下的事情也就好办了,我以前也想做类似的东西,可惜就是上面的算法不知道怎么做?
      

  4.   

    显示全部的CAPTION有什么意义呢,反正两头都被截去了,还不如用Hint完成这个功能
      

  5.   

    可以在图片上画呀,花了好长时间才完成以下代码,给你参考一下吧:
    procedure TForm1.SpeedButton1Click(Sender: TObject);
    var
      Rct:TRect;
    begin
      Rct:=SpeedButton1.BoundsRect;
      Rct:=Rect(0,0,Rct.Right-Rct.Left,Rct.Bottom-Rct.Top);
      SpeedButton1.Glyph.Width :=Rct.Right-Rct.Left;
      SpeedButton1.Glyph.Height:=Rct.Bottom-Rct.Top;
      DrawText(SpeedButton1.Glyph.Canvas.Handle,
               PChar('I Love You baby!'),
               Length('I Love You baby!'),
               Rct,
               DT_LEFT or DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS
               );//API其中DT_END_ELLIPSIS就是加“...”功能
    end;
      

  6.   

    to daniel007(添) :字体大小与Width、height的转换使用WM_FONTCHANGED配合WM_SIZE消息就可以实现!