Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.16;
Скачать: CL | DM;

Вниз

MeasureItem   Найти похожие ветки 

 
_aero_ ©   (2002-05-02 15:51) [0]

возникла проблема по поиску ничего не нашел, хотя проблема наверняка часто встречается.

хочу отображать текст в listbox в несколько строчек для этого говорю, что он ownerdravvariable и делаю обработчик события onmeasureitem, но это событие отрабатывает один раз и только при создании формы или изменении Items, и не отрабатывает при изменении размеров listbox

Вопрос: как правильно сделать изменение высоты айтема при изменении размеров контрола.


 
Song ©   (2002-05-02 18:39) [1]

Надо делать на onDrawItem, а текст выводить через TextOut() или удобней через DrawText()
Для изменения размера строчки соответственно меняйте Rect


 
_aero_ ©   (2002-05-02 19:56) [2]

спасибо, попробую


 
_aero_ ©   (2002-05-03 03:55) [3]

к сожалению, не помогло, дело в том что изменение Rect ни к чему не приводит - следующая строчка все затирает, помогло следующее обходное решение

procedure TForm1.FormResize(Sender: TObject);
begin
lb.Items.BeginUpdate;
lb.Items.SetText(lb.Items.GetText);
lb.Items.EndUpdate;
end;

таким образом при обновлении всех айтемов повторно вызывается onMeasureItem,
упрощенные обработчики на отрисовку и измерение ниже

procedure TForm1.lbMeasureItem(Control: TWinControl;
Index: Integer; var NewHeight: Integer);
begin
with (Control as TListBox) do
NewHeight := (Canvas.TextWidth(Items[Index]) div ClientWidth + 1) * ItemHeight;
end;

procedure TForm1.lbDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TListBox) do
DrawText( Canvas.Handle, PChar(Items[Index]), -1, Rect, DT_WORDBREAK);
end;




Страницы: 1 вся ветка

Текущий архив: 2002.05.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
4-50181
zondor
2002-03-13 19:29
2002.05.16
Clipboard


14-50108
MJH
2002-04-05 20:14
2002.05.16
НайтроАмп (NitroAmp)


1-50007
Novak
2002-04-30 12:03
2002.05.16
StringGrid. Очень интересно как...Спасибо.


1-49900
aleksander
2002-04-29 17:45
2002.05.16
Привлечь внимание к приложению.


4-50175
Serd_hhc
2002-03-16 10:03
2002.05.16
Как определить дату создания/изменения файла?