mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-22 13:39:30 +02:00
LCL-CustomDrawn: Implements SetFocus and corrects a lot of control injection code which was not updated to the latest way of doing it
git-svn-id: trunk@37048 -
This commit is contained in:
parent
8da0ccb743
commit
a294a8baf8
@ -77,4 +77,5 @@
|
||||
{.$define VerboseCDEvents}
|
||||
{.$define VerboseCDAccessibility}
|
||||
{.$define VerboseCDClipboard}
|
||||
{.$define VerboseCDFocus}
|
||||
|
||||
|
@ -53,6 +53,7 @@ type
|
||||
function AdjustCoordinatesForScrolling(AX, AY: Integer): TPoint;
|
||||
procedure UpdateImageAndCanvas; virtual;
|
||||
function IsControlBackgroundVisible: Boolean; virtual;
|
||||
function GetWinControl: TWinControl; virtual;
|
||||
property Props[AnIndex:String]:pointer read GetProps write SetProps;
|
||||
end;
|
||||
|
||||
@ -66,6 +67,7 @@ type
|
||||
CDControlInjected: Boolean;
|
||||
procedure UpdateImageAndCanvas; override;
|
||||
function IsControlBackgroundVisible: Boolean; override;
|
||||
function GetWinControl: TWinControl; override;
|
||||
end;
|
||||
|
||||
{ TCDForm }
|
||||
@ -90,6 +92,7 @@ type
|
||||
procedure SanityCheckScrollPos();
|
||||
procedure UpdateImageAndCanvas; override;
|
||||
function IsControlBackgroundVisible: Boolean; override;
|
||||
function GetWinControl: TWinControl; override;
|
||||
end;
|
||||
|
||||
TCDNonNativeForm = class(TCDForm)
|
||||
@ -974,6 +977,11 @@ begin
|
||||
Result:=inherited IsControlBackgroundVisible;
|
||||
end;
|
||||
|
||||
function TCDWinControl.GetWinControl: TWinControl;
|
||||
begin
|
||||
Result := WinControl;
|
||||
end;
|
||||
|
||||
{ TCDBitmap }
|
||||
|
||||
destructor TCDBitmap.Destroy;
|
||||
@ -997,6 +1005,11 @@ begin
|
||||
result := nil;
|
||||
end;
|
||||
|
||||
function TCDBaseControl.GetWinControl: TWinControl;
|
||||
begin
|
||||
Result := FWinControl;
|
||||
end;
|
||||
|
||||
procedure TCDBaseControl.SetProps(AnIndex: String; AValue: pointer);
|
||||
var
|
||||
i: Integer;
|
||||
@ -1130,5 +1143,10 @@ begin
|
||||
Result:=inherited IsControlBackgroundVisible;
|
||||
end;
|
||||
|
||||
function TCDForm.GetWinControl: TWinControl;
|
||||
begin
|
||||
Result := LCLForm;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -4701,6 +4701,8 @@ begin
|
||||
begin
|
||||
lControlHandle := TCDWinControl(lHandle);
|
||||
lControlHandle.IncInvalidateCount();
|
||||
if lControlHandle.CDControlInjected and (lControlHandle.CDControl <> nil) then
|
||||
TCDWinControl(lControlHandle.CDControl.Handle).IncInvalidateCount();
|
||||
lControl := lControlHandle.WinControl;
|
||||
lControl := Forms.GetParentForm(lControl);
|
||||
// Don't use Rect in BackendInvalidateRect unless we really make the full
|
||||
@ -5556,7 +5558,7 @@ begin
|
||||
QCursor_setPos(X, Y);
|
||||
|
||||
Result := True;
|
||||
end;
|
||||
end;*)
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Function: SetFocus
|
||||
@ -5564,29 +5566,67 @@ end;
|
||||
Returns:
|
||||
|
||||
------------------------------------------------------------------------------}
|
||||
function TQtWidgetSet.SetFocus(hWnd: HWND): HWND;
|
||||
function TCDWidgetSet.SetFocus(hWnd: HWND): HWND;
|
||||
var
|
||||
W: TQtWidget;
|
||||
lObject, lOldObject: TCDBaseControl;
|
||||
lOldControl: TWinControl;
|
||||
lHandle: TCDWinControl;
|
||||
begin
|
||||
{$ifdef VerboseCDFocus}
|
||||
DebugLn(Format('[TCDWidgetSet.SetFocus] Handle=%x', [hWnd]));
|
||||
{$endif}
|
||||
Result := 0;
|
||||
if hwnd<>0 then
|
||||
if hwnd = 0 then
|
||||
begin
|
||||
{$ifdef VerboseFocus}
|
||||
WriteLn('********* TQtWidgetSet.SetFocus INIT focusing ', TQtWidget(hwnd).lclobject.name);
|
||||
{$endif}
|
||||
Result := GetFocus;
|
||||
W := TQtWidget(HWND).getWindow;
|
||||
if (W <> nil) and W.getVisible and not W.IsActiveWindow and
|
||||
not TQtMainWindow(W).Blocked then
|
||||
W.Activate;
|
||||
TQtWidget(hWnd).setFocus;
|
||||
{$ifdef VerboseFocus}
|
||||
DebugLn('********* TQtWidgetSet.SetFocus END was %x now is %x',[result,hwnd]);
|
||||
Result := GetFocus();
|
||||
Exit;
|
||||
end;
|
||||
lObject := TCDBaseControl(hWnd);
|
||||
|
||||
// SetFocus on a child control
|
||||
if lObject is TCDWinControl then
|
||||
begin
|
||||
lHandle := TCDWinControl(lObject);
|
||||
// If the control is injected, really set focus in the injected one
|
||||
if lHandle.CDControlInjected and (lHandle.CDControl <> nil) then
|
||||
begin
|
||||
Result := SetFocus(LCLType.HWND(lHandle.CDControl.Handle));
|
||||
Exit;
|
||||
end;
|
||||
|
||||
// Handling for controls without injected controls
|
||||
Result := GetFocus();
|
||||
lOldObject := TCDBaseControl(Result);
|
||||
if lOldObject = nil then
|
||||
lOldControl := nil
|
||||
else
|
||||
lOldControl := lOldObject.GetWinControl();
|
||||
|
||||
if lOldControl <> nil then
|
||||
LCLSendKillFocusMsg(lOldControl);
|
||||
LCLSendSetFocusMsg(lHandle.WinControl);
|
||||
FocusedControl := lHandle.WinControl;
|
||||
FocusedIntfControl := lHandle.CDControl;
|
||||
{$ifdef VerboseCDFocus}
|
||||
DebugLn(Format(':[TCDWidgetSet.SetFocus] NewFocusedControl=%s NewFocusedIntfControl=%x', [FocusedControl.Name, PtrUInt(FocusedIntfControl)]));
|
||||
{$endif}
|
||||
|
||||
// Set focus in the parent window
|
||||
//Result := BackendSetFocus(hWnd);
|
||||
|
||||
// Invalidate to redraw the new control
|
||||
InvalidateRect(LCLType.HWND(lHandle), nil, True);
|
||||
if lOldObject <> nil then
|
||||
InvalidateRect(LCLType.HWND(lOldObject), nil, True);
|
||||
end
|
||||
// SetFocus on a form
|
||||
else
|
||||
begin
|
||||
Result := BackendSetFocus(hWnd);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TQtWidgetSet.GetForegroundWindow: HWND;
|
||||
(*function TQtWidgetSet.GetForegroundWindow: HWND;
|
||||
var
|
||||
W: QWidgetH;
|
||||
begin
|
||||
|
@ -5524,7 +5524,7 @@ begin
|
||||
QCursor_setPos(X, Y);
|
||||
|
||||
Result := True;
|
||||
end;
|
||||
end;*)
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Function: SetFocus
|
||||
@ -5532,12 +5532,12 @@ end;
|
||||
Returns:
|
||||
|
||||
------------------------------------------------------------------------------}
|
||||
function TQtWidgetSet.SetFocus(hWnd: HWND): HWND;
|
||||
var
|
||||
W: TQtWidget;
|
||||
function TCDWidgetSet.BackendSetFocus(hWnd: HWND): HWND;
|
||||
{var
|
||||
W: TQtWidget;}
|
||||
begin
|
||||
Result := 0;
|
||||
if hwnd<>0 then
|
||||
(* if hwnd<>0 then
|
||||
begin
|
||||
{$ifdef VerboseFocus}
|
||||
WriteLn('********* TQtWidgetSet.SetFocus INIT focusing ', TQtWidget(hwnd).lclobject.name);
|
||||
@ -5551,10 +5551,10 @@ begin
|
||||
{$ifdef VerboseFocus}
|
||||
DebugLn('********* TQtWidgetSet.SetFocus END was %x now is %x',[result,hwnd]);
|
||||
{$endif}
|
||||
end;
|
||||
end;*)
|
||||
end;
|
||||
|
||||
function TQtWidgetSet.GetForegroundWindow: HWND;
|
||||
(*function TQtWidgetSet.GetForegroundWindow: HWND;
|
||||
var
|
||||
W: QWidgetH;
|
||||
begin
|
||||
|
@ -846,9 +846,20 @@ begin
|
||||
{$IFDEF VerboseWinAPI}
|
||||
DebugLn(Format('TCocoaWidgetSet.SelectObject Result: %x', [Result]));
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;*)
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Function: SetFocus
|
||||
Params: hWnd - Window handle to be focused
|
||||
Returns:
|
||||
|
||||
------------------------------------------------------------------------------}
|
||||
function TCDWidgetSet.BackendSetFocus(hWnd: HWND): HWND;
|
||||
begin
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
(*{------------------------------------------------------------------------------
|
||||
function ShowWindow(hWnd: HWND; nCmdShow: Integer): Boolean;
|
||||
|
||||
nCmdShow:
|
||||
|
@ -3148,7 +3148,7 @@ begin
|
||||
Result := False;
|
||||
Windows.SetCursorPos(X, Y);
|
||||
Result := True;
|
||||
end;
|
||||
end;*)
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Method: SetFocus
|
||||
@ -3157,19 +3157,22 @@ end;
|
||||
|
||||
The SetFocus function sets the keyboard focus to the specified window
|
||||
------------------------------------------------------------------------------}
|
||||
function TWin32WidgetSet.SetFocus(HWnd: HWND): HWND;
|
||||
function TCDWidgetSet.BackendSetFocus(HWnd: HWND): HWND;
|
||||
var
|
||||
lWindowInfo: TWindowInfo;
|
||||
lHandle: HWND;
|
||||
begin
|
||||
{
|
||||
if Windows.GetFocus <> HWnd then
|
||||
if HWND = 0 then
|
||||
begin
|
||||
DebugLn(['TWin32WidgetSet.SetFocus ', ' Wnd = ', WndClassName(HWnd), ' LCLObject = ', dbgsName(GetLCLOwnerObject(HWnd))]);
|
||||
DumpStack;
|
||||
Result := GetFocus();
|
||||
Exit;
|
||||
end;
|
||||
}
|
||||
Result := Windows.SetFocus(HWnd);
|
||||
lWindowInfo := TWindowInfo(HWnd);
|
||||
lHandle := lWindowInfo.NativeHandle;
|
||||
Result := Windows.SetFocus(lHandle);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
(*{------------------------------------------------------------------------------
|
||||
Method: SetForegroundWindow
|
||||
Params: HWnd - The handle of the window
|
||||
Returns: True if succesful
|
||||
|
@ -5510,7 +5510,7 @@ begin
|
||||
QCursor_setPos(X, Y);
|
||||
|
||||
Result := True;
|
||||
end;
|
||||
end;*)
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Function: SetFocus
|
||||
@ -5518,29 +5518,12 @@ end;
|
||||
Returns:
|
||||
|
||||
------------------------------------------------------------------------------}
|
||||
function TQtWidgetSet.SetFocus(hWnd: HWND): HWND;
|
||||
var
|
||||
W: TQtWidget;
|
||||
function TCDWidgetSet.BackendSetFocus(hWnd: HWND): HWND;
|
||||
begin
|
||||
Result := 0;
|
||||
if hwnd<>0 then
|
||||
begin
|
||||
{$ifdef VerboseFocus}
|
||||
WriteLn('********* TQtWidgetSet.SetFocus INIT focusing ', TQtWidget(hwnd).lclobject.name);
|
||||
{$endif}
|
||||
Result := GetFocus;
|
||||
W := TQtWidget(HWND).getWindow;
|
||||
if (W <> nil) and W.getVisible and not W.IsActiveWindow and
|
||||
not TQtMainWindow(W).Blocked then
|
||||
W.Activate;
|
||||
TQtWidget(hWnd).setFocus;
|
||||
{$ifdef VerboseFocus}
|
||||
DebugLn('********* TQtWidgetSet.SetFocus END was %x now is %x',[result,hwnd]);
|
||||
{$endif}
|
||||
end;
|
||||
end;
|
||||
|
||||
function TQtWidgetSet.GetForegroundWindow: HWND;
|
||||
(*function TQtWidgetSet.GetForegroundWindow: HWND;
|
||||
var
|
||||
W: QWidgetH;
|
||||
begin
|
||||
|
@ -206,9 +206,10 @@ function SetCaretPos(X, Y: Integer): Boolean; override;
|
||||
function SetCaretPosEx(Handle: HWnd; X, Y: Integer): Boolean; override;
|
||||
function SetCaretRespondToFocus(handle: HWND; ShowHideOnFocus: boolean): Boolean; override;
|
||||
function SetCursor(ACursor: HCURSOR): HCURSOR; override;
|
||||
function SetCursorPos(X, Y: Integer): Boolean; override;
|
||||
function SetCursorPos(X, Y: Integer): Boolean; override;*)
|
||||
function SetFocus(hWnd: HWND): HWND; override;
|
||||
function SetForegroundWindow(HWnd: HWND): boolean; override;
|
||||
function BackendSetFocus(hWnd: HWND): HWND;
|
||||
(*function SetForegroundWindow(HWnd: HWND): boolean; override;
|
||||
function SetMapMode(DC: HDC; fnMapMode : Integer): Integer; override;
|
||||
function SetMenu(AWindowHandle: HWND; AMenuHandle: HMENU): Boolean; override;
|
||||
function SetParent(hWndChild: HWND; hWndParent: HWND): HWND; override;*)
|
||||
|
@ -51,7 +51,7 @@ type
|
||||
|
||||
TCDWSCustomTabControl = class(TWSCustomTabControl)
|
||||
public
|
||||
class procedure CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
published
|
||||
class function CreateHandle(const AWinControl: TWinControl;
|
||||
const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
@ -196,7 +196,7 @@ type
|
||||
|
||||
TCDWSProgressBar = class(TWSProgressBar)
|
||||
public
|
||||
class procedure CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
published
|
||||
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
class procedure ShowHide(const AWinControl: TWinControl); override;
|
||||
@ -234,7 +234,7 @@ type
|
||||
|
||||
TCDWSTrackBar = class(TWSTrackBar)
|
||||
public
|
||||
class procedure CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
published
|
||||
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
class procedure ShowHide(const AWinControl: TWinControl); override;
|
||||
@ -261,7 +261,7 @@ implementation
|
||||
|
||||
{ TCDWSCustomTabControl }
|
||||
|
||||
class procedure TCDWSCustomTabControl.CreateCDControl(
|
||||
class procedure TCDWSCustomTabControl.InjectCDControl(
|
||||
const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
begin
|
||||
ACDControlField := TCDIntfPageControl.Create(AWinControl);
|
||||
@ -287,8 +287,11 @@ begin
|
||||
|
||||
TCDWSWinControl.ShowHide(AWinControl);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
class procedure TCDWSCustomTabControl.AddPage(
|
||||
@ -299,8 +302,11 @@ var
|
||||
begin
|
||||
lCDWinControl := TCDWinControl(ATabControl.Handle);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(ATabControl, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(ATabControl, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
|
||||
TCDPageControl(lCDWinControl.CDControl).InsertPage(AIndex, AChild.Caption);
|
||||
end;
|
||||
@ -392,7 +398,7 @@ end;*)
|
||||
|
||||
{ TCDWSTrackBar }
|
||||
|
||||
class procedure TCDWSTrackBar.CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure TCDWSTrackBar.InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
begin
|
||||
ACDControlField := TCDIntfTrackBar.Create(AWinControl);
|
||||
TCDIntfTrackBar(ACDControlField).LCLControl := TCustomTrackBar(AWinControl);
|
||||
@ -416,8 +422,11 @@ begin
|
||||
|
||||
TCDWSWinControl.ShowHide(AWinControl);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
class procedure TCDWSTrackBar.ApplyChanges(const ATrackBar: TCustomTrackBar);
|
||||
@ -426,8 +435,11 @@ var
|
||||
begin
|
||||
lCDWinControl := TCDWinControl(ATrackBar.Handle);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(ATrackBar, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(ATrackBar, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
|
||||
TCDTrackBar(lCDWinControl.CDControl).Position := ATrackBar.Position;
|
||||
|
||||
@ -472,8 +484,11 @@ var
|
||||
begin
|
||||
lCDWinControl := TCDWinControl(ATrackBar.Handle);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(ATrackBar, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(ATrackBar, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
|
||||
Result := TCDTrackBar(lCDWinControl.CDControl).Position;
|
||||
end;
|
||||
@ -484,8 +499,11 @@ var
|
||||
begin
|
||||
lCDWinControl := TCDWinControl(ATrackBar.Handle);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(ATrackBar, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(ATrackBar, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
|
||||
TCDTrackBar(lCDWinControl.CDControl).Position := NewPosition;
|
||||
end;
|
||||
@ -519,7 +537,7 @@ end;
|
||||
|
||||
{ TCDWSProgressBar }
|
||||
|
||||
class procedure TCDWSProgressBar.CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure TCDWSProgressBar.InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
begin
|
||||
ACDControlField := TCDIntfProgressBar.Create(AWinControl);
|
||||
TCDIntfProgressBar(ACDControlField).LCLControl := TCustomProgressBar(AWinControl);
|
||||
@ -543,8 +561,11 @@ begin
|
||||
|
||||
TCDWSWinControl.ShowHide(AWinControl);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
class procedure TCDWSProgressBar.ApplyChanges(const AProgressBar: TCustomProgressBar);
|
||||
@ -553,8 +574,11 @@ var
|
||||
begin
|
||||
lCDWinControl := TCDWinControl(AProgressBar.Handle);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AProgressBar, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AProgressBar, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
|
||||
TCDProgressBar(lCDWinControl.CDControl).Position := AProgressBar.Position;
|
||||
|
||||
@ -600,8 +624,11 @@ var
|
||||
begin
|
||||
lCDWinControl := TCDWinControl(AProgressBar.Handle);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AProgressBar, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AProgressBar, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
|
||||
TCDProgressBar(lCDWinControl.CDControl).Position := NewPosition;
|
||||
end;
|
||||
|
@ -253,7 +253,7 @@ type
|
||||
|
||||
TCDWSButton = class(TWSButton)
|
||||
public
|
||||
class procedure CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
published
|
||||
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
class procedure DestroyHandle(const AWinControl: TWinControl); override;
|
||||
@ -268,7 +268,7 @@ type
|
||||
|
||||
TCDWSCustomCheckBox = class(TWSCustomCheckBox)
|
||||
public
|
||||
class procedure CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
published
|
||||
class function CreateHandle(const AWinControl: TWinControl;
|
||||
const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
@ -307,7 +307,7 @@ type
|
||||
// Make sure to override all methods from TCDWSCustomCheckBox which call CreateCDControl
|
||||
TCDWSRadioButton = class(TWSRadioButton)
|
||||
public
|
||||
class procedure CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
published
|
||||
class function CreateHandle(const AWinControl: TWinControl;
|
||||
const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
@ -325,7 +325,7 @@ type
|
||||
|
||||
TCDWSCustomStaticText = class(TWSCustomStaticText)
|
||||
public
|
||||
class procedure CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
published
|
||||
class function CreateHandle(const AWinControl: TWinControl;
|
||||
const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||
@ -1580,7 +1580,7 @@ end;*)
|
||||
|
||||
{ TCDWSStaticText }
|
||||
|
||||
class procedure TCDWSCustomStaticText.CreateCDControl(
|
||||
class procedure TCDWSCustomStaticText.InjectCDControl(
|
||||
const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
begin
|
||||
ACDControlField := TCDIntfStaticText.Create(AWinControl);
|
||||
@ -1622,8 +1622,11 @@ begin
|
||||
|
||||
TCDWSWinControl.ShowHide(AWinControl);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
(*{------------------------------------------------------------------------------
|
||||
@ -1647,7 +1650,7 @@ end;*)
|
||||
|
||||
{ TCDWSButton }
|
||||
|
||||
class procedure TCDWSButton.CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure TCDWSButton.InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
begin
|
||||
ACDControlField := TCDIntfButton.Create(AWinControl);
|
||||
TCDIntfButton(ACDControlField).LCLControl := TButton(AWinControl);
|
||||
@ -1689,8 +1692,11 @@ begin
|
||||
|
||||
TCDWSWinControl.ShowHide(AWinControl);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
class function TCDWSButton.GetText(const AWinControl: TWinControl;
|
||||
@ -1733,7 +1739,7 @@ end;*)
|
||||
|
||||
{ TCDWSCustomCheckBox }
|
||||
|
||||
class procedure TCDWSCustomCheckBox.CreateCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
class procedure TCDWSCustomCheckBox.InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
begin
|
||||
ACDControlField := TCDIntfCheckBox.Create(AWinControl);
|
||||
TCDIntfCheckBox(ACDControlField).LCLControl := TCustomCheckBox(AWinControl);
|
||||
@ -1774,8 +1780,11 @@ begin
|
||||
|
||||
TCDWSWinControl.ShowHide(AWinControl);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
class procedure TCDWSCustomCheckBox.GetPreferredSize(
|
||||
@ -1786,8 +1795,11 @@ var
|
||||
begin
|
||||
lCDWinControl := TCDWinControl(AWinControl.Handle);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
|
||||
lCDWinControl.CDControl.LCLWSCalculatePreferredSize(
|
||||
PreferredWidth, PreferredHeight, WithThemeSpace, AWinControl.AutoSize);
|
||||
@ -1796,7 +1808,7 @@ end;
|
||||
|
||||
{ TCDWSRadioButton }
|
||||
|
||||
class procedure TCDWSRadioButton.CreateCDControl(
|
||||
class procedure TCDWSRadioButton.InjectCDControl(
|
||||
const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||
begin
|
||||
ACDControlField := TCDIntfRadioButton.Create(AWinControl);
|
||||
@ -1840,8 +1852,11 @@ begin
|
||||
|
||||
TCDWSWinControl.ShowHide(AWinControl);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
class procedure TCDWSRadioButton.GetPreferredSize(
|
||||
@ -1852,8 +1867,11 @@ var
|
||||
begin
|
||||
lCDWinControl := TCDWinControl(AWinControl.Handle);
|
||||
|
||||
if lCDWinControl.CDControl = nil then
|
||||
CreateCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
if not lCDWinControl.CDControlInjected then
|
||||
begin
|
||||
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||
lCDWinControl.CDControlInjected := True;
|
||||
end;
|
||||
|
||||
lCDWinControl.CDControl.LCLWSCalculatePreferredSize(
|
||||
PreferredWidth, PreferredHeight, WithThemeSpace, AWinControl.AutoSize);
|
||||
|
Loading…
Reference in New Issue
Block a user