2008-11-18 38 views
8

Khi xác thực đầu vào, tôi đang sử dụng các mẹo viết bóng thay vì hộp tin nhắn. Vấn đề của tôi là trên Vista, họ có phong cách XP cũ với các góc tròn, không phải là hình chữ nhật mới hơn giống như hình dạng.Làm thế nào để hiển thị gợi ý kiểu bóng của Vista trong Delphi?

Tôi đã thử tạo chúng bằng cách sử dụng CreateWindowEx và tooltips_class32 hoặc hiển thị hình dán liên quan của Chỉnh sửa bằng cách sử dụng SendMessageW và EM_SHOWBALLOONTIP, kết quả là như nhau. Làm điều tương tự trong Visual Studio và C# kết quả trong một mẹo bóng kiểu Vista.

Bạn có thể xem ví dụ về gợi ý bong bóng tôi cần, khi bạn bật Caps Lock trong khi chỉnh sửa mật khẩu, chẳng hạn như chỉnh sửa trên Windows Logon.

Trả lời

3

Có thể đọc trong Delphi 2009 reviewers guide mỗi thành phần VCL bây giờ có thuộc tính CustomHint. Nó có thể được thiết lập cho bất kỳ hậu duệ của TCustomHint.

Đảm bảo bật gợi ý baloon trong Vista nếu không chúng sẽ không hiển thị.

+0

Tôi sử dụng chúng thay vì thông báo lỗi, không giống như gợi ý. –

+0

Làm thế nào để bạn làm điều đó? Tôi đã thử ở đây nhưng không thể tìm ra cách hiển thị gợi ý theo ý muốn. –

+0

http://www.swissdelphicenter.ch/en/printcode.php?id=2279 –

16

Nếu bạn đang sử dụng Delphi 2009, sau đó thêm gợi ý bóng là hợp lý đơn giản, mặc dù tài liệu là kém. (Bất ngờ, ngạc nhiên)

  • Thả một TBalloonHint vào mẫu của bạn
  • Thả một TImageList để chứa các biểu tượng nếu cần thiết.
  • Link TIMageList đến TBalloonHint
  • Thiết lập thuộc tính CustomHint của hình thức đến TBalloonHint
  • Hãy chắc chắn rằng ShowHint và ParentCustomHint được thiết lập đúng đối với điều khiển của bạn.

bit tiếp theo Đây là very non-obvious:

  • Format "Gợi ý" tài sản của kiểm soát của bạn như "Tiêu đề | Gợi ý | ImageIndex"

Bạn đã hoàn tất. Điều này không giống 100% giống như vista, có thể do lựa chọn phông chữ. Nhưng nó khá gần.

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

2

Các TCustomHint trong Delphi 2009 có bốn quá tải bảo vệ của ShowHint rằng khi gọi cho phép bạn đặt các TCustomHint theo yêu cầu và tại các địa điểm cụ thể:

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

Tất cả bạn cần làm là thực hiện một gợi ý trong phong cách bạn muốn (hoặc chỉ xuống từ TBalloonHint nếu nó đủ gần) và làm cho các phương thức đó công khai để có khả năng đặt một gợi ý ở đâu và bao giờ bạn muốn.

Lưu ý: Thay đổi thuộc tính Tiêu đề của TCustomHint để thay đổi nội dung được hiển thị, trừ khi bạn sử dụng ShowHint để lấy TControl làm đối số. Trong trường hợp đó, nó lấy nó từ thuộc tính Gợi ý của điều khiển (và đặt nó trong thuộc tính Title của TCustomHint).

Các vấn đề liên quan