Caption mit "..." abkürzen



  • Hi,

    ich habe eine Frage zur Caption.

    Ein habe einen Speedbutton (Button, ...) der eine bestimmte Aufschrift bekommt. Da ich nicht weiß, wie lang der Text ist, könnte es evtl. sein, dass er größer ist als die breite des Buttons (Der Text wäre abgeschnitten)

    Wie kann ich jedoch den Text mit "..." abkürzen, wenn der Button zu klein ist.

    Ich hab das schon so probiert, ist aber ne heikle Sache, weil hier ja die Zeichen gezählt werden. Würde die Aufschift "DDDDDDD" heißen ist das länger als "iiiiiii":

    String Aufschrift = SpeedButton1->Caption;
    if (Aufschrift.Length() > 20)
    {
        Aufschrift.Delete(17,Aufschrift.Length()-17);
        Aufschrift = Aufschrift + "...";
    }
    SpeedButton1->Caption = Aufschrift;
    

    Danke für die Hilfe!



  • Schau Dir mal die WinAPI Funktion DrawText in der Hilfe an. Hier wäre das Flag DT_CALCRECT von Interesse für Dich.

    Wenn Du lieber mit der VCL arbeiten willst, kannst Du Dich natürlich auch vertrauensvoll an die TCanvas::TextWidth() Methode wenden. 🕶



  • die zweite variante von JFK geht auch beim BCB.

    Wenn du z.B.

    for(int i=0;i<String.Length();i++)
       if (SpeedButton1->Canvas->TextWidth(String+"...")>SpeedButton1->Width)
          String=String.SubString(0,String->Length()-1);
    String=String+"...";
    

    nimmst, sollte dies gehen. Problem hierbei: Er kürzt den Text, auch wenn er gerade so hinpasst.

    [ Dieser Beitrag wurde am 23.06.2003 um 09:06 Uhr von Spieleprogrammierer editiert. ]


Anmelden zum Antworten