Patch from zeljko. Implements TQtAbstractSlider, TQtScrollBar, TQtTrackBar, TQtPen (

CreatePenIndirect) and TQtRegion ( CreateRectRgn ).

git-svn-id: trunk@10172 -
This commit is contained in:
sekelsenmat 2006-11-04 21:09:12 +00:00
parent 0c337fd4f3
commit 4969cee64b
6 changed files with 777 additions and 4 deletions

View File

@ -118,6 +118,37 @@ type
procedure setStyle(style: QtBrushStyle);
end;
{ TQtPen }
TQtPen = class(TObject)
private
public
Widget: QPenH;
public
constructor Create(CreateHandle: Boolean); virtual;
destructor Destroy; override;
function Width: Integer;
function Style: QtPenStyle;
procedure setStyle(style: QtPenStyle);
procedure setBrush(brush: QBrushH);
procedure setWidth(p1: Integer);
procedure setColor(p1: TQColor);
end;
{ TQtRegion }
TQtRegion = class(TObject)
private
public
Widget: QRegionH;
public
constructor Create(CreateHandle: Boolean); virtual; overload;
constructor Create(CreateHandle: Boolean; X1,Y1,X2,Y2: Integer); virtual; overload;
destructor Destroy; override;
end;
{ TQtDeviceContext }
TQtDeviceContext = class(TObject)
@ -129,10 +160,13 @@ type
vBrush: TQtBrush;
vFont: TQtFont;
vImage: QImageH;
vPen: TQtPen;
vRegion: TQtRegion;
public
constructor Create(WidgetHandle: THandle); virtual;
destructor Destroy; override;
public
procedure drawPoint(x1: Integer; y1: Integer);
procedure drawRect(x1: Integer; y1: Integer; w: Integer; h: Integer);
procedure drawText(x: Integer; y: Integer; s: PWideString);
procedure drawLine(x1: Integer; y1: Integer; x2: Integer; y2: Integer);
@ -143,6 +177,10 @@ type
procedure setFont(f: TQtFont);
function brush: TQtBrush;
procedure setBrush(brush: TQtBrush);
function pen: TQtPen;
procedure setPen(pen: TQtPen);
function region: TQtRegion;
procedure setRegion(region: TQtRegion);
procedure drawImage(targetRect: PRect; image: QImageH; sourceRect: PRect; flags: QtImageConversionFlags = QtAutoColor);
end;
@ -447,6 +485,158 @@ begin
QBrush_setStyle(Widget, style);
end;
{ TQtPen }
{------------------------------------------------------------------------------
Function: TQtPen.Create
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
constructor TQtPen.Create(CreateHandle: Boolean);
var
MyColor: TQColor;
begin
{$ifdef VerboseQt}
WriteLn('TQtPen.Create CreateHandle: ', dbgs(CreateHandle));
{$endif}
if CreateHandle then Widget := QPen_create;
end;
{------------------------------------------------------------------------------
Function: TQtPen.Destroy
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
destructor TQtPen.Destroy;
begin
{$ifdef VerboseQt}
WriteLn('TQtPen.Destroy');
{$endif}
QPen_destroy(Widget);
inherited Destroy;
end;
{------------------------------------------------------------------------------
Function: TQtPen.setBrush
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtPen.setBrush(brush: QBrushH);
begin
QPen_setBrush(Widget, brush);
end;
{------------------------------------------------------------------------------
Function: TQtPen.setStyle
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtPen.setStyle(style: QtPenStyle);
begin
QPen_setStyle(Widget, style);
end;
{------------------------------------------------------------------------------
Function: TQtPen.setWidth
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtPen.setWidth(p1: Integer);
begin
QPen_setWidth(Widget, p1);
end;
{------------------------------------------------------------------------------
Function: TQtPen.Style
Params: None
Returns: QPenStyle
------------------------------------------------------------------------------}
function TQtPen.Style: QtPenStyle;
begin
Result := QPen_Style(Widget);
end;
{------------------------------------------------------------------------------
Function: TQtPen.Width
Params: None
Returns: integer , width of current pen
------------------------------------------------------------------------------}
function TQtPen.Width: Integer;
begin
Result := QPen_Width(Widget);
end;
{------------------------------------------------------------------------------
Function: TQtPen.setColor
Params: p1: TQColor
Returns: Nothing
Setting pen color.
------------------------------------------------------------------------------}
procedure TQtPen.setColor(p1: TQColor);
var
p2: TQColor;
begin
QColor_fromRGB(@p2,p1.r,p1.g,p1.b,p1.Alpha);
QPen_setColor(Widget, @p2);
end;
{ TQtRegion }
{------------------------------------------------------------------------------
Function: TQtRegion.Create
Params: CreateHandle: Boolean
Returns: Nothing
------------------------------------------------------------------------------}
constructor TQtRegion.Create(CreateHandle: Boolean);
begin
// Creates the widget
{$ifdef VerboseQt}
WriteLn('TQtRegion.Create CreateHandle: ', dbgs(CreateHandle));
{$endif}
if CreateHandle then Widget := QRegion_create;
end;
{------------------------------------------------------------------------------
Function: TQtRegion.Create (CreateRectRgn)
Params: CreateHandle: Boolean; X1,Y1,X2,Y2:Integer
Returns: Nothing
------------------------------------------------------------------------------}
constructor TQtRegion.Create(CreateHandle: Boolean; X1,Y1,X2,Y2:Integer);
begin
// Creates the widget
{$ifdef VerboseQt}
WriteLn('TQtRegion.Create CreateHandle: ', dbgs(CreateHandle));
{$endif}
if CreateHandle then Widget := QRegion_create(X1,Y1,X2,Y2);
end;
{------------------------------------------------------------------------------
Function: TQtRegion.Destroy
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
destructor TQtRegion.Destroy;
begin
{$ifdef VerboseQt}
WriteLn('TQtRegion.Destroy');
{$endif}
QRegion_destroy(Widget);
inherited Destroy;
end;
{ TQtDeviceContext }
{------------------------------------------------------------------------------
@ -473,6 +663,8 @@ begin
vBrush := TQtBrush.Create(False);
vFont := TQtFont.Create(False);
vPen := TQtPen.Create(False);
vRegion := TQtRegion.Create(False);
end;
{------------------------------------------------------------------------------
@ -490,6 +682,10 @@ begin
vBrush.Free;
vFont.Widget := nil;
vFont.Free;
vPen.Widget := nil;
vPen.Free;
vRegion.Widget := nil;
vRegion.Free;
if vImage <> nil then QImage_destroy(vImage);
@ -567,6 +763,18 @@ begin
QPainter_drawEllipse(Widget, x, y, w, h);
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.drawPoint
Params: x1,y1 : Integer
Returns: Nothing
Draws a point. Helper function of winapi. DrawFocusRect
------------------------------------------------------------------------------}
procedure TQtDeviceContext.drawPoint(x1: Integer; y1: Integer);
begin
QPainter_drawPoint(Widget, x1, y1);
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.setBrushOrigin
Params: None
@ -632,6 +840,48 @@ begin
if (brush.Widget <> nil) and (Widget <> nil) then QPainter_setBrush(Widget, brush.Widget);
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.pen
Params: None
Returns: The current pen object of the DC
------------------------------------------------------------------------------}
function TQtDeviceContext.pen: TQtPen;
begin
vPen.Widget := QPainter_pen(Widget);
Result := vPen;
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.setPen
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtDeviceContext.setPen(pen: TQtPen);
begin
if (pen.Widget <> nil) and (Widget <> nil) then QPainter_setPen(Widget, pen.Widget);
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.region
Params: None
Returns: The current clip region
------------------------------------------------------------------------------}
function TQtDeviceContext.region: TQtRegion;
begin
QPainter_clipRegion(Widget, vRegion.Widget);
Result := vRegion;
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.setRegion
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtDeviceContext.setRegion(region: TQtRegion);
begin
if (region.Widget <> nil) and (Widget <> nil) then QPainter_setClipRegion(Widget, Region.Widget);
end;
{------------------------------------------------------------------------------
Function: TQtDeviceContext.drawImage
Params: None

View File

@ -73,6 +73,8 @@ type
procedure setParent(parent: QWidgetH);
procedure setWindowFlags(_type: QtWindowFlags);
function windowFlags: QtWindowFlags;
procedure setWidth(p1: Integer);
procedure setHeight(p1: Integer);
end;
{ TQtAbstractButton }
@ -181,6 +183,46 @@ type
procedure setFrameShadow(p1: QFrameShadow);
end;
{ TQtAbstractSlider , inherited by TQtScrollBar, TQtTrackBar}
TQtAbstractSlider = class(TQtWidget)
private
public
constructor Create(const AWinControl: TWinControl; const AParams: TCreateParams); override;
destructor Destroy; override;
procedure setInvertedAppereance(p1: Boolean); virtual;
procedure setInvertedControls(p1: Boolean); virtual;
procedure setMaximum(p1: Integer); virtual;
procedure setMinimum(p1: Integer); virtual;
procedure setOrientation(p1: QtOrientation); virtual;
procedure setPageStep(p1: Integer); virtual;
procedure setRange(minimum: Integer; maximum: Integer); virtual;
procedure setSingleStep(p1: Integer); virtual;
procedure setSliderDown(p1: Boolean); virtual;
procedure setSliderPosition(p1: Integer); virtual;
procedure setTracking(p1: Boolean); virtual;
procedure setValue(p1: Integer); virtual;
end;
{ TQtScrollBar }
TQtScrollBar = class(TQtAbstractSlider)
private
public
constructor Create(const AWinControl: TWinControl; const AParams: TCreateParams); override;
end;
{ TQtTrackBar }
TQtTrackBar = class(TQtAbstractSlider)
private
public
constructor Create(const AWinControl: TWinControl; const AParams: TCreateParams); override;
procedure SetTickPosition(Value: QSliderTickPosition);
procedure SetTickInterval(Value: Integer);
end;
{ TQtLineEdit }
TQtLineEdit = class(TQtWidget)
@ -819,6 +861,24 @@ begin
Result := QWidget_windowFlags(Widget);
end;
procedure TQtWidget.setWidth(p1: Integer);
var
R: TRect;
begin
QWidget_geometry(Widget, @R);
R.Right := p1;
QWidget_setGeometry(Widget,@R);
end;
procedure TQtWidget.setHeight(p1: Integer);
var
R: TRect;
begin
QWidget_geometry(Widget, @R);
R.Bottom := p1;
QWidget_setGeometry(Widget, @R);
end;
{------------------------------------------------------------------------------
Function: TQtWidget.QtKeyToLCLKey
Params: None
@ -1757,6 +1817,243 @@ begin
QFrame_setFrameShadow(QFrameH(Widget), p1);
end;
{ TQtAbstractSlider }
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.Create
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
constructor TQtAbstractSlider.Create(const AWinControl: TWinControl;
const AParams: TCreateParams);
var
Parent: QWidgetH;
begin
// Initializes the properties
LCLObject := AWinControl;
// Creates the widget
{$ifdef VerboseQt}
WriteLn('TQtAbstractSlider.Create');
{$endif}
Parent := TQtWidget(AWinControl.Parent.Handle).Widget;
Widget := QAbstractSlider_create(Parent);
// Sets it´ s initial properties
QWidget_setGeometry(Widget, AWinControl.Left, AWinControl.Top,
AWinControl.Width, AWinControl.Height);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.Destroy
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
destructor TQtAbstractSlider.Destroy;
begin
{$ifdef VerboseQt}
WriteLn('TQtAbstractSlider.Destroy');
{$endif}
QAbstractSlider_destroy(QAbstractSliderH(Widget));
inherited Destroy;
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setInvertedAppereance
Params: p1: Boolean
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setInvertedAppereance(p1: Boolean);
begin
QAbstractSlider_setInvertedAppearance(QAbstractSliderH(Widget), p1);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setInvertedControls
Params: p1: Boolean
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setInvertedControls(p1: Boolean);
begin
QAbstractSlider_setInvertedControls(QAbstractSliderH(Widget), p1);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setMaximum
Params: p1: Integer
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setMaximum(p1: Integer);
begin
QAbstractSlider_setMaximum(QAbstractSliderH(Widget), p1);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setMinimum
Params: p1: Integer
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setMinimum(p1: Integer);
begin
QAbstractSlider_setMinimum(QAbstractSliderH(Widget), p1);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setOrientation
Params: p1: QtOrientation (QtHorizontal or QtVertical)
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setOrientation(p1: QtOrientation);
begin
QAbstractSlider_setOrientation(QAbstractSliderH(Widget), p1);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setPageStep
Params: p1: Integer
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setPageStep(p1: Integer);
begin
QAbstractSlider_setPageStep(QAbstractSliderH(Widget), p1);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setRange
Params: minimum,maximum: Integer
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setRange(minimum: Integer; maximum: Integer);
begin
QAbstractSlider_setRange(QAbstractSliderH(Widget), minimum, maximum);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setSingleStep
Params: p1: Integer
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setSingleStep(p1: Integer);
begin
QAbstractSlider_setSingleStep(QAbstractSliderH(Widget), p1);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setSliderDown
Params: p1: Boolean
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setSliderDown(p1: Boolean);
begin
QAbstractSlider_setSliderDown(QAbstractSliderH(Widget), p1);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setSliderPosition
Params: p1: Integer
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setSliderPosition(p1: Integer);
begin
QAbstractSlider_setSliderPosition(QAbstractSliderH(Widget), p1);
end;
{------------------------------------------------------------------------------
Function: TQtAbstractSlider.setTracking
Params: p1: Boolean
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setTracking(p1: Boolean);
begin
QAbstractSlider_setTracking(QAbstractSliderH(Widget), p1);
end;
{-----------------------------------------------------------------------------
Function: TQtAbstractSlider.setValue
Params: p1: Integer
Returns: Nothing
------------------------------------------------------------------------------}
procedure TQtAbstractSlider.setValue(p1: Integer);
begin
QAbstractSlider_setValue(QAbstractSliderH(Widget), p1);
end;
{ TQtScrollBar }
{------------------------------------------------------------------------------
Function: TQtScrollBar.Create
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
constructor TQtScrollBar.Create(const AWinControl: TWinControl;
const AParams: TCreateParams);
var
Parent: QWidgetH;
begin
// Initializes the properties
LCLObject := AWinControl;
// Creates the widget
{$ifdef VerboseQt}
WriteLn('TQtScrollBar.Create');
{$endif}
Parent := TQtWidget(AWinControl.Parent.Handle).Widget;
Widget := QScrollBar_create(Parent);
// Sets it´ s initial properties
QWidget_setGeometry(Widget, AWinControl.Left, AWinControl.Top,
AWinControl.Width, AWinControl.Height);
end;
{ TQtTrackBar }
{------------------------------------------------------------------------------
Function: TQtTrackBar.Create
Params: None
Returns: Nothing
------------------------------------------------------------------------------ }
constructor TQtTrackBar.Create(const AWinControl: TWinControl;
const AParams: TCreateParams);
var
Parent: QWidgetH;
begin
// Initializes the properties
LCLObject := AWinControl;
// Creates the widget
{$ifdef VerboseQt}
WriteLn('TQtTrackBar.Create');
{$endif}
Parent := TQtWidget(AWinControl.Parent.Handle).Widget;
Widget := QSlider_create(Parent);
// Sets it´ s initial properties
QWidget_setGeometry(Widget, AWinControl.Left, AWinControl.Top,
AWinControl.Width, AWinControl.Height);
end;
{------------------------------------------------------------------------------
Function: TQtTrackBar.setTickPosition
Params: Value: QSliderTickPosition
Returns: Nothing
------------------------------------------------------------------------------ }
procedure TQtTrackBar.setTickPosition(Value: QSliderTickPosition);
begin
QSlider_setTickPosition(QSliderH(Widget), Value);
end;
{------------------------------------------------------------------------------
Function: TQtTrackBar.setTickInterval
Params: Value: Integer
Returns: Nothing
------------------------------------------------------------------------------ }
procedure TQtTrackBar.SetTickInterval(Value: Integer);
begin
QSlider_setTickInterval(QSliderH(Widget), Value);
end;
{ TQtLineEdit }
{------------------------------------------------------------------------------

View File

@ -307,16 +307,63 @@ begin
end;
end;
{------------------------------------------------------------------------------
Function: CreatePenIndirect
Params: none
Returns: HPEN
------------------------------------------------------------------------------}
function TQtWidgetSet.CreatePenIndirect(const LogPen: TLogPen): HPEN;
var
QtPen: TQtPen;
color: TQColor;
begin
// Assert(False, 'trace:[TQtWidgetSet.CreatePenIndirect]');
// writeln('CreatePenIndirect->');
Result := 0;
QtPen := TQtPen.Create(True);
with LogPen do
begin
case lopnStyle of
PS_SOLID: QtPen.setStyle(QtSolidLine);
PS_DASH: QtPen.setStyle(QtDashLine);
PS_DOT: QtPen.setStyle(QtDotLine);
PS_DASHDOT:QtPen.setStyle(QtDashDotLine);
PS_DASHDOTDOT:QtPen.setStyle(QtDashDotDotLine);
PS_USERSTYLE: QtPen.setStyle(QtCustomDashLine);
PS_NULL:QtPen.setStyle(QtNoPen);
else
QtPen.setStyle(QtSolidLine);
end;
QtPen.setWidth(lopnWidth.X);
{TODO: FIX Color issues }
color.Alpha := TColorToFPColor(lopnColor).Alpha;
color.r := TColorToFPColor(lopnColor).Red;
color.g := TColorToFPColor(lopnColor).Green;
color.b := TColorToFPColor(lopnColor).Blue;
QtPen.setColor(Color);
end;
Result := HPEN(QtPen);
end;
{------------------------------------------------------------------------------
Function: CreateRectRgn
Params: none
Returns: Nothing
Returns: HRGN
------------------------------------------------------------------------------}
function TQtWidgetSet.CreateRectRgn(X1,Y1,X2,Y2 : Integer): HRGN;
var
QtRegion: TQtRegion;
begin
Result := 0;
QtRegion := TQtRegion.Create(True, X1,Y1,X2,Y2);
Result := HRGN(QtRegion);
end;
{------------------------------------------------------------------------------

View File

@ -35,6 +35,7 @@ function CreateBrushIndirect(const LogBrush: TLogBrush): HBRUSH; override;
function CreateCompatibleDC(DC: HDC): HDC; override;
function CreateFontIndirect(const LogFont: TLogFont): HFONT; override;
function CreateFontIndirectEx(const LogFont: TLogFont; const LongFontName: string): HFONT; override;
function CreatePenIndirect(const LogPen: TLogPen): HBRUSH; override;
function CreateRectRgn(X1, Y1, X2, Y2: Integer): HRGN; override;
function DeleteObject(GDIObject: HGDIOBJ): Boolean; override;

View File

@ -133,6 +133,10 @@ type
private
protected
public
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): HWND; override;
class procedure DestroyHandle(const AWinControl: TWinControl); override;
class procedure ApplyChanges(const ATrackBar: TCustomTrackBar); override;
class procedure SetPosition(const ATrackBar: TCustomTrackBar; const NewPosition: integer); override;
end;
{ TQtWSCustomTreeView }
@ -154,6 +158,86 @@ type
implementation
{ TQtWSTrackBar }
class function TQtWSTrackBar.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): HWND;
var
QtTrackBar: TQtTrackBar;
{ Method: TMethod;
Hook : QObject_hookH;}
begin
QtTrackBar := TQtTrackBar.Create(AWinControl, AParams);
with AParams do
begin
if TCustomTrackBar(AWinControl).Orientation = trVertical then
begin
QtTrackBar.setInvertedAppereance(True);
QtTrackBar.setInvertedControls(True);
end else
begin
QtTrackBar.setInvertedAppereance(False);
QtTrackBar.setInvertedControls(False);
end;
end;
{ Hook := QObject_hook_create(QtWidget.Widget);
TEventFilterMethod(Method) := QtWidget.EventFilter;
QObject_hook_hook_events(Hook, Method);}
Result := THandle(QtTrackBar);
end;
class procedure TQtWSTrackBar.DestroyHandle(const AWinControl: TWinControl);
begin
AWinControl.Handle := 0;
end;
class procedure TQtWSTrackBar.ApplyChanges(const ATrackBar: TCustomTrackBar);
var
QtTrackBar: TQtTrackBar;
begin
QtTrackBar := TQtTrackBar(ATrackBar.Handle);
QtTrackBar.setRange(ATrackBar.Min, ATrackBar.Max);
case ATrackBar.TickMarks of
tmBoth:QtTrackBar.SetTickPosition(QSliderTicksBothSides);
tmTopLeft:QtTrackBar.SetTickPosition(QSliderTicksAbove);
tmBottomRight:QtTrackBar.SetTickPosition(QSliderTicksBelow);
end;
QtTrackBar.setPageStep(ATrackBar.PageSize);
QtTrackBar.setTickInterval(ATrackBar.Frequency);
QtTrackBar.setSliderPosition(ATrackBar.Position);
case ATrackBar.Orientation of
trVertical:
begin
QtTrackBar.setOrientation(QtVertical);
QtTrackBar.setInvertedAppereance(True);
QtTrackBar.setInvertedControls(True);
end;
else
begin
QtTrackBar.setOrientation(QtHorizontal);
QtTrackBar.setInvertedAppereance(False);
QtTrackBar.setInvertedControls(False);
end;
end;
end;
class procedure TQtWSTrackBar.SetPosition(const ATrackBar: TCustomTrackBar; const NewPosition: integer);
var
QtTrackBar: TQtTrackBar;
begin
QtTrackBar := TQtTrackBar(ATrackBar.Handle);
QtTrackBar.setValue(NewPosition);
end;
{ TQtWSProgressBar }
class function TQtWSProgressBar.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): HWND;
@ -309,7 +393,7 @@ initialization
// RegisterWSComponent(TCustomToolBar, TQtWSToolBar);
// RegisterWSComponent(TCustomToolButton, TQtWSToolButton);
// RegisterWSComponent(TCustomToolBar, TQtWSToolBar);
// RegisterWSComponent(TCustomTrackBar, TQtWSTrackBar);
RegisterWSComponent(TCustomTrackBar, TQtWSTrackBar);
// RegisterWSComponent(TCustomTreeView, TQtWSCustomTreeView);
// RegisterWSComponent(TCustomTreeView, TQtWSTreeView);
////////////////////////////////////////////////////

View File

@ -42,6 +42,10 @@ type
private
protected
public
class function CreateHandle(const AWinControl: TWinControl;
const AParams: TCreateParams): TLCLIntfHandle; override;
class procedure DestroyHandle(const AWinControl: TWinControl); override;
class procedure SetParams(const AScrollBar: TCustomScrollBar); override;
end;
{ TQtWSCustomGroupBox }
@ -299,6 +303,96 @@ implementation
uses LMessages;
{ TQtWSScrollBar }
{------------------------------------------------------------------------------
Method: TQtWSCustomScrollBar.CreateHandle
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
class function TQtWSScrollBar.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): HWND;
var
QtScrollBar: TQtScrollBar;
Method: TMethod;
Hook : QScrollBar_hookH;
begin
QtScrollBar := TQtScrollBar.Create(AWinControl, AParams);
case TScrollBar(AWinControl).Kind of
sbHorizontal:
begin
QtScrollBar.SetOrientation(QtHorizontal);
QtScrollBar.setInvertedAppereance(False);
QTScrollBar.setInvertedControls(False);
end;
sbVertical:
begin
QtScrollBar.SetOrientation(QtVertical);
QtScrollBar.setInvertedAppereance(False);
QTScrollBar.setInvertedControls(False);
end;
end;
QtScrollbar.setWidth(TScrollBar(AWinControl).Width);
QtScrollbar.setHeight(TScrollBar(AWinControl).Height);
QtScrollbar.setValue(TScrollBar(AWinControl).Position);
QtScrollBar.setPageStep(TScrollBar(AWinControl).PageSize);
// Various Events
// Hook := QScrollBar_hook_create(QtScrollBar.Widget);
// TEventFilterMethod(Method) := QtScrollBar.EventFilter;
Result := THandle(QtScrollbar);
end;
{------------------------------------------------------------------------------
Method: TQtWSCustomScrollBar.DestroyHandle
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
class procedure TQtWSScrollBar.DestroyHandle(const AWinControl: TWinControl);
begin
TQtScrollBar(AWinControl.Handle).Free;
end;
{------------------------------------------------------------------------------
Method: TQtWSCustomScrollBar.SetParams
Params: None
Returns: Nothing
------------------------------------------------------------------------------}
class procedure TQtWSScrollBar.SetParams(const AScrollBar: TCustomScrollBar);
var
QtScrollBar: TQtScrollBar;
begin
QtScrollBar := TQtScrollBar(AScrollBar.Handle);
// TODO: Check HeightForWidth() set here or we have lazarus bug ?
// AScrollBar.Width;
QtScrollBar.setValue(AScrollBar.Position);
QtScrollBar.setPageStep(AScrollBar.PageSize);
QtScrollBar.setRange(AScrollBar.Min, AScrollBar.Max);
QtScrollbar.setWidth(AscrollBar.Width);
QtScrollbar.setHeight(AscrollBar.Height);
case AScrollBar.Kind of
sbHorizontal:
begin
QTScrollBar.SetOrientation(QtHorizontal);
QTScrollBar.setInvertedAppereance(False);
QTScrollBar.setInvertedControls(False);
end;
sbVertical:
begin
QTScrollBar.SetOrientation(QtVertical);
QTScrollBar.setInvertedAppereance(False);
QTScrollBar.setInvertedControls(False);
end;
end;
end;
{ TQtWSCustomListBox }
{------------------------------------------------------------------------------
@ -1074,7 +1168,7 @@ initialization
// To improve speed, register only classes
// which actually implement something
////////////////////////////////////////////////////
// RegisterWSComponent(TScrollBar, TQtWSScrollBar);
RegisterWSComponent(TScrollBar, TQtWSScrollBar);
RegisterWSComponent(TCustomGroupBox, TQtWSCustomGroupBox);
// RegisterWSComponent(TGroupBox, TQtWSGroupBox);
RegisterWSComponent(TCustomComboBox, TQtWSCustomComboBox);