mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-08 05:19:08 +02:00
qt: improved scrollbars (no more doubling of scrollbars after control reparenting)
git-svn-id: trunk@13890 -
This commit is contained in:
parent
4c2fed68d4
commit
6f0fd6986d
@ -4231,53 +4231,43 @@ end;
|
|||||||
|
|
||||||
procedure TQtAbstractSlider.SlotSliderMoved(p1: Integer); cdecl;
|
procedure TQtAbstractSlider.SlotSliderMoved(p1: Integer); cdecl;
|
||||||
var
|
var
|
||||||
Msg: PLMessage;
|
LMScroll: TLMScroll;
|
||||||
LMScroll: TLMScroll;
|
|
||||||
begin
|
begin
|
||||||
{$ifdef VerboseQt}
|
{$ifdef VerboseQt}
|
||||||
writeln('TQtAbstractSlider.sliderMoved() to pos=',p1);
|
writeln('TQtAbstractSlider.sliderMoved() to pos=',p1);
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
FillChar(Msg, SizeOf(Msg), #0);
|
|
||||||
FillChar(LMScroll, SizeOf(LMScroll), #0);
|
FillChar(LMScroll, SizeOf(LMScroll), #0);
|
||||||
|
|
||||||
LMScroll.ScrollBar := LCLObject.Handle;
|
LMScroll.ScrollBar := PtrUInt(Self);
|
||||||
|
|
||||||
if QAbstractSlider_orientation(QAbstractSliderH(Widget)) = QtHorizontal then
|
if QAbstractSlider_orientation(QAbstractSliderH(Widget)) = QtHorizontal then
|
||||||
LMScroll.Msg := LM_HSCROLL
|
LMScroll.Msg := LM_HSCROLL
|
||||||
else
|
else
|
||||||
LMScroll.Msg := LM_VSCROLL;
|
LMScroll.Msg := LM_VSCROLL;
|
||||||
|
|
||||||
LMScroll.Pos := p1;
|
LMScroll.Pos := p1;
|
||||||
LMScroll.ScrollCode := SIF_POS; { SIF_TRACKPOS }
|
LMScroll.ScrollCode := SIF_POS; { SIF_TRACKPOS }
|
||||||
|
|
||||||
Msg := @LMScroll;
|
DeliverMessage(LMScroll);
|
||||||
|
|
||||||
try
|
|
||||||
if (TScrollBar(LCLObject).Position <> p1)
|
|
||||||
and (Assigned(LCLObject.Parent)) then
|
|
||||||
LCLObject.Parent.WindowProc(Msg^);
|
|
||||||
except
|
|
||||||
Application.HandleException(nil);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TQtAbstractSlider.SlotSliderPressed; cdecl;
|
procedure TQtAbstractSlider.SlotSliderPressed; cdecl;
|
||||||
begin
|
begin
|
||||||
{$ifdef VerboseQt}
|
{$ifdef VerboseQt}
|
||||||
writeln('TQtAbstractSlider.sliderPressed()');
|
writeln('TQtAbstractSlider.sliderPressed()');
|
||||||
{$endif}
|
{$endif}
|
||||||
FSliderPressed := True;
|
FSliderPressed := True;
|
||||||
FSliderReleased := False;
|
FSliderReleased := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TQtAbstractSlider.SlotSliderReleased; cdecl;
|
procedure TQtAbstractSlider.SlotSliderReleased; cdecl;
|
||||||
begin
|
begin
|
||||||
{$ifdef VerboseQt}
|
{$ifdef VerboseQt}
|
||||||
writeln('TQtAbstractSlider.sliderReleased()');
|
writeln('TQtAbstractSlider.sliderReleased()');
|
||||||
{$endif}
|
{$endif}
|
||||||
FSliderPressed := False;
|
FSliderPressed := False;
|
||||||
FSliderReleased := True;
|
FSliderReleased := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TQtAbstractSlider.getOrientation: QtOrientation;
|
function TQtAbstractSlider.getOrientation: QtOrientation;
|
||||||
@ -4287,36 +4277,26 @@ end;
|
|||||||
|
|
||||||
procedure TQtAbstractSlider.SlotValueChanged(p1: Integer); cdecl;
|
procedure TQtAbstractSlider.SlotValueChanged(p1: Integer); cdecl;
|
||||||
var
|
var
|
||||||
Msg: PLMessage;
|
|
||||||
LMScroll: TLMScroll;
|
LMScroll: TLMScroll;
|
||||||
begin
|
begin
|
||||||
{$ifdef VerboseQt}
|
{$ifdef VerboseQt}
|
||||||
writeln('TQtAbstractSlider.SlotValueChanged()');
|
writeln('TQtAbstractSlider.SlotValueChanged()');
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
FillChar(Msg, SizeOf(Msg), #0);
|
|
||||||
FillChar(LMScroll, SizeOf(LMScroll), #0);
|
FillChar(LMScroll, SizeOf(LMScroll), #0);
|
||||||
|
|
||||||
LMScroll.ScrollBar := LCLObject.Handle;
|
LMScroll.ScrollBar := PtrUInt(Self);
|
||||||
|
|
||||||
if QAbstractSlider_orientation(QAbstractSliderH(Widget)) = QtHorizontal then
|
if QAbstractSlider_orientation(QAbstractSliderH(Widget)) = QtHorizontal then
|
||||||
LMScroll.Msg := LM_HSCROLL
|
LMScroll.Msg := LM_HSCROLL
|
||||||
else
|
else
|
||||||
LMScroll.Msg := LM_VSCROLL;
|
LMScroll.Msg := LM_VSCROLL;
|
||||||
|
|
||||||
LMScroll.Pos := p1;
|
LMScroll.Pos := p1;
|
||||||
LMScroll.ScrollCode := SIF_POS;
|
LMScroll.ScrollCode := SIF_POS;
|
||||||
|
|
||||||
Msg := @LMScroll;
|
if not SliderPressed then
|
||||||
try
|
DeliverMessage(LMScroll);
|
||||||
if not SliderPressed and Assigned(LCLObject.Parent)
|
|
||||||
and (p1 <> TScrollBar(LCLObject).Position) then
|
|
||||||
begin
|
|
||||||
LCLObject.Parent.WindowProc(Msg^);
|
|
||||||
end;
|
|
||||||
except
|
|
||||||
Application.HandleException(nil);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -4339,7 +4319,8 @@ begin
|
|||||||
QEventKeyPress,
|
QEventKeyPress,
|
||||||
QEventKeyRelease: Result := False;
|
QEventKeyRelease: Result := False;
|
||||||
else
|
else
|
||||||
Result := inherited EventFilter(Sender, Event);
|
if FOwnWidget then
|
||||||
|
Result := inherited EventFilter(Sender, Event);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -6866,6 +6847,8 @@ begin
|
|||||||
WriteLn('TQAbstractScrollArea.Destroy');
|
WriteLn('TQAbstractScrollArea.Destroy');
|
||||||
{$endif}
|
{$endif}
|
||||||
viewportDelete;
|
viewportDelete;
|
||||||
|
FreeAndNil(FHScrollBar);
|
||||||
|
FreeAndNil(FVScrollBar);
|
||||||
|
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
@ -7043,6 +7026,11 @@ begin
|
|||||||
{$ifdef VerboseQt}
|
{$ifdef VerboseQt}
|
||||||
WriteLn('TQAbstractScrollArea.horizontalScrollBar');
|
WriteLn('TQAbstractScrollArea.horizontalScrollBar');
|
||||||
{$endif}
|
{$endif}
|
||||||
|
if FHScrollBar = nil then
|
||||||
|
begin
|
||||||
|
FHScrollBar := TQtScrollBar.CreateFrom(LCLObject, QAbstractScrollArea_horizontalScrollBar(QAbstractScrollAreaH(Widget)));
|
||||||
|
FHScrollBar.AttachEvents;
|
||||||
|
end;
|
||||||
Result := FHScrollBar;
|
Result := FHScrollBar;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -7056,6 +7044,11 @@ begin
|
|||||||
{$ifdef VerboseQt}
|
{$ifdef VerboseQt}
|
||||||
WriteLn('TQAbstractScrollArea.verticalScrollBar');
|
WriteLn('TQAbstractScrollArea.verticalScrollBar');
|
||||||
{$endif}
|
{$endif}
|
||||||
|
if FVScrollBar = nil then
|
||||||
|
begin
|
||||||
|
FVScrollbar := TQtScrollBar.CreateFrom(LCLObject, QAbstractScrollArea_verticalScrollBar(QAbstractScrollAreaH(Widget)));;
|
||||||
|
FVScrollbar.AttachEvents;
|
||||||
|
end;
|
||||||
Result := FVScrollBar;
|
Result := FVScrollBar;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -2371,13 +2371,13 @@ begin
|
|||||||
ScrollBar := TQtAbstractScrollArea(w).horizontalScrollBar;
|
ScrollBar := TQtAbstractScrollArea(w).horizontalScrollBar;
|
||||||
end else
|
end else
|
||||||
if w is TQtScrollBar then
|
if w is TQtScrollBar then
|
||||||
ScrollBar := TQtScrollBar(w)
|
ScrollBar := TQtScrollBar(w)
|
||||||
else
|
else
|
||||||
ScrollBar := nil;
|
ScrollBar := nil;
|
||||||
if ScrollBar <> nil then
|
if ScrollBar <> nil then
|
||||||
begin
|
begin
|
||||||
if BarKind = SM_CYVSCROLL then
|
if BarKind = SM_CYVSCROLL then
|
||||||
Result := ScrollBar.getWidth
|
Result := ScrollBar.getWidth
|
||||||
else
|
else
|
||||||
Result := ScrollBar.getHeight;
|
Result := ScrollBar.getHeight;
|
||||||
end;
|
end;
|
||||||
@ -2405,7 +2405,7 @@ begin
|
|||||||
ScrollBar := TQtAbstractScrollArea(w).horizontalScrollBar;
|
ScrollBar := TQtAbstractScrollArea(w).horizontalScrollBar;
|
||||||
end else
|
end else
|
||||||
if w is TQtScrollBar then
|
if w is TQtScrollBar then
|
||||||
ScrollBar := TQtScrollBar(w)
|
ScrollBar := TQtScrollBar(w)
|
||||||
else
|
else
|
||||||
ScrollBar := nil;
|
ScrollBar := nil;
|
||||||
|
|
||||||
@ -2430,7 +2430,6 @@ end;
|
|||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
function TQtWidgetSet.GetScrollInfo(Handle: HWND; BarFlag: Integer; Var ScrollInfo: TScrollInfo): Boolean;
|
function TQtWidgetSet.GetScrollInfo(Handle: HWND; BarFlag: Integer; Var ScrollInfo: TScrollInfo): Boolean;
|
||||||
var
|
var
|
||||||
FScrollBar: TScrollBar;
|
|
||||||
QtScrollBar: TQtScrollBar;
|
QtScrollBar: TQtScrollBar;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
@ -2441,7 +2440,6 @@ begin
|
|||||||
(csFreeNotification in TQtWidget(Handle).LCLObject.ComponentState) then
|
(csFreeNotification in TQtWidget(Handle).LCLObject.ComponentState) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
FScrollBar := nil;
|
|
||||||
QtScrollBar := nil;
|
QtScrollBar := nil;
|
||||||
|
|
||||||
if not TQtWidget(Handle).LCLObject.InheritsFrom(TCustomScrollBar) then
|
if not TQtWidget(Handle).LCLObject.InheritsFrom(TCustomScrollBar) then
|
||||||
@ -2452,38 +2450,31 @@ begin
|
|||||||
SB_HORZ: QtScrollBar := TQtAbstractScrollArea(Handle).horizontalScrollBar;
|
SB_HORZ: QtScrollBar := TQtAbstractScrollArea(Handle).horizontalScrollBar;
|
||||||
SB_VERT: QtScrollBar := TQtAbstractScrollArea(Handle).verticalScrollBar;
|
SB_VERT: QtScrollBar := TQtAbstractScrollArea(Handle).verticalScrollBar;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if QtScrollBar = nil then exit
|
|
||||||
else FScrollBar := TScrollBar(QtScrollBar.LCLObject);
|
|
||||||
|
|
||||||
end else
|
end else
|
||||||
Result := False;
|
Result := False;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
FScrollBar := TScrollBar(TQtWidget(Handle).LCLObject);
|
QtScrollBar := TQtScrollBar(TScrollBar(TQtWidget(Handle).LCLObject).Handle);
|
||||||
|
|
||||||
if Assigned(FScrollBar) then
|
if Assigned(QtScrollBar) then
|
||||||
begin
|
begin
|
||||||
|
|
||||||
if (csDestroying in FScrollBar.ComponentState) then exit;
|
|
||||||
|
|
||||||
// POS
|
// POS
|
||||||
if (ScrollInfo.fMask and SIF_POS) <> 0 then
|
if (ScrollInfo.fMask and SIF_POS) <> 0 then
|
||||||
ScrollInfo.nPos := FScrollBar.Position;
|
ScrollInfo.nPos := QtScrollBar.getValue;
|
||||||
|
|
||||||
// RANGE
|
// RANGE
|
||||||
if (ScrollInfo.fMask and SIF_RANGE) <> 0
|
if (ScrollInfo.fMask and SIF_RANGE) <> 0
|
||||||
then begin
|
then begin
|
||||||
ScrollInfo.nMin:= FScrollBar.Min;
|
ScrollInfo.nMin:= QtScrollBar.getMin;
|
||||||
ScrollInfo.nMax:= FScrollBar.Max;
|
ScrollInfo.nMax:= QtScrollBar.getMax;
|
||||||
end;
|
end;
|
||||||
// PAGE
|
// PAGE
|
||||||
if (ScrollInfo.fMask and SIF_PAGE) <> 0 then
|
if (ScrollInfo.fMask and SIF_PAGE) <> 0 then
|
||||||
ScrollInfo.nPage := FScrollBar.PageSize;
|
ScrollInfo.nPage := QtScrollBar.getPageStep;
|
||||||
|
|
||||||
// TRACKPOS TrackPos is setted up as in gtk implementation
|
// TRACKPOS TrackPos is setted up as in gtk implementation
|
||||||
if (ScrollInfo.fMask and SIF_TRACKPOS) <> 0 then
|
if (ScrollInfo.fMask and SIF_TRACKPOS) <> 0 then
|
||||||
ScrollInfo.nTrackPos := FScrollBar.Position;
|
ScrollInfo.nTrackPos := QtScrollBar.getValue;
|
||||||
|
|
||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
@ -4235,7 +4226,8 @@ end;
|
|||||||
function TQtWidgetSet.SetScrollInfo(Handle : HWND; SBStyle : Integer;
|
function TQtWidgetSet.SetScrollInfo(Handle : HWND; SBStyle : Integer;
|
||||||
ScrollInfo: TScrollInfo; bRedraw : Boolean): Integer;
|
ScrollInfo: TScrollInfo; bRedraw : Boolean): Integer;
|
||||||
var
|
var
|
||||||
ScrollBar: TScrollBar;
|
Control: TWinControl;
|
||||||
|
ScrollBar: TQtScrollBar;
|
||||||
FScrollInfo: TScrollInfo;
|
FScrollInfo: TScrollInfo;
|
||||||
|
|
||||||
function PrepareScrollInfo: Integer;
|
function PrepareScrollInfo: Integer;
|
||||||
@ -4261,14 +4253,14 @@ begin
|
|||||||
begin
|
begin
|
||||||
FScrollInfo.nMin := ScrollInfo.nMin;
|
FScrollInfo.nMin := ScrollInfo.nMin;
|
||||||
FScrollInfo.nMax := ScrollInfo.nMax;
|
FScrollInfo.nMax := ScrollInfo.nMax;
|
||||||
ScrollBar.Min := ScrollInfo.nMin;
|
ScrollBar.setMinimum(ScrollInfo.nMin);
|
||||||
|
|
||||||
{we must recount ScrollBar.Max since invalid value raises AV}
|
{we must recount ScrollBar.Max since invalid value raises AV}
|
||||||
iRecountMax := FScrollInfo.nMax - ScrollInfo.nPage;
|
iRecountMax := FScrollInfo.nMax - ScrollInfo.nPage;
|
||||||
if iRecountMax < FScrollInfo.nMin then
|
if iRecountMax < FScrollInfo.nMin then
|
||||||
iRecountMax := FScrollInfo.nMin;
|
iRecountMax := FScrollInfo.nMin;
|
||||||
|
|
||||||
ScrollBar.Max := iRecountMax;
|
ScrollBar.setMaximum(iRecountMax);
|
||||||
{ - (ScrollInfo.nMax div 4 PageStep property)); }
|
{ - (ScrollInfo.nMax div 4 PageStep property)); }
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -4276,8 +4268,8 @@ begin
|
|||||||
begin
|
begin
|
||||||
FScrollInfo.nPage := ScrollInfo.nPage;
|
FScrollInfo.nPage := ScrollInfo.nPage;
|
||||||
{segfaults if we don't check Enabled property !}
|
{segfaults if we don't check Enabled property !}
|
||||||
if ScrollBar.Enabled then
|
if ScrollBar.getEnabled then
|
||||||
ScrollBar.PageSize := ScrollInfo.nPage;
|
ScrollBar.setPageStep(ScrollInfo.nPage);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if (ScrollInfo.FMask and SIF_POS) <> 0 then
|
if (ScrollInfo.FMask and SIF_POS) <> 0 then
|
||||||
@ -4285,14 +4277,13 @@ begin
|
|||||||
FScrollInfo.nPos := ScrollInfo.nPos;
|
FScrollInfo.nPos := ScrollInfo.nPos;
|
||||||
FScrollInfo.nTrackPos := ScrollInfo.nPos;
|
FScrollInfo.nTrackPos := ScrollInfo.nPos;
|
||||||
|
|
||||||
if (FScrollInfo.nPos < ScrollBar.Min) then
|
if (FScrollInfo.nPos < ScrollBar.getMin) then
|
||||||
FScrollInfo.nPos := ScrollBar.Min
|
FScrollInfo.nPos := ScrollBar.getMin
|
||||||
else
|
else
|
||||||
if (FScrollInfo.nPos > ScrollBar.Max) then
|
if (FScrollInfo.nPos > ScrollBar.getMax) then
|
||||||
FScrollInfo.nPos := ScrollBar.Max;
|
FScrollInfo.nPos := ScrollBar.getMax;
|
||||||
|
|
||||||
if (ScrollBar.Position <> FScrollInfo.nPos) then
|
ScrollBar.setValue(FScrollInfo.nPos);
|
||||||
ScrollBar.Position := FScrollInfo.nPos;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if (ScrollInfo.FMask and SIF_TRACKPOS) <> 0 then
|
if (ScrollInfo.FMask and SIF_TRACKPOS) <> 0 then
|
||||||
@ -4311,9 +4302,8 @@ begin
|
|||||||
|
|
||||||
if (Handle = 0) then exit;
|
if (Handle = 0) then exit;
|
||||||
|
|
||||||
ScrollBar := NiL;
|
ScrollBar := nil;
|
||||||
case SBStyle of
|
case SBStyle of
|
||||||
|
|
||||||
SB_BOTH:
|
SB_BOTH:
|
||||||
begin
|
begin
|
||||||
{TODO: SB_BOTH fixme }
|
{TODO: SB_BOTH fixme }
|
||||||
@ -4326,17 +4316,10 @@ begin
|
|||||||
if (csReading in TQtWidget(Handle).LCLObject.ComponentState) or
|
if (csReading in TQtWidget(Handle).LCLObject.ComponentState) or
|
||||||
(csDestroying in TQtWidget(Handle).LCLObject.ComponentState) then exit;
|
(csDestroying in TQtWidget(Handle).LCLObject.ComponentState) then exit;
|
||||||
|
|
||||||
ScrollBar := TScrollBar(TQtWidget(Handle).LCLObject);
|
ScrollBar := TQtScrollBar(Handle);
|
||||||
|
|
||||||
if not Assigned(ScrollBar) then exit;
|
if not Assigned(ScrollBar) then exit;
|
||||||
|
ScrollBar.setVisible(bRedraw);
|
||||||
if not Assigned(ScrollBar.Parent) then
|
|
||||||
begin
|
|
||||||
ScrollBar := NiL;
|
|
||||||
exit; {still creating ... set it to Nil because of PrepareScrollInfo() }
|
|
||||||
end;
|
|
||||||
|
|
||||||
ScrollBar.Visible := bRedraw;
|
|
||||||
end; {SB_CTL}
|
end; {SB_CTL}
|
||||||
|
|
||||||
SB_HORZ:
|
SB_HORZ:
|
||||||
@ -4348,15 +4331,17 @@ begin
|
|||||||
|
|
||||||
if TQtWidget(Handle) is TQtAbstractScrollArea then
|
if TQtWidget(Handle) is TQtAbstractScrollArea then
|
||||||
begin
|
begin
|
||||||
if TQtAbstractScrollArea(Handle).horizontalScrollBar <> nil then
|
ScrollBar := TQtAbstractScrollArea(Handle).horizontalScrollBar;
|
||||||
ScrollBar := TScrollBar(TQtAbstractScrollArea(Handle).horizontalScrollBar.LCLObject);
|
|
||||||
end else
|
end else
|
||||||
|
begin
|
||||||
{do not localize !}
|
{do not localize !}
|
||||||
ScrollBar := TScrollBar(TQtWidget(Handle).LCLObject.FindChildControl(TQtWidget(Handle).LCLObject.Name+'_HSCROLLBAR'));
|
Control := TWinControl(TQtWidget(Handle).LCLObject.FindChildControl(TQtWidget(Handle).LCLObject.Name+'_HSCROLLBAR'));
|
||||||
|
if (Control <> nil) and (Control.HandleAllocated) then
|
||||||
|
ScrollBar := TQtScrollBar(Control.Handle)
|
||||||
|
end;
|
||||||
|
|
||||||
if Assigned(ScrollBar) then
|
if Assigned(ScrollBar) then
|
||||||
ScrollBar.Visible := bRedraw;
|
ScrollBar.setVisible(bRedraw);
|
||||||
|
|
||||||
end; {SB_HORZ}
|
end; {SB_HORZ}
|
||||||
|
|
||||||
SB_VERT:
|
SB_VERT:
|
||||||
@ -4368,14 +4353,17 @@ begin
|
|||||||
|
|
||||||
if TQtWidget(Handle) is TQtAbstractScrollArea then
|
if TQtWidget(Handle) is TQtAbstractScrollArea then
|
||||||
begin
|
begin
|
||||||
if TQtAbstractScrollArea(Handle).verticalScrollBar <> nil then
|
ScrollBar := TQtAbstractScrollArea(Handle).verticalScrollBar;
|
||||||
ScrollBar := TScrollBar(TQtAbstractScrollArea(Handle).verticalScrollBar.LCLObject);
|
|
||||||
end else
|
end else
|
||||||
|
begin
|
||||||
{do not localize !}
|
{do not localize !}
|
||||||
ScrollBar := TScrollBar(TQtWidget(Handle).LCLObject.FindChildControl(TQtWidget(Handle).LCLObject.Name+'_VSCROLLBAR'));
|
Control := TWinControl(TQtWidget(Handle).LCLObject.FindChildControl(TQtWidget(Handle).LCLObject.Name+'_VSCROLLBAR'));
|
||||||
|
if (Control <> nil) and (Control.HandleAllocated) then
|
||||||
|
ScrollBar := TQtScrollBar(Control.Handle)
|
||||||
|
end;
|
||||||
|
|
||||||
if Assigned(ScrollBar) then
|
if Assigned(ScrollBar) then
|
||||||
ScrollBar.Visible := bRedraw;
|
ScrollBar.setVisible(bRedraw);
|
||||||
|
|
||||||
end; {SB_VERT}
|
end; {SB_VERT}
|
||||||
|
|
||||||
@ -4416,34 +4404,6 @@ function TQtWidgetSet.ShowScrollBar(Handle: HWND; wBar: Integer; bShow: Boolean)
|
|||||||
var
|
var
|
||||||
w: TQtWidget;
|
w: TQtWidget;
|
||||||
ScrollArea: TQtAbstractScrollArea;
|
ScrollArea: TQtAbstractScrollArea;
|
||||||
ScrollBar: TScrollBar;
|
|
||||||
|
|
||||||
procedure PrepareHorizontalScrollBar;
|
|
||||||
begin
|
|
||||||
if ScrollArea.horizontalScrollBar = nil then
|
|
||||||
begin
|
|
||||||
ScrollBar := TScrollBar.Create(w.LCLObject);
|
|
||||||
ScrollBar.Parent := w.LCLObject;
|
|
||||||
ScrollBar.Kind := sbHorizontal;
|
|
||||||
ScrollArea.sethorizontalScrollBar(TQtScrollBar(ScrollBar.Handle));
|
|
||||||
ScrollArea.setScrollStyle(ssAutoHorizontal);
|
|
||||||
ScrollArea.horizontalScrollBar.Show;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure PrepareVerticalScrollBar;
|
|
||||||
begin
|
|
||||||
if ScrollArea.verticalScrollBar = nil then
|
|
||||||
begin
|
|
||||||
ScrollBar := TScrollBar.Create(w.LCLObject);
|
|
||||||
ScrollBar.Parent := w.LCLObject;
|
|
||||||
ScrollBar.Kind := sbVertical;
|
|
||||||
ScrollArea.setverticalScrollBar(TQtScrollBar(ScrollBar.Handle));
|
|
||||||
ScrollArea.setScrollStyle(ssAutoVertical);
|
|
||||||
ScrollArea.verticalScrollBar.Show;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{$ifdef VerboseQtWinAPI}
|
{$ifdef VerboseQtWinAPI}
|
||||||
WriteLn('[WinAPI ShowScrollBar] Handle: ', dbghex(Handle),' wBar: ',wBar);
|
WriteLn('[WinAPI ShowScrollBar] Handle: ', dbghex(Handle),' wBar: ',wBar);
|
||||||
@ -4461,8 +4421,6 @@ begin
|
|||||||
case wBar of
|
case wBar of
|
||||||
SB_BOTH:
|
SB_BOTH:
|
||||||
begin
|
begin
|
||||||
PrepareHorizontalScrollBar;
|
|
||||||
PrepareVerticalScrollBar;
|
|
||||||
if bShow then
|
if bShow then
|
||||||
ScrollArea.setScrollStyle(ssBoth)
|
ScrollArea.setScrollStyle(ssBoth)
|
||||||
else
|
else
|
||||||
@ -4471,7 +4429,6 @@ begin
|
|||||||
|
|
||||||
SB_HORZ:
|
SB_HORZ:
|
||||||
begin
|
begin
|
||||||
PrepareHorizontalScrollBar;
|
|
||||||
if bShow then
|
if bShow then
|
||||||
ScrollArea.setScrollStyle(ssHorizontal)
|
ScrollArea.setScrollStyle(ssHorizontal)
|
||||||
else
|
else
|
||||||
@ -4480,7 +4437,6 @@ begin
|
|||||||
|
|
||||||
SB_VERT:
|
SB_VERT:
|
||||||
begin
|
begin
|
||||||
PrepareVerticalScrollBar;
|
|
||||||
if bShow then
|
if bShow then
|
||||||
ScrollArea.setScrollStyle(ssVertical)
|
ScrollArea.setScrollStyle(ssVertical)
|
||||||
else
|
else
|
||||||
|
@ -337,6 +337,11 @@ begin
|
|||||||
|
|
||||||
QtScrollBar.AttachEvents;
|
QtScrollBar.AttachEvents;
|
||||||
|
|
||||||
|
case TScrollBar(AWinControl).Kind of
|
||||||
|
sbHorizontal: QtScrollBar.SetOrientation(QtHorizontal);
|
||||||
|
sbVertical: QtScrollBar.SetOrientation(QtVertical);
|
||||||
|
end;
|
||||||
|
|
||||||
Result := TLCLIntfHandle(QtScrollbar);
|
Result := TLCLIntfHandle(QtScrollbar);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user