Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
6-50068
amg
2002-03-05 01:04
2002.05.16
Передача html с помощью TServerSocket


3-49898
Вовка
2002-04-18 11:16
2002.05.16
тип данных Blob


3-49877
Kolyan
2002-04-19 16:36
2002.05.16
Как перевести базу в SQL Server?


3-49870
Gamar
2002-04-19 17:08
2002.05.16
Сумма по ВЫЧИСЛЯЕМОМУ полю


14-50086
RoadRunner
2002-04-04 21:55
2002.05.16
помогите с разжатием





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский