Probleme beim Anzeigen von Hints in einer StatusBar
-
Hallo zusammen,
Ich habe folgendes Problem mit meinen Hints:
Ich habe mehrere Fenster in meinem Programm. Im ersten Fenster funktioniert die Anzeige meiner Hints in der StatusBar hervorragend. Wenn ich diese "Zuweisung" der Hints in die StatusBar allerdigns in einem anderen Fenster wiederhole, dann funktioniert sie nur im ersten Fenster. Woran liegt das?
BCB5, Win XP Pro
Hier einige Code-Ausschnitte für das erste Fenster:
Header-Datei:class TForm_ProgramAFx : public TForm { __published: // Von der IDE verwaltete Komponenten void __fastcall FormCreate(TObject *Sender); private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TForm_ProgramAFx(TComponent* Owner); void __fastcall DisplayHint(TObject *Sender); };
Code-Datei:
void __fastcall TForm_ProgramAFx::FormCreate(TObject *Sender) { Application->OnHint = DisplayHint; } //--------------------------------------------------------------------------- void __fastcall TForm_ProgramAFx::DisplayHint(TObject *Sender) { StatusBar1->SimpleText = GetLongHint(Application->Hint); }
Und hier einige Code-Ausschnitte für das zweite Fenster:
Header-Datei:class TForm_Program : public TForm { __published: // Von der IDE verwaltete Komponenten void __fastcall FormCreate(TObject *Sender); private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TForm_Program(TComponent* Owner); void __fastcall DispHint(TObject *Sender); };
Code-Datei:
void __fastcall TForm_Program::FormCreate(TObject *Sender) { Application->OnHint = DispHint; } //--------------------------------------------------------------------------- void __fastcall TForm_Program::DispHint(TObject *Sender) { StatusBar1->SimpleText = GetLongHint(Application->Hint); }
-
Auch wenn die Frage schon ein paar Tage her ist...
Du setzt ja mittels "Application->OnHint = ..." jeweils das Hint-Ereignis neu, d.h. es wird nur die letzte Zuweisung übernommen.
Du solltest dann EINE globale Hint-Methode definieren und in dieser dann überprüfen, welches gerade das aktuelle Formular ist (Form->Active) und dementsprechend dann dessen Statusbar-Text setzen.