Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Ограничение скроллинга в 32767   Найти похожие ветки 

 
Unknown_user   (2011-03-16 13:48) [0]

Подскажите как обойти ограничение диапазона прокрутки скроллбара в 32767? Привожу описание сообщения скроллера из Messages.pas, видим, что поле Pos типа Smallint.


 TWMScroll = packed record
   Msg: Cardinal;
   ScrollCode: Smallint; { SB_xxxx }
   Pos: Smallint;
   ScrollBar: HWND;
   Result: Longint;
 end;


Похоже, тяжелое наследство 16-ти битного прошлого.

Я использую это поле при обработке сообщений

SB_THUMBPOSITION,
SB_THUMBTRACK

и при большом ScrollRange получаю переполнение. Как обойти?


 
clickmaker ©   (2011-03-16 13:53) [1]

GetScrollPos() или GetScrollInfo()


 
Unknown_user   (2011-03-16 14:49) [2]

Большое спасибо, clickmaker. Сам я что-то не догадался. GetScrollInfo может среди прочих параметров возвращать nTrackPos. Это как раз и есть тот самый TWMScroll.Pos только уже 4-х байтный.

Привожу работающий код, может кому-то пригодится.

function TSomeControlWithScrollBars.GetTrackPos(HorizScroll: Boolean): Integer;
const
 cScrolls: array[Boolean] of DWORD =
   (SB_VERT, SB_HORZ);
var
 ScrInfo: TScrollInfo;
begin
 ScrInfo.cbSize := SizeOf(ScrInfo);
 ScrInfo.fMask := SIF_TRACKPOS;
 GetScrollInfo(Handle, cScrolls[HorizScroll], ScrInfo);
 Result := ScrInfo.nTrackPos;
end;



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

Форум: "Основная";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.067 c
2-1330341762
kate158
2012-02-27 15:22
2013.03.22
выравнивание по ширине+абзац в qreport


4-1245173597
Макс РВС
2009-06-16 21:33
2013.03.22
Отключение хард диска по букве


15-1332713589
-111-
2012-03-26 02:13
2013.03.22
office starter 2010


2-1331388474
Pcrepair
2012-03-10 18:07
2013.03.22
Сделать из компонента TWebBrowser и формы .DLL


15-1344504943
brother
2012-08-09 13:35
2013.03.22
верстка div ом





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