![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DrawText
race1 © (2004-12-22 09:08:00)делаю так:
procedure Tfrm.lbMeasureItem(Control: TWinControl; Index: Integer; var Height: Integer)
var
rct: RECT;
begin
SetRect(@rct, 0, 0, lb.Width, 0);
//SelectObject(lb.Canvas.Handle, lb.Font.Handle);
Height = DrawText(lb.Canvas.Handle, PChar(lb.Items[Index]),
Length(lb.Items[Index]), @rct, DT_WORDBREAK or DT_CALCRECT or DT_CENTER or DT_EXTERNALLEADING);
end;
lb - tlistbox, в котором я рисую. т.е. хочу устанвить высоту элемента равной высоте текста, который ещё разбивается на строки. но если выбрать в lb большой шрифт, то высота элементов почему-то не меняется. хотя в DrawItem я рисую этим же кодом и всё отображается большим шрифтом. даже если раскомментировать закомментированные строки (хотя это и бессмысленно), не помогает
race1 (2004-12-28 17:13:00) [1]вариантов нету?
сейчас делаю так: вобще все данные заносятся в листбокс в рантайме. я в режиме дизайнера добавляю какойлибо эл-т в листбокс, при добавлении моих эл-в предварительно очищаю список (т.е. убирается эл-т, добавленный в режиме дизайна). почему-то работает, чудеса...
race1 (2004-12-24 17:02:00) [2]странное дело. у меня это дело рисуется, потом юзер выбирает какой-то эл-т, потом всё очищается и заполняется снова. так вот, после первого заполнения всё высчитывается прально, но первое заполнение и рисование листбокса неработает
вариант с calrect не сработал
Просто Джо (2004-12-22 13:02:00) [3]Навскидку: попробуй использовать сначала DrawText с параметром uFormat равным DT_CALCRECT.