Главная страница
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.045 c
1-1137284109
stack
2006-01-15 03:15
2006.02.12
Есть ли компоненты для экспорта/импорта в Oracle


1-1136962161
alless
2006-01-11 09:49
2006.02.12
Как узнать что файл записался до конца в дир.?


1-1137400414
баклан
2006-01-16 11:33
2006.02.12
CHM Vs HelpFile :)


15-1137924000
Колян
2006-01-22 13:00
2006.02.12
книга по ASP для работы с базами данных?


8-1126072638
BUHALO
2005-09-07 09:57
2006.02.12
Размер в BITMAP