Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
15-1137888957
lookin
2006-01-22 03:15
2006.02.12
Стишок... Кто автор (без google)?


2-1138369803
Glex
2006-01-27 16:50
2006.02.12
Офигеть. Слетает и даже ошибок не выдаёт!


5-1124975647
Aleksandr.
2005-08-25 17:14
2006.02.12
Что сделать с некорректной отрисовкой TCustomListBox?


2-1138222274
ANB
2006-01-25 23:51
2006.02.12
Как настроить работу ораклового апача через modplsql ?


15-1137705160
DiamondShark
2006-01-20 00:12
2006.02.12
Как же может быть так хреново,..




   Наверх