listbox.items в две строки
Очень интересует вопрос как можно исправить такую нелепость как
в листбоксе определенного размера любой из итемов может содержать длинный текст и он будет выходить за рамки нашего листбокса
как сделать чтоб в этом же итеме текст получился в 2 строки, главное чтоб он умещался в одном итеме
Рябят помогите, кто что знет, как выйти из ситуации?
OnMeasureItem в помощь.
2) Пишем обработчик события OnDrawItem у ListBox
3) Делаем переменную LastItemIndex — это переменная будет хранить индекс прежней выделенной строки
4) В событии OnClick ListBox'а обрабатываем
procedure TForm1.ListBoxClick(Sender: TObject);
begin
ListBox.Perform(LB_SETITEMHEIGHT,ListBox.ItemIndex,30);
ListBox.Perform(LB_SETITEMHEIGHT,LastItemIndex,ListBox.ItemHeight);
ListBox.Repaint;
LastItemIndex:=ListBox.ItemIndex;
end;
дайте намёк по подробнее либо ссыль чтоли на то где посмотреть по моему вопросу..
Цитата:
var
aRect: TRect;
ModText : String;
begin
aRect := Rect(4,5, 55,7 );
//create a rectangle to clip
ModText := 'Some sample text here that is too long for the column width';
DrawTextEX( ListBox1.Canvas.Handle, PChar( ModText ), -1, aRect, DT_END_ELLIPSIS or DT_LEFT or DT_NOPREFIX or DT_MODIFYSTRING or DT_EDITCONTROL or DT_WORDBREAK, nil );
aRect: TRect;
ModText : String;
begin
aRect := Rect(4,5, 55,7 );
//create a rectangle to clip
ModText := 'Some sample text here that is too long for the column width';
DrawTextEX( ListBox1.Canvas.Handle, PChar( ModText ), -1, aRect, DT_END_ELLIPSIS or DT_LEFT or DT_NOPREFIX or DT_MODIFYSTRING or DT_EDITCONTROL or DT_WORDBREAK, nil );
кто знает с чем это едят?
вылетает ошибка, как сделать чтоб нор пахало? нужно определённый текс поставить в один итем и чтоб за рамки не выходил..