Mam w zdarzeniu OnDrawItem kod, który steruje wyświetlaniem tekstu, ale nie wiem bardzo jak zrobić jego skracanie:
- Kod: Zaznacz cały
void __fastcall TBabelForm::ListBox1(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
if(State.Contains(odSelected))
{
dynamic_cast<TListBox *>(Control)->Canvas->Brush->Color = (TColor)0x002FA3FF;
dynamic_cast<TListBox *>(Control)->Canvas->Font->Color = clMaroon;
}
dynamic_cast<TListBox *>(Control)->Canvas->FillRect(Rect);
dynamic_cast<TListBox *>(Control)->Canvas->TextRect(Rect, Rect.Left + 3,
Rect.Top + 1,
dynamic_cast<TListBox *>(Control)->Items->Strings[Index]);
}
Mógłbym pobierać rozmiar tekstu za pomocą funkcji TexWidth, potem porównywać z długością obiektu ListBox, następnie obcinałbym nadmiar i wstawiał kropki. Ta metoda jednak jest niedoskonała, być może zetknąłeś się z prostszą metodą.




