mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-25 16:22:45 +02:00
LCL-CustomDrawn: Adds initial TScrollBar and SpinEdit implementations
git-svn-id: trunk@36022 -
This commit is contained in:
parent
86916fe2d8
commit
f7ab8832da
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -5640,6 +5640,7 @@ lcl/interfaces/customdrawn/customdrawnwsforms_cocoa.inc svneol=native#text/pasca
|
|||||||
lcl/interfaces/customdrawn/customdrawnwsforms_win.inc svneol=native#text/pascal
|
lcl/interfaces/customdrawn/customdrawnwsforms_win.inc svneol=native#text/pascal
|
||||||
lcl/interfaces/customdrawn/customdrawnwsforms_x11.inc svneol=native#text/pascal
|
lcl/interfaces/customdrawn/customdrawnwsforms_x11.inc svneol=native#text/pascal
|
||||||
lcl/interfaces/customdrawn/customdrawnwslazdeviceapis.pas svneol=native#text/pascal
|
lcl/interfaces/customdrawn/customdrawnwslazdeviceapis.pas svneol=native#text/pascal
|
||||||
|
lcl/interfaces/customdrawn/customdrawnwsspin.pas svneol=native#text/pascal
|
||||||
lcl/interfaces/customdrawn/customdrawnwsstdctrls.pas svneol=native#text/pascal
|
lcl/interfaces/customdrawn/customdrawnwsstdctrls.pas svneol=native#text/pascal
|
||||||
lcl/interfaces/customdrawn/interfaces.pas svneol=native#text/pascal
|
lcl/interfaces/customdrawn/interfaces.pas svneol=native#text/pascal
|
||||||
lcl/interfaces/customdrawn/wincallback.inc svneol=native#text/pascal
|
lcl/interfaces/customdrawn/wincallback.inc svneol=native#text/pascal
|
||||||
|
@ -9,7 +9,8 @@ uses
|
|||||||
Types, Classes, SysUtils,
|
Types, Classes, SysUtils,
|
||||||
// LCL
|
// LCL
|
||||||
Controls, Graphics, stdctrls, extctrls, comctrls,
|
Controls, Graphics, stdctrls, extctrls, comctrls,
|
||||||
customdrawnproc, customdrawncontrols, lcltype, lclproc, lclintf;
|
customdrawnproc, customdrawncontrols, lcltype, lclproc, lclintf,
|
||||||
|
spin;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -37,6 +38,11 @@ type
|
|||||||
LCLControl: TCustomComboBox;
|
LCLControl: TCustomComboBox;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
TCDIntfScrollBar = class(TCDScrollBar)
|
||||||
|
public
|
||||||
|
LCLControl: TCustomScrollBar;
|
||||||
|
end;
|
||||||
|
|
||||||
// Additional Tab
|
// Additional Tab
|
||||||
|
|
||||||
TCDIntfStaticText = class(TCDProgressBar)
|
TCDIntfStaticText = class(TCDProgressBar)
|
||||||
@ -61,6 +67,13 @@ type
|
|||||||
LCLControl: TCustomTabControl;
|
LCLControl: TCustomTabControl;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// Misc
|
||||||
|
|
||||||
|
TCDIntfSpinEdit = class(TCDSpinEdit)
|
||||||
|
public
|
||||||
|
LCLControl: TCustomFloatSpinEdit;
|
||||||
|
end;
|
||||||
|
|
||||||
// These are default message handlers which backends might use to simplify their code
|
// These are default message handlers which backends might use to simplify their code
|
||||||
// They convert a message sent to the form into a message to the correct sub-control
|
// They convert a message sent to the form into a message to the correct sub-control
|
||||||
procedure CallbackMouseUp(AWindowHandle: TCDForm; x, y: Integer; Button: TMouseButton; ShiftState: TShiftState = []);
|
procedure CallbackMouseUp(AWindowHandle: TCDForm; x, y: Integer; Button: TMouseButton; ShiftState: TShiftState = []);
|
||||||
|
@ -112,8 +112,8 @@ uses
|
|||||||
CustomDrawnWSExtCtrls,
|
CustomDrawnWSExtCtrls,
|
||||||
CustomDrawnWSForms,
|
CustomDrawnWSForms,
|
||||||
{ WinCEWSImgList,
|
{ WinCEWSImgList,
|
||||||
WinCEWSMenus,
|
WinCEWSMenus,}
|
||||||
WinCEWSSpin,}
|
CustomDrawnWSSpin,
|
||||||
CustomDrawnWSStdCtrls,
|
CustomDrawnWSStdCtrls,
|
||||||
CustomDrawnWSLazDeviceAPIs{,
|
CustomDrawnWSLazDeviceAPIs{,
|
||||||
WinCEWSGrids};
|
WinCEWSGrids};
|
||||||
@ -268,8 +268,8 @@ end;
|
|||||||
// StdCtrls
|
// StdCtrls
|
||||||
function RegisterCustomScrollBar: Boolean; alias : 'WSRegisterCustomScrollBar';
|
function RegisterCustomScrollBar: Boolean; alias : 'WSRegisterCustomScrollBar';
|
||||||
begin
|
begin
|
||||||
// RegisterWSComponent(TCustomScrollBar, TWinCEWSScrollBar);
|
RegisterWSComponent(TCustomScrollBar, TCDWSScrollBar);
|
||||||
Result := False;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function RegisterCustomGroupBox: Boolean; alias : 'WSRegisterCustomGroupBox';
|
function RegisterCustomGroupBox: Boolean; alias : 'WSRegisterCustomGroupBox';
|
||||||
@ -547,8 +547,8 @@ end;
|
|||||||
|
|
||||||
function RegisterCustomFloatSpinEdit: Boolean; alias : 'WSRegisterCustomFloatSpinEdit';
|
function RegisterCustomFloatSpinEdit: Boolean; alias : 'WSRegisterCustomFloatSpinEdit';
|
||||||
begin
|
begin
|
||||||
// RegisterWSComponent(TCustomFloatSpinEdit, TWinCEWSCustomFloatSpinEdit);
|
RegisterWSComponent(TCustomFloatSpinEdit, TCDWSCustomFloatSpinEdit);
|
||||||
Result := False;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function RegisterCustomRubberBand: Boolean; alias : 'WSRegisterCustomRubberBand';
|
function RegisterCustomRubberBand: Boolean; alias : 'WSRegisterCustomRubberBand';
|
||||||
|
139
lcl/interfaces/customdrawn/customdrawnwsspin.pas
Normal file
139
lcl/interfaces/customdrawn/customdrawnwsspin.pas
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
{
|
||||||
|
*****************************************************************************
|
||||||
|
* QtWSSpin.pp *
|
||||||
|
* ----------- *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
*****************************************************************************
|
||||||
|
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* This file is part of the Lazarus Component Library (LCL) *
|
||||||
|
* *
|
||||||
|
* See the file COPYING.modifiedLGPL.txt, included in this distribution, *
|
||||||
|
* for details about the copyright. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||||
|
* *
|
||||||
|
*****************************************************************************
|
||||||
|
}
|
||||||
|
unit customdrawnwsspin;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
{$I customdrawndefines.inc}
|
||||||
|
|
||||||
|
uses
|
||||||
|
// RTL
|
||||||
|
|
||||||
|
// LCL
|
||||||
|
Spin, SysUtils, Controls, Classes, LCLType, LCLProc, LCLIntf, Forms,
|
||||||
|
customdrawncontrols,
|
||||||
|
// Widgetset
|
||||||
|
WSProc, WSSpin, WSLCLClasses, CustomDrawnWsControls, customdrawnproc,
|
||||||
|
customdrawnprivate;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TCDWSCustomFloatSpinEdit }
|
||||||
|
|
||||||
|
TCDWSCustomFloatSpinEdit = class(TWSCustomFloatSpinEdit)
|
||||||
|
public
|
||||||
|
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;
|
||||||
|
class procedure ShowHide(const AWinControl: TWinControl); override;
|
||||||
|
|
||||||
|
class procedure UpdateControl(const ACustomFloatSpinEdit: TCustomFloatSpinEdit); override;
|
||||||
|
|
||||||
|
class function GetValue(const ACustomFloatSpinEdit: TCustomFloatSpinEdit): Double; override;
|
||||||
|
|
||||||
|
(*TODO: seperation into properties instead of bulk update
|
||||||
|
class procedure SetIncrement(const ACustomFloatSpinEdit: TCustomFloatSpinEdit; NewIncrement: Double); virtual;
|
||||||
|
class procedure SetMinValue(const ACustomFloatSpinEdit: TCustomFloatSpinEdit; NewValue: Double); virtual;
|
||||||
|
class procedure SetMaxValue(const ACustomFloatSpinEdit: TCustomFloatSpinEdit; NewValue: Double); virtual;
|
||||||
|
class procedure SetValueEmpty(const ACustomFloatSpinEdit: TCustomFloatSpinEdit; NewEmpty: boolean); virtual;
|
||||||
|
*)
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
class procedure TCDWSCustomFloatSpinEdit.InjectCDControl(
|
||||||
|
const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||||
|
begin
|
||||||
|
TCDIntfSpinEdit(ACDControlField).LCLControl := TCustomFloatSpinEdit(AWinControl);
|
||||||
|
ACDControlField.Caption := AWinControl.Caption;
|
||||||
|
ACDControlField.Parent := AWinControl;
|
||||||
|
ACDControlField.Align := alClient;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Method: TCDWSCustomFloatSpinEdit.CreateHandle
|
||||||
|
Params: None
|
||||||
|
Returns: Nothing
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
class function TCDWSCustomFloatSpinEdit.CreateHandle(const AWinControl: TWinControl;
|
||||||
|
const AParams: TCreateParams): TLCLIntfHandle;
|
||||||
|
var
|
||||||
|
lCDWinControl: TCDWinControl;
|
||||||
|
begin
|
||||||
|
Result := TCDWSWinControl.CreateHandle(AWinControl, AParams);
|
||||||
|
lCDWinControl := TCDWinControl(Result);
|
||||||
|
lCDWinControl.CDControl := TCDIntfSpinEdit.Create(AWinControl);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class procedure TCDWSCustomFloatSpinEdit.DestroyHandle(
|
||||||
|
const AWinControl: TWinControl);
|
||||||
|
var
|
||||||
|
lCDWinControl: TCDWinControl;
|
||||||
|
begin
|
||||||
|
lCDWinControl := TCDWinControl(AWinControl.Handle);
|
||||||
|
lCDWinControl.CDControl.Free;
|
||||||
|
lCDWinControl.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class procedure TCDWSCustomFloatSpinEdit.ShowHide(const AWinControl: TWinControl);
|
||||||
|
var
|
||||||
|
lCDWinControl: TCDWinControl;
|
||||||
|
begin
|
||||||
|
lCDWinControl := TCDWinControl(AWinControl.Handle);
|
||||||
|
|
||||||
|
TCDWSWinControl.ShowHide(AWinControl);
|
||||||
|
|
||||||
|
if not lCDWinControl.CDControlInjected then
|
||||||
|
begin
|
||||||
|
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||||
|
lCDWinControl.CDControlInjected := True;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TCDWSCustomFloatSpinEdit.GetValue(const ACustomFloatSpinEdit: TCustomFloatSpinEdit): Double;
|
||||||
|
var
|
||||||
|
lCDWinControl: TCDWinControl;
|
||||||
|
begin
|
||||||
|
lCDWinControl := TCDWinControl(ACustomFloatSpinEdit.Handle);
|
||||||
|
Result := TCDIntfSpinEdit(lCDWinControl.CDControl).Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class procedure TCDWSCustomFloatSpinEdit.UpdateControl(const ACustomFloatSpinEdit: TCustomFloatSpinEdit);
|
||||||
|
{var
|
||||||
|
CurrentSpinWidget: TQtAbstractSpinBox;}
|
||||||
|
begin
|
||||||
|
{ if not WSCheckHandleAllocated(ACustomFloatSpinEdit, 'UpdateControl') then
|
||||||
|
Exit;
|
||||||
|
|
||||||
|
CurrentSpinWidget := TQtAbstractSpinBox(ACustomFloatSpinEdit.Handle);
|
||||||
|
if ((ACustomFloatSpinEdit.DecimalPlaces > 0) and (CurrentSpinWidget is TQtSpinBox)) or
|
||||||
|
((ACustomFloatSpinEdit.DecimalPlaces = 0) and (CurrentSpinWidget is TQtFloatSpinBox)) then
|
||||||
|
RecreateWnd(ACustomFloatSpinEdit)
|
||||||
|
else
|
||||||
|
InternalUpdateControl(CurrentSpinWidget, ACustomFloatSpinEdit);}
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
@ -42,17 +42,20 @@ type
|
|||||||
{ TCDWSScrollBar }
|
{ TCDWSScrollBar }
|
||||||
|
|
||||||
TCDWSScrollBar = class(TWSScrollBar)
|
TCDWSScrollBar = class(TWSScrollBar)
|
||||||
|
public
|
||||||
|
class procedure InjectCDControl(const AWinControl: TWinControl; var ACDControlField: TCDControl);
|
||||||
published
|
published
|
||||||
{ class function CreateHandle(const AWinControl: TWinControl;
|
class function CreateHandle(const AWinControl: TWinControl;
|
||||||
const AParams: TCreateParams): TLCLIntfHandle; override;
|
const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||||
|
class procedure DestroyHandle(const AWinControl: TWinControl); override;
|
||||||
class procedure SetKind(const AScrollBar: TCustomScrollBar; const AIsHorizontal: Boolean); override;
|
class procedure SetKind(const AScrollBar: TCustomScrollBar; const AIsHorizontal: Boolean); override;
|
||||||
class procedure SetParams(const AScrollBar: TCustomScrollBar); override;
|
class procedure SetParams(const AScrollBar: TCustomScrollBar); override;
|
||||||
class procedure ShowHide(const AWinControl: TWinControl); override;}
|
class procedure ShowHide(const AWinControl: TWinControl); override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TCDWSCustomGroupBox }
|
{ TCDWSCustomGroupBox }
|
||||||
|
|
||||||
TCDWSCustomGroupBox = class(TWSCustomGroupBox)
|
TCDWSCustomGroupBox = class(TWSCustomGroupBox) // Receives direct rendering, so no control injection
|
||||||
published
|
published
|
||||||
class function CreateHandle(const AWinControl: TWinControl;
|
class function CreateHandle(const AWinControl: TWinControl;
|
||||||
const AParams: TCreateParams): TLCLIntfHandle; override;
|
const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||||
@ -328,33 +331,40 @@ implementation
|
|||||||
|
|
||||||
{ TCDWSScrollBar }
|
{ TCDWSScrollBar }
|
||||||
|
|
||||||
(*{------------------------------------------------------------------------------
|
class procedure TCDWSScrollBar.InjectCDControl(const AWinControl: TWinControl;
|
||||||
Method: TCDWSCustomScrollBar.CreateHandle
|
var ACDControlField: TCDControl);
|
||||||
Params: None
|
|
||||||
Returns: Nothing
|
|
||||||
------------------------------------------------------------------------------}
|
|
||||||
class function TCDWSScrollBar.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
|
|
||||||
var
|
|
||||||
QtScrollBar: TQtScrollBar;
|
|
||||||
begin
|
begin
|
||||||
QtScrollBar := TQtScrollBar.Create(AWinControl, AParams);
|
TCDIntfScrollBar(ACDControlField).LCLControl := TCustomScrollBar(AWinControl);
|
||||||
|
ACDControlField.Caption := AWinControl.Caption;
|
||||||
|
ACDControlField.Parent := AWinControl;
|
||||||
|
ACDControlField.Align := alClient;
|
||||||
|
end;
|
||||||
|
|
||||||
QtScrollBar.AttachEvents;
|
class function TCDWSScrollBar.CreateHandle(const AWinControl: TWinControl;
|
||||||
|
const AParams: TCreateParams): TLCLIntfHandle;
|
||||||
|
var
|
||||||
|
lCDWinControl: TCDWinControl;
|
||||||
|
begin
|
||||||
|
Result := TCDWSWinControl.CreateHandle(AWinControl, AParams);
|
||||||
|
lCDWinControl := TCDWinControl(Result);
|
||||||
|
lCDWinControl.CDControl := TCDIntfScrollBar.Create(AWinControl);
|
||||||
|
end;
|
||||||
|
|
||||||
case TScrollBar(AWinControl).Kind of
|
class procedure TCDWSScrollBar.DestroyHandle(const AWinControl: TWinControl);
|
||||||
sbHorizontal: QtScrollBar.SetOrientation(QtHorizontal);
|
var
|
||||||
sbVertical: QtScrollBar.SetOrientation(QtVertical);
|
lCDWinControl: TCDWinControl;
|
||||||
end;
|
begin
|
||||||
|
lCDWinControl := TCDWinControl(AWinControl.Handle);
|
||||||
Result := TLCLIntfHandle(QtScrollbar);
|
lCDWinControl.CDControl.Free;
|
||||||
|
lCDWinControl.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class procedure TCDWSScrollBar.SetKind(const AScrollBar: TCustomScrollBar;
|
class procedure TCDWSScrollBar.SetKind(const AScrollBar: TCustomScrollBar;
|
||||||
const AIsHorizontal: Boolean);
|
const AIsHorizontal: Boolean);
|
||||||
var
|
{var
|
||||||
QtScrollBar: TQtScrollBar;
|
QtScrollBar: TQtScrollBar; }
|
||||||
begin
|
begin
|
||||||
if not WSCheckHandleAllocated(AScrollBar, 'SetKind') then
|
{if not WSCheckHandleAllocated(AScrollBar, 'SetKind') then
|
||||||
Exit;
|
Exit;
|
||||||
QtScrollBar := TQtScrollBar(AScrollBar.Handle);
|
QtScrollBar := TQtScrollBar(AScrollBar.Handle);
|
||||||
QtScrollBar.BeginUpdate;
|
QtScrollBar.BeginUpdate;
|
||||||
@ -381,19 +391,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
QtScrollbar.EndUpdate;
|
QtScrollbar.EndUpdate;
|
||||||
end;
|
end;}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
|
||||||
Method: TCDWSCustomScrollBar.SetParams
|
|
||||||
Params: None
|
|
||||||
Returns: Nothing
|
|
||||||
------------------------------------------------------------------------------}
|
|
||||||
class procedure TCDWSScrollBar.SetParams(const AScrollBar: TCustomScrollBar);
|
class procedure TCDWSScrollBar.SetParams(const AScrollBar: TCustomScrollBar);
|
||||||
var
|
{var
|
||||||
QtScrollBar: TQtScrollBar;
|
QtScrollBar: TQtScrollBar; }
|
||||||
begin
|
begin
|
||||||
if not WSCheckHandleAllocated(AScrollBar, 'SetParams') then
|
{ if not WSCheckHandleAllocated(AScrollBar, 'SetParams') then
|
||||||
Exit;
|
Exit;
|
||||||
QtScrollBar := TQtScrollBar(AScrollBar.Handle);
|
QtScrollBar := TQtScrollBar(AScrollBar.Handle);
|
||||||
|
|
||||||
@ -432,27 +437,23 @@ begin
|
|||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
QtScrollbar.EndUpdate;
|
QtScrollbar.EndUpdate;
|
||||||
end;
|
end;}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class procedure TCDWSScrollBar.ShowHide(const AWinControl: TWinControl);
|
class procedure TCDWSScrollBar.ShowHide(const AWinControl: TWinControl);
|
||||||
var
|
var
|
||||||
Widget: TQtWidget;
|
lCDWinControl: TCDWinControl;
|
||||||
begin
|
begin
|
||||||
if not WSCheckHandleAllocated(AWincontrol, 'ShowHide') then
|
lCDWinControl := TCDWinControl(AWinControl.Handle);
|
||||||
Exit;
|
|
||||||
|
|
||||||
Widget := TQtWidget(AWinControl.Handle);
|
TCDWSWinControl.ShowHide(AWinControl);
|
||||||
|
|
||||||
{reapply params just before visible since slider isn't updated
|
if not lCDWinControl.CDControlInjected then
|
||||||
properly sometimes.}
|
begin
|
||||||
if AWinControl.HandleObjectShouldBeVisible then
|
InjectCDControl(AWinControl, lCDWinControl.CDControl);
|
||||||
SetParams(TCustomScrollBar(AWinControl));
|
lCDWinControl.CDControlInjected := True;
|
||||||
|
end;
|
||||||
Widget.BeginUpdate;
|
end;
|
||||||
Widget.setVisible(AWinControl.HandleObjectShouldBeVisible);
|
|
||||||
Widget.EndUpdate;
|
|
||||||
end;*)
|
|
||||||
|
|
||||||
{ TCDWSCustomGroupBox }
|
{ TCDWSCustomGroupBox }
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ end;"/>
|
|||||||
<License Value="modified LGPL-2
|
<License Value="modified LGPL-2
|
||||||
"/>
|
"/>
|
||||||
<Version Major="1" Release="1"/>
|
<Version Major="1" Release="1"/>
|
||||||
<Files Count="395">
|
<Files Count="396">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="carbon/agl.pp"/>
|
<Filename Value="carbon/agl.pp"/>
|
||||||
<AddToUsesPkgSection Value="False"/>
|
<AddToUsesPkgSection Value="False"/>
|
||||||
@ -1956,6 +1956,11 @@ end;"/>
|
|||||||
<AddToUsesPkgSection Value="False"/>
|
<AddToUsesPkgSection Value="False"/>
|
||||||
<UnitName Value="NoGUIWSFactory"/>
|
<UnitName Value="NoGUIWSFactory"/>
|
||||||
</Item395>
|
</Item395>
|
||||||
|
<Item396>
|
||||||
|
<Filename Value="customdrawn/customdrawnwsspin.pas"/>
|
||||||
|
<AddToUsesPkgSection Value="False"/>
|
||||||
|
<UnitName Value="customdrawnwsspin"/>
|
||||||
|
</Item396>
|
||||||
</Files>
|
</Files>
|
||||||
<LazDoc Paths="../../docs/xml/lcl"/>
|
<LazDoc Paths="../../docs/xml/lcl"/>
|
||||||
<i18n>
|
<i18n>
|
||||||
|
Loading…
Reference in New Issue
Block a user