procedure TDrawMachine.UpdateScrollBarState;
var si:TScrollInfo;
sv:boolean;
begin
si.cbSize:=sizeof(TScrollInfo);
si.fMask:=SIF_RANGE or SIF_PAGE;
si.nMin:=-ImageBorderWidth;
if HandleAllocated and ImageAllocated then
begin
//SB_HORZ
sv:=(not IsImageFitVisibleAreaWidth)and((ssBoth=ScrollStyle)or(ssHorizontal=ScrollStyle));
si.nMax:=ImageWidth+ImageBorderWidth-1;
si.nPage:=ScaledClientWidth;
ShowScrollBar(Handle,SB_HORZ,sv);
[COLOR=Red]SetScrollInfo(Handle,SB_HORZ,si,sv);[/COLOR]
//SB_VERT
sv:=(not IsImageFitVisibleAreaHeight)and((ssBoth=ScrollStyle)or(ssVertical=ScrollStyle));
si.nMax:=ImageHeight+ImageBorderWidth-1;
si.nPage:=ScaledClientHeight;
[COLOR=Red] SetScrollInfo(Handle,SB_VERT,si,sv);[/COLOR]
ShowScrollBar(Handle,SB_VERT,sv);
end;
end;
мерцание скроллбаров
используются системные скроллбары, при установке параметров SetScrollInfo происходит мерцание скроллбара (он в принципе не виден), установка параметра fRedraw в false не помогает. Как от этого избавиться?
http://depositfiles.com/files/1326279
красным выделены строчки при комментировании которых мерцание пропадает
может кому интересно, я заснял мерцание :) 136 кб. На самом деле это происходит гораздо быстрее чем на видео
Код: