2008-11-18 47 views
8

關於輸入驗證,我使用氣球提示而不是消息框。 我的問題是,在Vista上,他們有圓角的舊XP風格,而不是外觀更新的更多矩形。如何在Delphi中顯示Vista風格的氣球提示?

我已經嘗試使用CreateWindowEx和tooltips_class32創建它們,或者使用SendMessageW和EM_SHOWBALLOONTIP顯示編輯的關聯balloontip,結果是相同的。 在Visual Studio和C#中做同樣的事情會產生Vista風格的氣球提示。

當您在密碼編輯中切換大寫鎖定時,您可以看到我需要的氣球提示示例,例如Windows登錄中的大寫提示。

回答

3

正如可以在Delphi 2009 reviewers guide中看到的,每個VCL組件現在都有一個CustomHint屬性。它可以設置爲TCustomHint的任何後代。

一定要在Vista中啓用baloon提示,否則他們不會顯示。

+0

我使用它們而不是錯誤消息,而不是提示。 – 2008-11-18 09:19:41

16

如果您使用的是Delphi 2009,那麼添加氣球提示相當簡單,儘管文檔很差。 (驚訝,意外)

  • 放下你的形式
  • 降一的TImageList如果需要包含圖標上TBalloonHint。
  • 鏈接的TImageList到TBalloonHint
  • 形式的CustomHint屬性設置爲TBalloonHint
  • 確保ShowHint和ParentCustomHint爲您的控件設置爲true。

這下一位是very non-obvious

  • 格式的控制爲一體的 「提示」 屬性 「標題|提示|圖像索引」

大功告成。這看起來並不像100%,也許是由於字體的選擇。但它非常接近。

Delphi 2009 http://dn.codegear.com/article/images/38757/0300000D.png

2

的TCustomHint德爾福2009年有ShowHint四個保護重載調用的時候讓你放置TCustomHint需求和在特定地點:

procedure ShowHint; overload; 
procedure ShowHint(Point: TPoint); overload; 
procedure ShowHint(Rect: TRect); overload; 
procedure ShowHint(Control: TControl); overload; 

所有你需要做的是以你想要的風格實現一個提示(或者如果足夠接近,就從TBalloonHint下降),並且公開這些方法以便能夠在任何時候和任何時候發出提示。

注意:更改TCustomHint的Title屬性以更改顯示的文本,除非使用將TControl作爲參數的ShowHint。在這種情況下,它從控件的Hint屬性獲取它(並將其放置在TCustomHint的Title屬性中)。