2008-11-18 8 views
8

Podczas sprawdzania danych wejściowych używam końcówek balonu zamiast pól wiadomości. Moim problemem jest to, że w systemie Vista mają stary styl XP z zaokrąglonymi rogami, a nie nowszy wygląd podobny do prostokąta.Jak wyświetlić wskazówki dotyczące dymków w stylu Vista w Delphi?

Próbowałem tworzyć je przy użyciu CreateWindowEx i tooltips_class32 lub pokazując powiązaną edycję Balloontip przy użyciu SendMessageW i EM_SHOWBALLOONTIP, wynik jest taki sam. Wykonanie tej samej czynności w programie Visual Studio i C# powoduje napotkanie dymku w stylu Vista.

Możesz zobaczyć przykład podpowiedzi na temat balonu, którego potrzebuję, kiedy przełączasz Caps Lock podczas edycji hasła, tak jak w logowaniu Windows.

Odpowiedz

3

Jak można przeczytać w Delphi 2009 reviewers guide każdy składnik VCL ma teraz właściwość CustomHint. Można go ustawić dla dowolnego potomka TCustomHint.

Pamiętaj, aby włączyć wskazówki baloon w Vista jeszcze nie będą wyświetlane.

+0

Używam ich zamiast komunikatów o błędach, a nie jak podpowiedzi. –

+0

Jak to zrobić? Próbowałem tutaj, ale nie byłem w stanie wymyślić, jak wyświetlić wskazówkę do woli. –

+0

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

16

Jeśli używasz Delphi 2009, dodanie wskazówek dotyczących dymków jest dość proste, mimo że dokumentacja jest słaba. (Niespodzianka)

  • Drop TBalloonHint na formularzu
  • upuść TImageList zawierać ikony w razie potrzeby.
  • Link TIMageList do TBalloonHint
  • ustawić właściwość CustomHint postaci do tej TBalloonHint
  • Upewnij ShowHint i ParentCustomHint są prawdziwe dla kontroli.

Następny bit jest very non-obvious:

  • Formatowanie "Podpowiedź" własność kontrolą jako "tytuł | Hint | imageIndex"

skończysz. Nie wygląda to na 100% w stylu vista, być może ze względu na wybór czcionki. Ale jest całkiem blisko.

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

2

TCustomHint w Delphi 2009 ma cztery chronione przeciążeniem ShowHint że kiedy nazywa pozwalają umieścić TCustomHint na żądanie oraz w określonych miejscach:

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

Wszystko, co musisz zrobić, to zaimplementuj podpowiedź w stylu, który chcesz (lub po prostu zejdź z TBalloonHint, jeśli jest wystarczająco blisko) i upublicznij te metody, aby mieć możliwość wskazania gdziekolwiek i kiedykolwiek chcesz.

Uwaga: Zmień właściwość Tytuł w instrukcji TCustomHint, aby zmienić wyświetlany tekst, chyba że skorzystasz z ShowHint, które pobiera TControl jako argument. W takim przypadku pobiera ją z właściwości podpowiedzi kontrolnej (i umieszcza ją w własności tytułu TCustomHint).

Powiązane problemy