2008-11-18 10 views
8

Bei der Eingabevalidierung verwende ich Sprechblasentipps anstelle von Nachrichtenfeldern. Mein Problem ist, dass sie auf Vista den alten XP-Stil mit den abgerundeten Ecken haben, nicht das neuere mehr rechteckige Aussehen.Wie man Vista-Style-Sprechblasen in Delphi zeigt?

Ich habe versucht, sie mit CreateWindowEx und tooltips_class32 zu erstellen oder zeigt die Edit's verbundenen Balloontip mit SendMessageW und EM_SHOWBALLOONTIP, das Ergebnis ist das gleiche. Wenn Sie in Visual Studio und C# dasselbe tun, wird die Spitze eines Vista-Stils angezeigt.

Sie können ein Beispiel des Sprechblasenhinweises sehen, den ich benötige, wenn Sie die Caps-Lock-Funktion während eines Passwort-Edits wie bei der Windows-Anmeldung aktivieren.

Antwort

3

Wie in Delphi 2009 reviewers guide gelesen werden kann, hat jede VCL-Komponente jetzt eine CustomHint-Eigenschaft. Es kann auf jeden Nachkommen von TCustomHint gesetzt werden.

Achten Sie darauf, Baloon Hinweise in Vista zu aktivieren, sonst werden sie nicht angezeigt.

+0

Ich benutze sie anstelle von Fehlermeldungen, nicht wie Hinweise. –

+0

Wie machst du das? Ich habe es hier versucht, konnte aber nicht herausfinden, wie ich den Hinweis nach Belieben zeigen sollte. –

+0

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

16

Wenn Sie Delphi 2009 verwenden, ist das Hinzufügen von Sprechblasen-Hinweisen ziemlich einfach, obwohl die Dokumentation schlecht ist. (Überraschung)

  • Drop ein TBalloonHint auf dem Formular
  • Tropfen ein TImageList Symbole enthalten, wenn nötig.
  • Link zu dem TImageList zum TBalloonHint
  • das CustomHint Eigenschaft des Formulars auf die
  • sicher ShowHint und ParentCustomHint gesetzt für Ihre Kontrollen wahr
  • TBalloonHint Set.

Das nächste Bit ist very non-obvious:

  • Format der "Hint" Eigentum Ihrer Kontrolle als "Titel | Hinweis | Imageindex"

Sie fertig sind. Dies sieht nicht 100% vista-like aus, vielleicht aufgrund der Schriftartwahl. Aber es ist ziemlich nah.

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

2

Die TCustomHint in Delphi 2009 verfügt über vier geschützten Überlastungen von ShowHint, dass, wenn erlauben Sie rief die TCustomHint auf Anfrage und an bestimmten Orten zu platzieren:

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

Alles, was Sie tun müssen, ist Implementiere einen Hinweis im gewünschten Stil (oder gehe einfach von TBalloonHint herunter, wenn er nahe genug ist) und mache diese Methoden öffentlich, um einen Hinweis überall und jederzeit platzieren zu können.

Hinweis: Ändern Sie die Title-Eigenschaft von TCustomHint, um zu ändern, welcher Text angezeigt wird, es sei denn, Sie verwenden den ShowHint, der ein TControl als Argument verwendet. In diesem Fall wird es aus der Hint-Eigenschaft des Steuerelements abgerufen (und in der Title-Eigenschaft von TCustomHint platziert).