ComboBox -Darstellung langer Einträge



  • HI,

    in meinem Programm habe ich eine ComboBox. Da die Einträge der ComboBox dynamisch generiert werden, kommt es vor, dass manchmal ein Eintrag nicht komplett einsehbar ist, da dieser zu lang ist.

    Mein Ziel ist es nun bei diesen Einträgen einen Hint anzuzeigen, wenn der Benutzer mit der Maus über den Eintrag geht, damit er sehen kann um welchen Eintrag es sich handelt.

    Hat da jemand einen Vorschlag?

    Andy



  • Edit: hatte dich falsch verstanden.

    [ Dieser Beitrag wurde am 13.05.2003 um 18:02 Uhr von Eßer editiert. ]



  • Entweder sind die betroffenen Einträge bekannt oder prüf auf die Anzahl der Zeichen. Weis den bedingten Hint dann einfach im OnMouseMove der ComboBox zu.

    <edit>Wenn du eine ListBox und einen separaten Schalter nimmst, stört das Hintgeflippe nicht bei der Auswahl</edit>



  • Hi,
    das hier ist eine einfache Methode, den kompletten Text in der DropDown-Liste darzustellen.

    int TextWidth;
      int TextMaxWidth = 0;
      // damits auch bei jeder Textgroesse klappt:
      ComboBox1->Canvas->Font->Size = ComboBox1->Font->Size;
      for(int i = 0; i < ComboBox1->Items->Count; i++)
      {
        TextWidth = ComboBox1->Canvas->TextWidth(ComboBox1->Items->Strings[i]) +
                    GetSystemMetrics(SM_CXVSCROLL) + 10;
        if(TextMaxWidth < TextWidth)
        {
          TextMaxWidth = TextWidth;
        }
      }
      ComboBox1->Perform(CB_SETDROPPEDWIDTH, TextMaxWidth, 0);
    


  • hallo,

    gibt es auch eine andere art das zu bewerkstelligen? bei mir gibt es einen Fehler:

    EInvalidOperation: Leinwand/Bild erlaubt kein Zeichnen.

    hat jemand einen anderen Vorschlag?

    gruß gerd


Anmelden zum Antworten