C++ Builder Snippets  


Text- / Hintergrundfarbe und die Schriftart der Hinweisfenster (Hints) ändern:
 
Einige Eigenschaften und Verhaltensweisen von Hints lassen sich mit Hilfe des Eriegnisses OnHint der TApplication beeinflussen, ein umfangreiches Beispiel dazu finden Sie z.B. im Snippet Vollständigen Eintragstext in der ListBox als Hint anzeigen.

Sollen allerdings Eigenschaften der Hint-Schrift (Name/Farbe/Grösse/Style) geändert werden, reichen die Möglichkeiten von Application->OnHint nicht mehr aus. In diesem Fall muss der Variablen HintWindowClass eine neue von THintWindow abgeleitete Klasse zugewisen werden, die zum Anzeigen von Hints verwendet wird. Im folgenden Beispiel wird die Vorgehensweise verdeutlicht:


Die neue Klasse TBlueHint wird in einer der includeten Header-Dateien deklariert. Da die Klasse sehr simpel ist, kann die Implementierung unmittelbar innerhalb der Klassendeklaration erfolgen:
//--------------------------------------------------------------------------
// In der von THintWindow abgeleiteten Klasse TBlueHint werden die
// das Aussehen der Hinweise bestimmende Methoden überschrieben, um
// die Hinweisfenster anders darzustellen (in disem Fall werden die
// Hinweistexte in weiß auf blauem Hintergrund in der Schriftart
// "Times New Roman", Grösse 12, kursiv dargestellt)
//--------------------------------------------------------------------------
class TBlueHint : public THintWindow
{
  // Im überschr. Konstruktor werden die Eigenschaften
  // der Schriftart festgelegt:
  __fastcall TBlueHint::TBlueHint(TComponent* Owner) :
      THintWindow(Owner)
  {
    Canvas->Font->Name = "Times New Roman";
    Canvas->Font->Color = clWhite;
    Canvas->Font->Style = Canvas->Font->Style << fsItalic;
    Canvas->Font->Size = 12;
  }

  // Die Paint-Methode muss auch überschrieben werden, denn anderenfalls
  // die System-Einstellung für die Textfarbe verwendet wird:
  void __fastcall TBlueHint::Paint(void)
  {
    Color = clBlue;
    TRect R = ClientRect;
    R.Left = R.Left + 2;
    R.Top = R.Top + 2;
    DrawText(Canvas->Handle, Caption.c_str(), -1, &R, DT_LEFT |
      DT_NOPREFIX | DT_WORDBREAK | DrawTextBiDiModeFlagsReadingOnly());
  }
};

Nun muss nur noch die neu angelegte Klasse der Variablen HintWindowClass zugewisen werden. Dies kann z.B. in OnShow- oder OnCreate-Eventhandler des Hauptformulars geschehen:
// Fensterklasse für das Anzeigen von
// Hilfehinweisen festlegen:
HintWindowClass = __classid(TBlueHint);

Und so sieht das Ergebnis aus:

Das Ergebnis



© '99-2001 by S. Kreutzmann