diff --git a/lcl/interfaces/fpgui/fpguiint.pp b/lcl/interfaces/fpgui/fpguiint.pp index e869bde623..28d6e3c5ff 100644 --- a/lcl/interfaces/fpgui/fpguiint.pp +++ b/lcl/interfaces/fpgui/fpguiint.pp @@ -112,6 +112,7 @@ uses FpGuiWSForms, FpGuiWSMenus, FpGuiWSStdCtrls, + FpGuiWSComCtrls, //////////////////////////////////////////////////// Graphics, buttons, Menus; diff --git a/lcl/interfaces/fpgui/fpguiwscomctrls.pp b/lcl/interfaces/fpgui/fpguiwscomctrls.pp index dd4d9fc7b6..6e79f41324 100644 --- a/lcl/interfaces/fpgui/fpguiwscomctrls.pp +++ b/lcl/interfaces/fpgui/fpguiwscomctrls.pp @@ -101,6 +101,12 @@ type private protected public + published + class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; + class procedure DestroyHandle(const AWinControl: TWinControl); override; + class procedure ApplyChanges(const AProgressBar: TCustomProgressBar); override; + class procedure SetPosition(const AProgressBar: TCustomProgressBar; const NewPosition: integer); override; +// class procedure SetStyle(const AProgressBar: TCustomProgressBar; const NewStyle: TProgressBarStyle); override; end; { TFpGuiWSCustomUpDown } @@ -162,6 +168,38 @@ type implementation +uses + fpg_progressbar; + +{ TFpGuiWSProgressBar } + +class function TFpGuiWSProgressBar.CreateHandle(const AWinControl: TWinControl; + const AParams: TCreateParams): TLCLIntfHandle; +begin + Result := TLCLIntfHandle(TFPGUIPrivateProgressBar.Create(AWinControl, AParams)); +end; + +class procedure TFpGuiWSProgressBar.DestroyHandle(const AWinControl: TWinControl); +begin + TFPGUIPrivateProgressBar(AWinControl.Handle).Free; + AWinControl.Handle := 0; +end; + +class procedure TFpGuiWSProgressBar.ApplyChanges( + const AProgressBar: TCustomProgressBar); +begin + SetPosition(AProgressBar, AProgressBar.Position); +end; + +class procedure TFpGuiWSProgressBar.SetPosition( + const AProgressBar: TCustomProgressBar; const NewPosition: integer); +var + lProgressBar: TfpgProgressBar; +begin + lProgressBar := TFPGUIPrivateProgressBar(AProgressBar.Handle).ProgressBar; + lProgressBar.Position := NewPosition; +end; + { TFpGuiWSCustomNotebook } class function TFpGuiWSCustomNotebook.CreateHandle( diff --git a/lcl/interfaces/fpgui/fpguiwsfactory.pas b/lcl/interfaces/fpgui/fpguiwsfactory.pas index 3ee04c1018..19d712dbeb 100644 --- a/lcl/interfaces/fpgui/fpguiwsfactory.pas +++ b/lcl/interfaces/fpgui/fpguiwsfactory.pas @@ -175,7 +175,8 @@ end; function RegisterCustomProgressBar: Boolean; alias : 'WSRegisterCustomProgressBar'; begin - Result := False; + RegisterWSComponent(TCustomProgressBar, TFpGuiWSProgressBar); + Result := True; end; function RegisterCustomUpDown: Boolean; alias : 'WSRegisterCustomUpDown'; diff --git a/lcl/interfaces/fpgui/fpguiwsprivate.pp b/lcl/interfaces/fpgui/fpguiwsprivate.pp index 935958b807..e869e29e7e 100644 --- a/lcl/interfaces/fpgui/fpguiwsprivate.pp +++ b/lcl/interfaces/fpgui/fpguiwsprivate.pp @@ -42,7 +42,7 @@ uses fpg_widget, fpg_form, fpg_button, fpg_combobox, fpg_dialogs, fpg_edit, fpg_checkbox, fpg_radiobutton, fpg_tab, fpg_memo, fpg_menu, fpg_label, fpg_listbox, fpg_panel, - fpg_popupwindow, fpg_base, fpguiproc; + fpg_popupwindow, fpg_base, fpg_progressbar, fpguiproc; type @@ -471,6 +471,14 @@ type procedure PopUp(X, Y: Integer); end; + TFPGUIPrivateProgressBar = class(TFPGUIPrivateWidget) + public + procedure CreateWidget(const AParams: TCreateParams); override; + public + function ProgressBar: TfpgProgressBar; + end; + + var GlobalMouseCursorPos: TPoint; GlobalMouseCursorPosWidget: TFPGUIPrivateWidget; @@ -480,6 +488,18 @@ implementation uses LCLMessageGlue; +{ TFPGUIPrivateProgressBar } + +procedure TFPGUIPrivateProgressBar.CreateWidget(const AParams: TCreateParams); +begin + Widget := TfpgProgressBar.Create(GetParentContainerWidget()); +end; + +function TFPGUIPrivateProgressBar.ProgressBar: TfpgProgressBar; +begin + Result := TfpgProgressBar(Widget); +end; + { TFPGUIPrivate } function TFPGUIPrivate._AddRef: longint; stdcall;