LCL: TTrackbar: introduced TWSTrackBar.SetOrientation(), default implementation is RecreateWnd(), but should be implemented for ws which supports changing trackbar orientation. fixes #19387

git-svn-id: trunk@30846 -
This commit is contained in:
zeljko 2011-05-22 08:55:33 +00:00
parent fa52e18965
commit 5306a46d58
3 changed files with 50 additions and 14 deletions

View File

@ -132,9 +132,8 @@ begin
OldWidth:=Width;
OldHeight:=Height;
SetBounds(Left,Top,OldHeight,OldWidth);
// TODO: Remove RecreateWnd
if HandleAllocated then
RecreateWnd(Self);
TWSTrackBarClass(WidgetSetClass).SetOrientation(Self, FOrientation);
end;
end;
end;

View File

@ -205,6 +205,7 @@ type
class procedure ApplyChanges(const ATrackBar: TCustomTrackBar); override;
class function GetPosition(const ATrackBar: TCustomTrackBar): integer; override;
class procedure SetPosition(const ATrackBar: TCustomTrackBar; const NewPosition: integer); override;
class procedure SetOrientation(const ATrackBar: TCustomTrackBar; const AOrientation: TTrackBarOrientation); override;
end;
{ TQtWSCustomTreeView }
@ -279,20 +280,20 @@ begin
Result := TLCLIntfHandle(QtTrackBar);
end;
function TrackBarReversed(const ATrackBar: TCustomTrackBar;
const AQtTrackBar: TQtTrackBar): Boolean;
begin
Result :=
((ATrackBar.Orientation = trHorizontal) and
(AQtTrackbar.getInvertedAppereance <> ATrackBar.Reversed))
or
((ATrackBar.Orientation = trVertical) and
(AQtTrackbar.getInvertedAppereance <> not ATrackBar.Reversed))
end;
class procedure TQtWSTrackBar.ApplyChanges(const ATrackBar: TCustomTrackBar);
var
QtTrackBar: TQtTrackBar;
function TrackBarReversed: Boolean;
begin
Result :=
((ATrackBar.Orientation = trHorizontal) and
(QtTrackbar.getInvertedAppereance <> ATrackBar.Reversed))
or
((ATrackBar.Orientation = trVertical) and
(QtTrackbar.getInvertedAppereance <> not ATrackBar.Reversed))
end;
begin
if not WSCheckHandleAllocated(ATrackBar, 'ApplyChanges') then
@ -318,7 +319,7 @@ begin
if (QtTrackBar.getOrientation <>
TrackBarOrientationToQtOrientationMap[ATrackBar.Orientation])
or TrackBarReversed then
or TrackBarReversed(ATrackBar, QtTrackBar) then
begin
QtTrackBar.Hide;
QtTrackBar.setOrientation(TrackBarOrientationToQtOrientationMap[ATrackBar.Orientation]);
@ -361,6 +362,35 @@ begin
end;
end;
class procedure TQtWSTrackBar.SetOrientation(const ATrackBar: TCustomTrackBar;
const AOrientation: TTrackBarOrientation);
var
QtTrackBar: TQtTrackBar;
begin
if not WSCheckHandleAllocated(ATrackBar, 'SetOrientation') then
Exit;
QtTrackBar := TQtTrackBar(ATrackBar.Handle);
QtTrackBar.BeginUpdate;
try
if (QtTrackBar.getOrientation <>
TrackBarOrientationToQtOrientationMap[ATrackBar.Orientation])
or TrackBarReversed(ATrackBar, QtTrackBar) then
begin
QtTrackBar.Hide;
QtTrackBar.setOrientation(TrackBarOrientationToQtOrientationMap[ATrackBar.Orientation]);
if ATrackBar.Orientation = trHorizontal then
QtTrackBar.setInvertedAppereance(ATrackBar.Reversed)
else
{make it delphi and msdn compatibile when vertical then 0 = top}
QtTrackBar.setInvertedAppereance(not ATrackBar.Reversed);
QtTrackBar.setInvertedControls(False);
QtTrackBar.Show;
end;
finally
QtTrackBar.EndUpdate;
end;
end;
{ TQtWSProgressBar }
class procedure TQtWSProgressBar.SetRangeStyle(AProgressBar: TQtProgressBar;

View File

@ -195,6 +195,7 @@ type
published
class procedure ApplyChanges(const ATrackBar: TCustomTrackBar); virtual;
class function GetPosition(const ATrackBar: TCustomTrackBar): integer; virtual;
class procedure SetOrientation(const ATrackBar: TCustomTrackBar; const AOrientation: TTrackBarOrientation); virtual;
class procedure SetPosition(const ATrackBar: TCustomTrackBar; const NewPosition: integer); virtual;
class procedure SetTick(const ATrackBar: TCustomTrackBar; const ATick: integer); virtual;
end;
@ -569,6 +570,12 @@ begin
Result := 0;
end;
class procedure TWSTrackBar.SetOrientation(const ATrackBar: TCustomTrackBar;
const AOrientation: TTrackBarOrientation);
begin
RecreateWnd(ATrackBar);
end;
class procedure TWSTrackBar.SetPosition(const ATrackBar: TCustomTrackBar; const NewPosition: integer);
begin
end;