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

Вниз

ListBox и прокрутка вниз.   Найти похожие ветки 

 
Gear   (2006-01-14 15:20) [0]

Здравствуйте!
Проблема:
в OnMeasureItem выставляю различные величины размера Item в зависимости от текста в каждом Item и т.д.
Делаю отрисовку каждого Item (DrawItem). Всё замечательно. При показе ListBox хочу чтобы список при выводе прокручен был до конца вниз. Делаю при показе вормы (OnShow) следующее:
ListBox1.Perform(WM_VSCROLL, Pred(SB_BOTTOM), 0);
Он прокручивается вниз, однако прокручивается ровно настолько насколько если бы Items были стандартным размером, а не тем, что я выставлял для каждого в  OnMeasureItem. Кто-нибудь знает как сделать правильно и при выводе список был прокручен доконца?


 
begin...end ©   (2006-01-14 15:47) [1]

> Gear   (14.01.06 15:20)

> ListBox1.Perform(WM_VSCROLL, Pred(SB_BOTTOM), 0);

Вообще-то, Pred(SB_BOTTOM) -- это SB_TOP.


 
begin...end ©   (2006-01-14 16:00) [2]

А с SB_BOTTOM у меня прокрутка сработала нормально -- ListBox прокрутился вниз до самого конца, несмотря на различные высоты элементов (проверял на Windows 2000).


 
Gear   (2006-01-14 16:04) [3]

Это не всё равно не помогло (


 
Gear   (2006-01-14 16:05) [4]

А можно код глянуть?


 
begin...end ©   (2006-01-14 16:13) [5]

> Gear   (14.01.06 16:04) [3]

Что не помогло? В [1] я имел в виду, что Pred(SB_BOTTOM) -- это SB_TOP, что означает прокрутку вверх, а Вы говорите, что список прокручивается вниз. Т.е. непонятно, зачем Pred().

> Gear   (14.01.06 16:05) [4]

На форме -- пустой ListBox со стилем lbOwnerDrawVariable. Обработчики:

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
 var Height: Integer);
begin
 Height := 15 + Index
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
begin
 with Control as TListBox do
   Canvas.TextOut(Rect.Left, Rect.Top, Items[Index])
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 ListBox1.Perform(WM_VSCROLL, SB_BOTTOM, 0)
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 I: integer;
begin
 for I := 1 to 50 do
   ListBox1.Items.Add(IntToStr(I))
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
2-1138266799
zorik
2006-01-26 12:13
2006.02.12
Как дописать StringList в текстовый файл?


1-1137163081
yarvu
2006-01-13 17:38
2006.02.12
Зоздание объекта в др.приложении.


2-1138038072
WST
2006-01-23 20:41
2006.02.12
-= Версия файла =-


15-1138113647
X9
2006-01-24 17:40
2006.02.12
Проблемы с мат. платой


3-1134573689
CarlCorey
2005-12-14 18:21
2006.02.12
пороблемы с MySQL