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

Вниз

Scrollbox   Найти похожие ветки 

 
puky   (2003-07-09 19:32) [0]

Как программно сделать скроллинг для ScrollBox?


 
Sapersky ©   (2003-10-13 15:36) [1]

Присоединяюсь.
Пробовал SetScrollInfo (WinAPI) - скроллится, но контрол в скролбоксе не обновляется, добавлял NotifyScrollBox - никакой реакции.


 
Gandalf ©   (2003-10-13 21:03) [2]

А если флаг fRedraw ставить?


 
Sapersky ©   (2003-10-14 09:49) [3]

fRedraw никак не влияет. Поставил SendMessage Scrollbox"у - заработало.


 
puky   (2003-10-20 16:12) [4]

2Sapersky
Можно пример?


 
puky   (2003-10-20 20:02) [5]

:) пример:

procedure ScrollIt( tx, ty : integer; ScrollBox, ScrollPanel : PControl );
var smin, smax: integer;
   sx, sy : integer;
begin

   if ((ScrollPanel.Left + tx) > 0 ) then tx := - ScrollPanel.Left ;
   if ((ScrollPanel.Top + ty) > 0 ) then  ty := - ScrollPanel.Top;
   if (ScrollPanel.Left + ScrollPanel.Width + tx - ScrollBox.ClientWidth) < 0 then
      tx := ScrollBox.ClientWidth - ScrollPanel.Left - ScrollPanel.Width ;
   if (ScrollPanel.Top + ScrollPanel.Height + ty - ScrollBox.ClientHeight) < 0 then
      ty := ScrollBox.ClientHeight - ScrollPanel.Top - ScrollPanel.Height ;

   { scroll }
   ScrollWindowEx( ScrollBox.handle, tx, ty, nil, nil, 0, nil, SW_SCROLLCHILDREN + SW_INVALIDATE + SW_ERASE );

   GetScrollRange( ScrollBox.handle, SB_HORZ , smin, smax );
   sx := GetScrollPos( ScrollBox.handle, SB_HORZ );
   sx := sx - tx;
   if sx < smin then sx := smin;
   if sx > smax then sx := smax;
   SetScrollPos( ScrollBox.handle, SB_HORZ , sx, true );

   GetScrollRange( ScrollBox.handle, SB_Vert , smin, smax );
   sy := GetScrollPos( ScrollBox.handle, SB_Vert );
   sy := sy - ty;
   if sy < smin then sx := smin;
   if sy > smax then sx := smax;
   SetScrollPos( ScrollBox.handle, SB_Vert , sy, true );

end;

юзать так:

procedure TForm1.Panel2MouseMove(Sender: PControl; var Mouse: TMouseEventData);
var tx, ty : integer;
begin
if md = 1 then begin
   { move panel }
   tx := Mouse.x - mx;
   ty := Mouse.y - my;
 
    ScrollIt( tx, ty, Sender.Parent , Sender );
end;
end;



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

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

Наверх




Память: 0.45 MB
Время: 0.11 c
3-1081411775
Ozone
2004-04-08 12:09
2004.05.02
Потоки + БД


3-1080823713
badis
2004-04-01 16:48
2004.05.02
Будет ли работать БД?


3-1080814223
wer
2004-04-01 14:10
2004.05.02
поиск


4-1078218518
YuraMas
2004-03-02 12:08
2004.05.02
Системное меню приложения


3-1081245975
andrew31
2004-04-06 14:06
2004.05.02
Как при помощи DBEdit производить редактирование?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский