BCB 2009: OnShowHint
-
Hallo,
ich hab ein Projekt von BCB 6 auf BCB 2009 umgestellt. In der 6er Version hatte ich:
Application->OnShowHint=OnShowHint;Den Code hab ich aus einem Forum. Damit wurden längere ListBox Einträge angezigt. Wie mach in das im 2009er ?
void __fastcall TfrmSanjeevini::OnShowHint(System::AnsiString &HintStr, bool &CanShow, THintInfo &HintInfo) { // Falls Hint zu einer ListBox angzeigt werden soll: if(HintInfo.HintControl->ClassNameIs("TListBox")) { // Zeiger casten: TListBox* pListBox = static_cast<TListBox *>(HintInfo.HintControl); // ListBox-Index des Eintrags unter dem Mouse-Cursor ermitteln: int ilIndex = pListBox->ItemAtPos(HintInfo.CursorPos, true); // Falls die Eintragsbreite grösser, als die ListBox-ClientBreite: //if(ilIndex >= 0 && pListBox->Canvas-> //TextWidth(pListBox->Items->Strings[ilIndex]) > // pListBox->ClientRect.Right-pListBox->ClientRect.Left) //{ if (ilIndex >= 0) { CanShow = true; // Hint-Position, Farbe, Text etc. anpassen: HintInfo.HintPos.x = 0; HintInfo.HintPos.y = pListBox->ItemHeight*(ilIndex-pListBox->TopIndex); HintInfo.HintPos = pListBox->ClientToScreen(HintInfo.HintPos); HintInfo.HintColor = clWhite; HintInfo.ReshowTimeout = 200; HintInfo.HintStr = pListBox->Items->Strings[ilIndex]; } //} // Falls schon komplett sichtbar, Hint nicht anzeigen: //else CanShow = false; } }
-
Was genau funktioniert denn davon nicht im 2009er? Fehlermeldungen?
[Edit] Auch beim BCB 2009 gibt es eine Hilfe, schau dort mal nach OnShowHint und vergleiche den Funktionskopf und pass ihn an [/Edit]
-
[BCC32 Fehler] cQuellen.cpp(153): E2034 Konvertierung von 'void (_fastcall * (_closure )(AnsiString &,bool &,THintInfo &))(AnsiString &,bool &,THintInfo &)' nach 'TShowHintEvent' nicht möglich
-
Hallo
Vermutlich erfordert der 2009er UnicodeString anstelle von Ansistring. In diesem Fall must du in der Deklaration der Methode nur System::AnsiString in String abändern.
bis bald
akari