Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SetFocus и ScrollBox


StriderMan ©   (2006-12-04 13:40:00) 

Всем привет!

Есть ScrollBox, на нем лежит панелька. Если сказать панельке SetFocus, то ScrollBox откручивается в левый верхний угол, что для моей задачи неприемлимо. Как побороть?


StriderMan   (2006-12-04 16:09:00) [1]


> clickmaker ©   (04.12.06 15:54) [8]

Помогло! огромное спасибо!


umbra   (2006-12-04 16:06:00) [2]

если делать что-то наподобие

procedure TForm1.Button1Click(Sender: TObject);
begin
 panel1.Tag := ScrollBox1.VertScrollBar.Position;
 panel1.SetFocus;
 ScrollBox1.VertScrollBar.Position := panel1.Tag;
end;


то полоса прокрутки не двигается


StriderMan   (2006-12-04 15:55:00) [3]


> Джо ©   (04.12.06 15:48) [6]
> Т.е, скроллится так, чтобы панель была видна на экране.

но если панелька полностью в скроллбокс не помещается, то показать он в первую очередь пытается верхний левый угол


clickmaker   (2006-12-04 15:54:00) [4]

а если тупо?

SendMessage(ScrollBox1.Handle, WM_SETREDRAW, 0, 0);
 try
   H := ScrollBox1.HorzScrollBar.Position;
   V := ScrollBox1.VertScrollBar.Position;
   Panel1.SetFocus;
   ScrollBox1.HorzScrollBar.Position := H;
   ScrollBox1.VertScrollBar.Position := V;
 finally
   SendMessage(ScrollBox1.Handle, WM_SETREDRAW, 1, 0);
   ScrollBox1.Invalidate;
 end;


Джо   (2006-12-04 15:48:00) [5]

Т.е, скроллится так, чтобы панель была видна на экране.


Джо   (2006-12-04 15:48:00) [6]

Да и то не всегда. Странное поведение.


Джо   (2006-12-04 15:47:00) [7]

> . Если сказать панельке SetFocus, то ScrollBox откручивается
> в левый верхний угол,

Хм. А у меня скроллится в правый нижний.


StriderMan   (2006-12-04 15:36:00) [8]


> StriderMan ©   (04.12.06 15:19) [3]

ошибочка. не помогло :(


StriderMan   (2006-12-04 15:19:00) [9]

вобщем победиил таким кривым Макаром. правда при этом мерцают скроллбары;
 ScrollBox1.AutoScroll := false;
 try
   Panel1.SetFocus;
 finally
   ScrollBox1.AutoScroll := true;
 end;


ЗЫ: DisableAutoRange не помогло


StriderMan   (2006-12-04 15:06:00) [10]


> umbra ©   (04.12.06 14:43) [1]

осталось сообразить, как сказать скроллбоксу, что такое "назад" :)


umbra   (2006-12-04 14:43:00) [11]

окрутить назад :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо