git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.jvcl@12 7f62d464-2af8-f54e-996c-e91b33f51cbe
2644 lines
83 KiB
ObjectPascal
2644 lines
83 KiB
ObjectPascal
{-----------------------------------------------------------------------------
|
|
The contents of this file are subject to the Mozilla Public License
|
|
Version 1.1 (the "License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
http://www.mozilla.org/MPL/MPL-1.1.html
|
|
|
|
Software distributed under the License is distributed on an "AS IS" basis,
|
|
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
|
|
the specific language governing rights and limitations under the License.
|
|
|
|
The Initial Developer of the Original Code is Jens Fudickar [jens dott fudickar att oratool dott de]
|
|
All Rights Reserved.
|
|
|
|
Contributor(s):
|
|
Jens Fudickar [jens dott fudickar att oratool dott de]
|
|
|
|
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
|
located at http://jvcl.sourceforge.net
|
|
|
|
Known Issues:
|
|
-----------------------------------------------------------------------------}
|
|
// $Id: JvParameterListParameter.pas 12146 2009-01-13 00:17:54Z jfudickar $
|
|
|
|
unit JvParameterListParameter;
|
|
|
|
{$I jvcl.inc}
|
|
{$I crossplatform.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF UNITVERSIONING}
|
|
JclUnitVersioning,
|
|
{$ENDIF UNITVERSIONING}
|
|
Classes, SysUtils, StdCtrls, ExtCtrls, Graphics, Forms,
|
|
Controls, FileCtrl, Dialogs, ComCtrls, Buttons,
|
|
{$IFDEF HAS_UNIT_VARIANTS}
|
|
Variants,
|
|
{$ENDIF HAS_UNIT_VARIANTS}
|
|
JvPanel, JvPropertyStore, JvParameterList, JvDynControlEngine, JvDSADialogs,
|
|
JvDynControlEngineIntf;
|
|
|
|
type
|
|
TJvNoDataParameter = class(TJvBaseParameter)
|
|
protected
|
|
property AsString;
|
|
property AsDouble;
|
|
property AsInteger;
|
|
property AsBoolean;
|
|
property AsDate;
|
|
property Required;
|
|
property StoreValueToAppStorage;
|
|
property ReadOnly;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
function Validate(var AData: Variant): Boolean; override;
|
|
end;
|
|
|
|
TJvButtonParameter = class(TJvNoDataParameter)
|
|
private
|
|
FGlyph: TBitmap;
|
|
FNumGlyphs: Integer;
|
|
FLayout: TButtonLayout;
|
|
FOnClick: TJvParameterListEvent;
|
|
protected
|
|
procedure SetGlyph(Value: TBitmap);
|
|
function GetParameterNameExt: string; override;
|
|
procedure Click(Sender: TObject);
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
destructor Destroy; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
procedure CreateWinControlOnParent(ParameterParent: TWinControl); override;
|
|
published
|
|
property Glyph: TBitmap read FGlyph write SetGlyph;
|
|
property NumGlyphs: Integer read FNumGlyphs write FNumGlyphs;
|
|
property Layout: TButtonLayout read FLayout write FLayout;
|
|
property OnClick: TJvParameterListEvent read FOnClick write FOnClick;
|
|
end;
|
|
|
|
TJvRadioButtonParameter = class(TJvNoDataParameter)
|
|
private
|
|
FOnClick: TJvParameterListEvent;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure Click(Sender: TObject);
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
procedure Assign(Source: TPersistent); override;
|
|
procedure CreateWinControlOnParent(ParameterParent: TWinControl); override;
|
|
published
|
|
property OnClick: TJvParameterListEvent read FOnClick write FOnClick;
|
|
end;
|
|
|
|
TJvParameterLabelArrangeMode = (lamBefore, lamAbove, lamGroupBox, lamNone);
|
|
|
|
TJvBasePanelEditParameter = class(TJvBaseParameter)
|
|
private
|
|
FAfterParameterControl: TControl;
|
|
FAfterParameterName: string;
|
|
FArrangeLabelAndWinControlDisabled: Boolean;
|
|
FBeforeParameterControl: TControl;
|
|
FBeforeParameterName: string;
|
|
FEditWidth: Integer;
|
|
FFrameControl: TWinControl;
|
|
FLabelArrangeMode: TJvParameterLabelArrangeMode;
|
|
FLabelControl: TControl;
|
|
FLabelWidth: Integer;
|
|
FOrgWinControlHeight: Integer;
|
|
FOrgWinControlWidth: Integer;
|
|
procedure ArrangeLabelAndWinControlOnPanelAbove;
|
|
procedure ArrangeLabelAndWinControlOnPanelBefore;
|
|
procedure ArrangeLabelAndWinControlOnPanelGroupBox;
|
|
procedure ArrangeLabelAndWinControlOnPanelNone;
|
|
procedure ArrangeWinControlsonPanel(iLeft, iTop: Integer; var iWidth: Integer;
|
|
iHeight: Integer);
|
|
protected
|
|
procedure ArrangeLabelAndWinControlOnPanel; virtual;
|
|
procedure CreateAfterParameterControl(AParameterParent: TWinControl); virtual;
|
|
procedure CreateBeforeParameterControl(AParameterParent: TWinControl); virtual;
|
|
procedure CreateFramePanel(AParameterParent: TWinControl); virtual;
|
|
procedure CreateLabelControl(AParameterParent: TWinControl); virtual;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); virtual; abstract;
|
|
function GetLabelWidth: Integer; virtual;
|
|
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
|
procedure SetLabelWidth(Value: Integer); virtual;
|
|
procedure SetWinControlProperties; override;
|
|
property FrameControl: TWinControl read FFrameControl;
|
|
property LabelControl: TControl read FLabelControl write FLabelControl;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
procedure CreateWinControlOnParent(ParameterParent: TWinControl); override;
|
|
procedure SetEnabled(Value: Boolean); override;
|
|
procedure SetHeight(Value: Integer); override;
|
|
procedure SetLabelArrangeMode(Value: TJvParameterLabelArrangeMode); virtual;
|
|
procedure SetTabOrder(Value: Integer); override;
|
|
procedure SetVisible(Value: Boolean); override;
|
|
procedure SetWidth(Value: Integer); override;
|
|
published
|
|
/// The searchname of the afterparameter.
|
|
/// The afterparameter will positioned behind the edit control.
|
|
property AfterParameterName: string read FAfterParameterName write
|
|
FAfterParameterName;
|
|
/// The searchname of the beforeparameter.
|
|
/// The beforeparameter will positioned before the edit control.
|
|
property BeforeParameterName: string read FBeforeParameterName write
|
|
FBeforeParameterName;
|
|
/// Width of the edit control
|
|
property EditWidth: Integer read FEditWidth write FEditWidth;
|
|
/// Mode how the label and the edit control will be arranged :
|
|
/// - lamBefire : The label is before the edit control
|
|
/// - lamAbove : The label is positioned on top of the edit control
|
|
/// - lamGroupBox : A Groupbox is created arround the edit control
|
|
/// - lamNone : No Label is shown
|
|
property LabelArrangeMode: TJvParameterLabelArrangeMode read FLabelArrangeMode
|
|
write SetLabelArrangeMode;
|
|
/// Width of the label, only valid when LabelArrangeMode = lamBefore
|
|
property LabelWidth: Integer read GetLabelWidth write SetLabelWidth;
|
|
end;
|
|
|
|
TJvArrangeParameter = class(TJvNoDataParameter)
|
|
private
|
|
FArrangeSettings: TJvArrangeSettings;
|
|
FParentControl: TWinControl;
|
|
protected
|
|
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
|
procedure SetArrangeSettings(Value: TJvArrangeSettings);
|
|
function GetParentControl: TWinControl;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
destructor Destroy; override;
|
|
procedure ArrangeControls; virtual;
|
|
procedure DisableArrange; virtual;
|
|
procedure EnableArrange; virtual;
|
|
property ParentControl: TWinControl read GetParentControl write FParentControl;
|
|
published
|
|
property ArrangeSettings: TJvArrangeSettings read FArrangeSettings write SetArrangeSettings;
|
|
property Color;
|
|
end;
|
|
|
|
TJvPanelParameter = class(TJvArrangeParameter)
|
|
private
|
|
FBevelInner: TPanelBevel;
|
|
FBevelOuter: TPanelBevel;
|
|
FBevelWidth: Integer;
|
|
FBorderStyle: TBorderStyle;
|
|
FBorderWidth: Integer;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
procedure CreateWinControlOnParent(ParameterParent: TWinControl); override;
|
|
published
|
|
property BevelInner: TPanelBevel read FBevelInner write FBevelInner;
|
|
property BevelOuter: TPanelBevel read FBevelOuter write FBevelOuter;
|
|
property BevelWidth: Integer read FBevelWidth write FBevelWidth;
|
|
property BorderStyle: TBorderStyle read FBorderStyle write FBorderStyle;
|
|
property BorderWidth: Integer read FBorderWidth write FBorderWidth;
|
|
end;
|
|
|
|
TJvGroupBoxParameter = class(TJvArrangeParameter)
|
|
private
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure ReArrangeGroupbox(Sender: TObject; nLeft, nTop, nWidth, nHeight: Integer);
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure CreateWinControlOnParent(ParameterParent: TWinControl); override;
|
|
end;
|
|
|
|
TJvImageParameter = class(TJvBasePanelEditParameter)
|
|
private
|
|
FAutoSize: Boolean;
|
|
FCenter: Boolean;
|
|
FIncrementalDisplay: Boolean;
|
|
FTransparent: Boolean;
|
|
FStretch: Boolean;
|
|
FPicture: TPicture;
|
|
protected
|
|
procedure SetPicture(Value: TPicture);
|
|
procedure SetAutoSize(Value: Boolean); virtual;
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
destructor Destroy; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
published
|
|
// property AutoSize: Boolean read FAutoSize write SetAutoSize;
|
|
property Center: Boolean read FCenter write FCenter;
|
|
property IncrementalDisplay: Boolean read FIncrementalDisplay write FIncrementalDisplay;
|
|
property Transparent: Boolean read FTransparent write FTransparent;
|
|
property Stretch: Boolean read FStretch write FStretch;
|
|
property Picture: TPicture read FPicture write SetPicture;
|
|
end;
|
|
|
|
TJvLabelParameter = class(TJvNoDataParameter)
|
|
public
|
|
procedure CreateWinControlOnParent(ParameterParent: TWinControl); override;
|
|
end;
|
|
|
|
TJvCheckBoxParameter = class(TJvBaseParameter)
|
|
public
|
|
procedure CreateWinControlOnParent(ParameterParent: TWinControl); override;
|
|
end;
|
|
|
|
TJvEditParameter = class(TJvBasePanelEditParameter)
|
|
private
|
|
FEditMask: string;
|
|
FPasswordChar: Char;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
published
|
|
property EditMask: string read FEditMask write FEditMask;
|
|
property PasswordChar: Char read FPasswordChar write FPasswordChar;
|
|
end;
|
|
|
|
TJvButtonEditParameter = class(TJvEditParameter)
|
|
private
|
|
FOnClick: TNotifyEvent;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
public
|
|
procedure Assign(Source: TPersistent); override;
|
|
published
|
|
property OnClick: TNotifyEvent read FOnClick write FOnClick;
|
|
end;
|
|
|
|
TJvNumberEditorType = (netEdit, netSpin, netCalculate);
|
|
|
|
TJvNumberEditParameter = class(TJvEditParameter)
|
|
private
|
|
FEditorType: TJvNumberEditorType;
|
|
public
|
|
procedure Assign(Source: TPersistent); override;
|
|
published
|
|
property EditorType: TJvNumberEditorType read FEditorType write FEditorType;
|
|
end;
|
|
|
|
TJvIntegerEditParameter = class(TJvNumberEditParameter)
|
|
private
|
|
FMinValue: Integer;
|
|
FMaxValue: Integer;
|
|
FIncrement: Integer;
|
|
protected
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
function Validate(var AData: Variant): Boolean; override;
|
|
published
|
|
property Increment: Integer read FIncrement write FIncrement;
|
|
property MinValue: Integer read FMinValue write FMinValue;
|
|
property MaxValue: Integer read FMaxValue write FMaxValue;
|
|
end;
|
|
|
|
TJvDoubleEditParameter = class(TJvNumberEditParameter)
|
|
private
|
|
FMinValue: Double;
|
|
FMaxValue: Double;
|
|
FIncrement: Integer;
|
|
protected
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
function Validate(var AData: Variant): Boolean; override;
|
|
published
|
|
property Increment: Integer read FIncrement write FIncrement;
|
|
property MinValue: Double read FMinValue write FMinValue;
|
|
property MaxValue: Double read FMaxValue write FMaxValue;
|
|
end;
|
|
|
|
TJvFileNameParameter = class(TJvBasePanelEditParameter)
|
|
private
|
|
FDefaultExt: string;
|
|
FFilter: string;
|
|
FFilterIndex: Integer;
|
|
FInitialDir: string;
|
|
FDialogOptions: TOpenOptions;
|
|
FDialogTitle: string;
|
|
FDialogKind: TJvDynControlFileNameDialogKind;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
function Validate(var AData: Variant): Boolean; override;
|
|
published
|
|
property FileName: string read GetAsString write SetAsString;
|
|
property DefaultExt: string read FDefaultExt write FDefaultExt;
|
|
property Filter: string read FFilter write FFilter;
|
|
property FilterIndex: Integer read FFilterIndex write FFilterIndex;
|
|
property InitialDir: string read FInitialDir write FInitialDir;
|
|
property DialogOptions: TOpenOptions read FDialogOptions write FDialogOptions;
|
|
property DialogTitle: string read FDialogTitle write FDialogTitle;
|
|
property DialogKind: TJvDynControlFileNameDialogKind read FDialogKind write FDialogKind;
|
|
end;
|
|
|
|
TJvDirectoryParameter = class(TJvBasePanelEditParameter)
|
|
private
|
|
FInitialDir: string;
|
|
FDialogTitle: string;
|
|
FDialogOptions: TSelectDirOpts;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
function Validate(var AData: Variant): Boolean; override;
|
|
published
|
|
property Directory: string read GetAsString write SetAsString;
|
|
property InitialDir: string read FInitialDir write FInitialDir;
|
|
property DialogTitle: string read FDialogTitle write FDialogTitle;
|
|
property DialogOptions: TSelectDirOpts read FDialogOptions write FDialogOptions;
|
|
end;
|
|
|
|
TJvListParameter = class(TJvBasePanelEditParameter)
|
|
private
|
|
FItemList: TStringList;
|
|
FItemIndex: Integer;
|
|
FSorted: Boolean;
|
|
FVariantAsItemIndex: Boolean;
|
|
protected
|
|
function GetItemList: TStringList; virtual;
|
|
procedure SetItemList(Value: TStringList); virtual;
|
|
procedure SetItemIndex(Value: Integer); virtual;
|
|
procedure SetAsString(const Value: string); override;
|
|
function GetAsString: string; override;
|
|
procedure SetAsInteger(Value: Integer); override;
|
|
function GetAsInteger: Integer; override;
|
|
procedure SetAsVariant(Value: Variant); override;
|
|
function GetAsVariant: Variant; override;
|
|
function GetWinControlData: Variant; override;
|
|
procedure SetWinControlData(Value: Variant); override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
destructor Destroy; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
procedure SearchItemIndex(const Search: string);
|
|
procedure GetData; override;
|
|
procedure SetData; override;
|
|
published
|
|
property ItemList: TStringList read GetItemList write SetItemList;
|
|
property ItemIndex: Integer read FItemIndex write SetItemIndex;
|
|
property Sorted: Boolean read FSorted write FSorted;
|
|
property VariantAsItemIndex: Boolean read FVariantAsItemIndex write FVariantAsItemIndex default False;
|
|
end;
|
|
|
|
TJvRadioGroupParameter = class(TJvListParameter)
|
|
private
|
|
FColumns: Integer;
|
|
protected
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
procedure Assign(Source: TPersistent); override;
|
|
procedure CreateWinControlOnParent(ParameterParent: TWinControl); override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
published
|
|
property Columns: Integer read FColumns write FColumns;
|
|
end;
|
|
|
|
TJvComboBoxParameterStyle = (cpsListEdit, cpsListFixed);
|
|
|
|
TJvComboBoxParameter = class(TJvListParameter)
|
|
private
|
|
FSorted: Boolean;
|
|
FNewEntriesAllowed: Boolean;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
function GetWinControlData: Variant; override;
|
|
procedure SetWinControlData(Value: Variant); override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure GetData; override;
|
|
procedure SetData; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
published
|
|
property Sorted: Boolean read FSorted write FSorted;
|
|
property NewEntriesAllowed: Boolean read FNewEntriesAllowed write FNewEntriesAllowed;
|
|
end;
|
|
|
|
TJvListBoxParameter = class(TJvListParameter)
|
|
private
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
procedure Assign(Source: TPersistent); override;
|
|
published
|
|
end;
|
|
|
|
TJvCheckListItemDataWrapper = class(TObject)
|
|
private
|
|
FState: TCheckBoxState;
|
|
FItemEnabled: Boolean;
|
|
FHeader: Boolean;
|
|
procedure SetChecked(Check: Boolean);
|
|
function GetChecked: Boolean;
|
|
public
|
|
property Checked: Boolean read GetChecked write SetChecked;
|
|
property State: TCheckBoxState read FState write FState;
|
|
property ItemEnabled: Boolean read FItemEnabled write FItemEnabled;
|
|
property Header: Boolean read FHeader write FHeader;
|
|
end;
|
|
|
|
TJvCheckListBoxParameter = class(TJvListParameter)
|
|
private
|
|
FAllowGrayed: Boolean;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
function GetItemData(Index: Integer): TJvCheckListItemDataWrapper;
|
|
procedure SetItemData(Index: Integer; Value: TJvCheckListItemDataWrapper);
|
|
procedure SetItemList(Value: TStringList); override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
destructor Destroy; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
procedure GetData; override;
|
|
procedure SetData; override;
|
|
procedure AddCheckListBoxItem(const AText: string; AState: TCheckBoxState = cbChecked;
|
|
AItemEnabled: Boolean = True; AHeader: Boolean = False);
|
|
property ItemData[Index: Integer]: TJvCheckListItemDataWrapper read GetItemData write SetItemData;
|
|
published
|
|
property AllowGrayed: Boolean read FAllowGrayed write FAllowGrayed;
|
|
end;
|
|
|
|
TJvTimeParameter = class(TJvBasePanelEditParameter)
|
|
private
|
|
FFormat: string;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
published
|
|
property Format: string read FFormat write FFormat;
|
|
end;
|
|
|
|
TJvDateTimeParameter = class(TJvBasePanelEditParameter)
|
|
private
|
|
FFormat: string;
|
|
FMaxDate: TDate;
|
|
FMinDate: TDate;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
published
|
|
property Format: string read FFormat write FFormat;
|
|
property MaxDate: TDate read FMaxDate write FMaxDate;
|
|
property MinDate: TDate read FMinDate write FMinDate;
|
|
end;
|
|
|
|
TJvDateParameter = class(TJvBasePanelEditParameter)
|
|
private
|
|
FFormat: string;
|
|
FMaxDate: TDate;
|
|
FMinDate: TDate;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
published
|
|
property Format: string read FFormat write FFormat;
|
|
property MaxDate: TDate read FMaxDate write FMaxDate;
|
|
property MinDate: TDate read FMinDate write FMinDate;
|
|
end;
|
|
|
|
TJvMemoParameter = class(TJvBasePanelEditParameter)
|
|
private
|
|
FWordWrap: Boolean;
|
|
FWantTabs: Boolean;
|
|
FWantReturns: Boolean;
|
|
FScrollBars: TScrollStyle;
|
|
FFontName: string;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
published
|
|
property WordWrap: Boolean read FWordWrap write FWordWrap;
|
|
property WantTabs: Boolean read FWantTabs write FWantTabs;
|
|
property WantReturns: Boolean read FWantReturns write FWantReturns;
|
|
property ScrollBars: TScrollStyle read FScrollBars write FScrollBars;
|
|
property FontName: string read FFontName write FFontName;
|
|
end;
|
|
|
|
TJvRichEditParameter = class(TJvBasePanelEditParameter)
|
|
private
|
|
FWordWrap: Boolean;
|
|
FWantTabs: Boolean;
|
|
FWantReturns: Boolean;
|
|
FScrollBars: TScrollStyle;
|
|
FFontName: string;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
published
|
|
property WordWrap: Boolean read FWordWrap write FWordWrap;
|
|
property WantTabs: Boolean read FWantTabs write FWantTabs;
|
|
property WantReturns: Boolean read FWantReturns write FWantReturns;
|
|
property ScrollBars: TScrollStyle read FScrollBars write FScrollBars;
|
|
property FontName: string read FFontName write FFontName;
|
|
end;
|
|
|
|
TJvPageControlParameter = class(TJvArrangeParameter)
|
|
private
|
|
fHotTrack: Boolean;
|
|
fMultiline: Boolean;
|
|
fScrollOpposite: Boolean;
|
|
fTabIndex: Integer;
|
|
fTabPosition: TTabPosition;
|
|
FPages: TStringList;
|
|
FRaggedRight: Boolean;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure RearrangePageControl(Sender: TObject; nLeft, nTop, nWidth, nHeight:
|
|
Integer);
|
|
procedure SetPages(Value: TStringList);
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
destructor Destroy; override;
|
|
procedure ArrangeControls; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
procedure CreateWinControlOnParent(ParameterParent: TWinControl); override;
|
|
procedure DisableArrange; override;
|
|
procedure EnableArrange; override;
|
|
function PageWinControl(Index: Integer): TWinControl;
|
|
published
|
|
property HotTrack: Boolean read fHotTrack write fHotTrack;
|
|
property Multiline: Boolean read fMultiline write fMultiline;
|
|
property ScrollOpposite: Boolean read fScrollOpposite write fScrollOpposite;
|
|
property TabIndex: Integer read fTabIndex write fTabIndex;
|
|
property TabPosition: TTabPosition read fTabPosition write fTabPosition;
|
|
property Pages: TStringList read FPages write SetPages;
|
|
property RaggedRight: Boolean read FRaggedRight write FRaggedRight;
|
|
end;
|
|
|
|
function DSADialogsMessageDlg(const Msg: string; const DlgType: TMsgDlgType; const Buttons: TMsgDlgButtons;
|
|
const HelpCtx: Longint; const Center: TDlgCenterKind = dckScreen; const Timeout: Integer = 0;
|
|
const DefaultButton: TMsgDlgBtn = mbDefault; const CancelButton: TMsgDlgBtn = mbDefault;
|
|
const HelpButton: TMsgDlgBtn = mbHelp;
|
|
const ADynControlEngine: TJvDynControlEngine = nil): TModalResult;
|
|
|
|
{$IFDEF UNITVERSIONING}
|
|
const
|
|
UnitVersioning: TUnitVersionInfo = (
|
|
RCSfile: '$URL: https://jvcl.svn.sourceforge.net/svnroot/jvcl/branches/JVCL3_36_PREPARATION/run/JvParameterListParameter.pas $';
|
|
Revision: '$Revision: 12146 $';
|
|
Date: '$Date: 2009-01-13 01:17:54 +0100 (mar., 13 janv. 2009) $';
|
|
LogPath: 'JVCL\run'
|
|
);
|
|
{$ENDIF UNITVERSIONING}
|
|
|
|
implementation
|
|
|
|
uses
|
|
JvResources, JvJVCLUtils;
|
|
|
|
function DSADialogsMessageDlg(const Msg: string; const DlgType: TMsgDlgType; const Buttons: TMsgDlgButtons;
|
|
const HelpCtx: Longint; const Center: TDlgCenterKind = dckScreen; const Timeout: Integer = 0;
|
|
const DefaultButton: TMsgDlgBtn = mbDefault; const CancelButton: TMsgDlgBtn = mbDefault;
|
|
const HelpButton: TMsgDlgBtn = mbHelp;
|
|
const ADynControlEngine: TJvDynControlEngine = nil): TModalResult;
|
|
begin
|
|
Result := JvDSADialogs.MessageDlg(Msg, DlgType, Buttons, HelpCtx, Center, Timeout, DefaultButton,
|
|
CancelButton, HelpButton, ADynControlEngine);
|
|
end;
|
|
|
|
//=== { TJvNoDataParameter } =================================================
|
|
|
|
constructor TJvNoDataParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
StoreValueToAppStorage := False;
|
|
end;
|
|
|
|
function TJvNoDataParameter.Validate(var AData: Variant): Boolean;
|
|
begin
|
|
Result := True;
|
|
end;
|
|
|
|
//=== { TJvButtonParameter } =================================================
|
|
|
|
function TJvButtonParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'Button';
|
|
end;
|
|
|
|
procedure TJvButtonParameter.Click(Sender: TObject);
|
|
begin
|
|
if Assigned(OnClick) then
|
|
OnClick(ParameterList, Self);
|
|
end;
|
|
|
|
procedure TJvButtonParameter.SetGlyph(Value: TBitmap);
|
|
begin
|
|
FGlyph.Assign(Value);
|
|
end;
|
|
|
|
procedure TJvButtonParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvButtonParameter then
|
|
begin
|
|
Glyph := TJvButtonParameter(Source).Glyph;
|
|
Layout := TJvButtonParameter(Source).Layout;
|
|
NumGlyphs := TJvButtonParameter(Source).NumGlyphs;
|
|
end;
|
|
end;
|
|
|
|
constructor TJvButtonParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
FGlyph := TBitmap.Create;
|
|
end;
|
|
|
|
procedure TJvButtonParameter.CreateWinControlOnParent(ParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateButton(Self, ParameterParent,
|
|
GetParameterName, Caption, Hint, Click, False, False));
|
|
if Height > 0 then
|
|
WinControl.Height := Height;
|
|
if Width > 0 then
|
|
WinControl.Width := Width;
|
|
end;
|
|
|
|
destructor TJvButtonParameter.Destroy;
|
|
begin
|
|
FGlyph.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TJvButtonParameter.SetWinControlProperties;
|
|
var
|
|
IJvButton: IJvDynControlButton;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlButton, IJvButton) then
|
|
begin
|
|
IJvButton.ControlSetGlyph(Glyph);
|
|
IJvButton.ControlSetNumGlyphs(NumGlyphs);
|
|
IJvButton.ControlSetLayout(Layout);
|
|
end;
|
|
end;
|
|
|
|
//=== { TJvRadioButtonParameter } ============================================
|
|
|
|
function TJvRadioButtonParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'RadioButton';
|
|
end;
|
|
|
|
procedure TJvRadioButtonParameter.Click(Sender: TObject);
|
|
begin
|
|
if Assigned(FOnClick) then
|
|
FOnClick(ParameterList, Self);
|
|
end;
|
|
|
|
procedure TJvRadioButtonParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
end;
|
|
|
|
procedure TJvRadioButtonParameter.CreateWinControlOnParent(ParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateRadioButton(Self, ParameterParent,
|
|
GetParameterName, Caption));
|
|
WinControl.Hint := Hint;
|
|
if Height > 0 then
|
|
WinControl.Height := Height;
|
|
if Width > 0 then
|
|
WinControl.Width := Width;
|
|
end;
|
|
|
|
procedure TJvRadioButtonParameter.SetWinControlProperties;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
end;
|
|
|
|
//=== { TJvBasePanelEditParameter } ==========================================
|
|
|
|
constructor TJvBasePanelEditParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
FLabelArrangeMode := lamAbove;
|
|
FLabelWidth := 0;
|
|
FEditWidth := 0;
|
|
FArrangeLabelAndWinControlDisabled := False;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.ArrangeLabelAndWinControlOnPanel;
|
|
var
|
|
TmpLabelArrangeMode: TJvParameterLabelArrangeMode;
|
|
begin
|
|
if not Assigned(FrameControl) or not Assigned(WinControl) or FArrangeLabelAndWinControlDisabled then
|
|
Exit;
|
|
if not Assigned(LabelControl) and (LabelArrangeMode in [lamBefore, lamAbove]) then
|
|
TmpLabelArrangeMode := lamNone
|
|
else
|
|
TmpLabelArrangeMode := LabelArrangeMode;
|
|
|
|
case TmpLabelArrangeMode of
|
|
lamBefore:
|
|
ArrangeLabelAndWinControlOnPanelBefore;
|
|
lamAbove:
|
|
ArrangeLabelAndWinControlOnPanelAbove;
|
|
lamNone:
|
|
ArrangeLabelAndWinControlOnPanelNone;
|
|
lamGroupBox:
|
|
ArrangeLabelAndWinControlOnPanelGroupBox;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.ArrangeLabelAndWinControlOnPanelAbove;
|
|
var
|
|
l, t, w, h: Integer;
|
|
begin
|
|
t := LabelControl.Height;
|
|
l := 0;
|
|
|
|
if Height > 0 then
|
|
h := Height - t
|
|
else
|
|
h := fOrgWinControlHeight;
|
|
|
|
if EditWidth > 0 then
|
|
w := EditWidth
|
|
else if Width > 0 then
|
|
w := Width
|
|
else
|
|
w := 0;
|
|
|
|
ArrangeWinControlsonPanel(l, t, w, h);
|
|
|
|
FrameControl.Height := t + h;
|
|
FrameControl.Width := l + w;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.ArrangeLabelAndWinControlOnPanelBefore;
|
|
var
|
|
DynCtrlFont: IJvDynControlFont;
|
|
l, t, w, h: Integer;
|
|
begin
|
|
if LabelWidth > 0 then
|
|
LabelControl.Width := LabelWidth
|
|
else
|
|
if Supports(LabelControl, IJvDynControlFont, DynCtrlFont) then
|
|
LabelControl.Width :=
|
|
DynControlEngine.GetControlTextWidth(LabelControl,
|
|
DynCtrlFont.ControlFont, Caption+'X');
|
|
|
|
t := LabelControl.Top;
|
|
l := LabelControl.Left + LabelControl.Width + 4;
|
|
|
|
if Height > 0 then
|
|
h := Height
|
|
else
|
|
h := fOrgWinControlHeight;
|
|
|
|
if EditWidth > 0 then
|
|
w := EditWidth
|
|
else if Width > 0 then
|
|
w := Width - l
|
|
else
|
|
w := 0;
|
|
|
|
ArrangeWinControlsonPanel(l, t, w, h);
|
|
|
|
LabelControl.Top := t + Round((h - LabelControl.Height) / 2);
|
|
|
|
FrameControl.Height := t + h;
|
|
FrameControl.Width := l + w;
|
|
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.ArrangeLabelAndWinControlOnPanelGroupBox;
|
|
var
|
|
l, t, w, h: Integer;
|
|
begin
|
|
t := 16;
|
|
l := 5;
|
|
|
|
if Height > 0 then
|
|
h := Height - 20
|
|
else
|
|
h := fOrgWinControlHeight;
|
|
|
|
if EditWidth > 0 then
|
|
w := EditWidth
|
|
else if Width > 0 then
|
|
w := Width - 9
|
|
else
|
|
w := 0;
|
|
|
|
ArrangeWinControlsonPanel(l, t, w, h);
|
|
|
|
FrameControl.Height := h + 20;
|
|
FrameControl.Width := w + 9;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.ArrangeLabelAndWinControlOnPanelNone;
|
|
var
|
|
l, t, w, h: Integer;
|
|
begin
|
|
t := 0;
|
|
l := 0;
|
|
|
|
if Height > 0 then
|
|
h := Height
|
|
else
|
|
h := fOrgWinControlHeight;
|
|
|
|
if EditWidth > 0 then
|
|
w := EditWidth
|
|
else if Width > 0 then
|
|
w := Width
|
|
else
|
|
w := 0;
|
|
|
|
ArrangeWinControlsonPanel(l, t, w, h);
|
|
|
|
FrameControl.Height := h;
|
|
FrameControl.Width := w;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.ArrangeWinControlsonPanel(iLeft, iTop:
|
|
Integer; var iWidth: Integer; iHeight: Integer);
|
|
const
|
|
Space = 2;
|
|
var
|
|
l, w: Integer;
|
|
begin
|
|
l := iLeft;
|
|
w := 0;
|
|
if Assigned(FBeforeParameterControl) then
|
|
begin
|
|
FBeforeParameterControl.Left := l;
|
|
FBeforeParameterControl.Top := iTop;
|
|
FBeforeParameterControl.Height := iHeight;
|
|
l := FBeforeParameterControl.Left + FBeforeParameterControl.Width+ Space;
|
|
w := w + FBeforeParameterControl.Width+ Space;
|
|
end;
|
|
WinControl.Left := l;
|
|
WinControl.Top := iTop;
|
|
WinControl.Height := iHeight;
|
|
if iWidth > 0 then
|
|
begin
|
|
WinControl.Width := iWidth-l+iLeft;
|
|
if Assigned (FAfterParameterControl) then
|
|
WinControl.Width := WinControl.Width - (FAfterParameterControl.Width + Space);
|
|
end
|
|
else
|
|
WinControl.Width := FOrgWinControlWidth;
|
|
w := w + WinControl.Width;
|
|
if Assigned(FAfterParameterControl) then
|
|
begin
|
|
l := WinControl.Left + WinControl.Width + Space;
|
|
FAfterParameterControl.Left := l;
|
|
FAfterParameterControl.Top := iTop;
|
|
FAfterParameterControl.Height := iHeight;
|
|
w := w + FAfterParameterControl.Width+ Space;
|
|
end;
|
|
iWidth := w;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvBasePanelEditParameter then
|
|
begin
|
|
LabelArrangeMode := TJvBasePanelEditParameter(Source).LabelArrangeMode;
|
|
LabelWidth := TJvBasePanelEditParameter(Source).LabelWidth;
|
|
EditWidth := TJvBasePanelEditParameter(Source).EditWidth;
|
|
AfterParameterName := TJvBasePanelEditParameter(Source).AfterParameterName ;
|
|
BeforeParameterName := TJvBasePanelEditParameter(Source).BeforeParameterName ;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.CreateAfterParameterControl(
|
|
AParameterParent: TWinControl);
|
|
var
|
|
AfterParameter: TJvBaseParameter;
|
|
begin
|
|
AfterParameter := ParameterList.ParameterByName(AfterParameterName);
|
|
if Assigned(AfterParameter) and AfterParameter.Visible then
|
|
begin
|
|
AfterParameter.CreateWinControlOnParent(AParameterParent);
|
|
if AfterParameter is TJvBasePanelEditParameter then
|
|
FAfterParameterControl := TJvBasePanelEditParameter(AfterParameter).FrameControl
|
|
else
|
|
FAfterParameterControl := AfterParameter.WinControl;
|
|
FAfterParameterControl.Parent := AParameterParent;
|
|
end
|
|
else
|
|
FAfterParameterControl := nil;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.CreateBeforeParameterControl(
|
|
AParameterParent: TWinControl);
|
|
var
|
|
BeforeParameter: TJvBaseParameter;
|
|
begin
|
|
BeforeParameter := ParameterList.ParameterByName(BeforeParameterName);
|
|
if Assigned(BeforeParameter) and BeforeParameter.Visible then
|
|
begin
|
|
BeforeParameter.CreateWinControlOnParent(AParameterParent);
|
|
if BeforeParameter is TJvBasePanelEditParameter then
|
|
FBeforeParameterControl := TJvBasePanelEditParameter(BeforeParameter).FrameControl
|
|
else
|
|
FBeforeParameterControl := BeforeParameter.WinControl;
|
|
FBeforeParameterControl.Parent := AParameterParent;
|
|
end
|
|
else
|
|
FBeforeParameterControl := nil;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.CreateFramePanel(AParameterParent: TWinControl);
|
|
var
|
|
DynBevel: IJvDynControlBevelBorder;
|
|
begin
|
|
if LabelArrangeMode = lamGroupBox then
|
|
FFrameControl := DynControlEngine.CreateGroupBoxControl(Self, AParameterParent,
|
|
GetParameterName + 'GroupBox', Caption)
|
|
else
|
|
FFrameControl := DynControlEngine.CreatePanelControl(Self, AParameterParent,
|
|
GetParameterName + 'Panel', '', alNone);
|
|
FrameControl.Height := Height;
|
|
FrameControl.Width := Width;
|
|
if Supports(FrameControl, IJvDynControlBevelBorder, DynBevel) then
|
|
begin
|
|
DynBevel.ControlSetBevelInner(bvNone);
|
|
DynBevel.ControlSetBevelOuter(bvNone);
|
|
end
|
|
else if FrameControl is TPanel then
|
|
begin
|
|
TPanel(FrameControl).BevelInner := bvNone;
|
|
TPanel(FrameControl).BevelOuter := bvNone;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.CreateLabelControl(AParameterParent: TWinControl);
|
|
var
|
|
IDynAutoSize: IJvDynControlAutoSize;
|
|
begin
|
|
if (Caption = '') or (LabelArrangeMode in [lamGroupBox, lamNone]) then
|
|
Exit;
|
|
LabelControl := DynControlEngine.CreateLabelControl(Self, AParameterParent,
|
|
GetParameterName + 'Label', Caption, WinControl);
|
|
LabelControl.Visible := True;
|
|
LabelControl.Enabled := Enabled;
|
|
LabelControl.Parent := AParameterParent;
|
|
if Supports (LabelControl, IJvDynControlAutoSize, IDynAutoSize) then
|
|
begin
|
|
IDynAutoSize.ControlSetAutosize(True);
|
|
IDynAutoSize.ControlSetAutosize(False);
|
|
end
|
|
else
|
|
LabelControl.Height := 16;
|
|
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.CreateWinControlOnParent(ParameterParent: TWinControl);
|
|
begin
|
|
CreateFramePanel(ParameterParent);
|
|
CreateBeforeParameterControl(FrameControl);
|
|
CreateWinControl(FrameControl);
|
|
CreateAfterParameterControl(FrameControl);
|
|
CreateLabelControl(FrameControl);
|
|
fOrgWinControlHeight := WinControl.Height;
|
|
fOrgWinControlWidth := WinControl.Width;
|
|
ArrangeLabelAndWinControlOnPanel;
|
|
end;
|
|
|
|
function TJvBasePanelEditParameter.GetLabelWidth: Integer;
|
|
begin
|
|
if Assigned(ParameterList) and (FLabelWidth <= 0) then
|
|
Result := ParameterList.DefaultParameterLabelWidth
|
|
else
|
|
Result := FLabelWidth;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.Notification(AComponent: TComponent; Operation: TOperation);
|
|
begin
|
|
inherited Notification(AComponent, Operation);
|
|
if (Operation = opRemove) then
|
|
begin
|
|
if (AComponent = FFrameControl) then
|
|
FFrameControl := nil;
|
|
if (AComponent = FLabelControl) then
|
|
FLabelControl := nil;
|
|
if (AComponent = FAfterParameterControl) then
|
|
FAfterParameterControl := nil;
|
|
if (AComponent = FBeforeParameterControl) then
|
|
FBeforeParameterControl := nil;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetEnabled(Value: Boolean);
|
|
begin
|
|
inherited SetEnabled(Value);
|
|
if Assigned(FrameControl) then
|
|
FrameControl.Enabled := Value;
|
|
if Assigned(LabelControl) then
|
|
LabelControl.Enabled := Value;
|
|
if Assigned(FAfterParameterControl) then
|
|
FAfterParameterControl.Enabled := Value;
|
|
if Assigned(FBeforeParameterControl) then
|
|
FBeforeParameterControl.Enabled := Value;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetHeight(Value: Integer);
|
|
begin
|
|
inherited SetHeight(Value);
|
|
ArrangeLabelAndWinControlOnPanel;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetLabelArrangeMode(Value:
|
|
TJvParameterLabelArrangeMode);
|
|
begin
|
|
FLabelArrangeMode := Value;
|
|
ArrangeLabelAndWinControlOnPanel;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetLabelWidth(Value: Integer);
|
|
begin
|
|
FLabelWidth := Value;
|
|
if Assigned(WinControl) then
|
|
ArrangeLabelAndWinControlOnPanel;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetTabOrder(Value: Integer);
|
|
begin
|
|
if Assigned(FrameControl) then
|
|
FrameControl.TabOrder := Value;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetVisible(Value: Boolean);
|
|
begin
|
|
inherited SetVisible(Value);
|
|
if Assigned(FrameControl) then
|
|
FrameControl.Visible := Value;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetWidth(Value: Integer);
|
|
begin
|
|
inherited SetWidth(Value);
|
|
ArrangeLabelAndWinControlOnPanel;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetWinControlProperties;
|
|
begin
|
|
try
|
|
FArrangeLabelAndWinControlDisabled := True;
|
|
inherited SetWinControlProperties;
|
|
finally
|
|
FArrangeLabelAndWinControlDisabled := False;
|
|
end;
|
|
end;
|
|
|
|
type
|
|
TAccessCustomControl = class(TCustomControl);
|
|
|
|
//=== { TJvLabelParameter } ==================================================
|
|
|
|
procedure TJvLabelParameter.CreateWinControlOnParent(ParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateStaticTextControl(Self, ParameterParent,
|
|
GetParameterName, Caption));
|
|
end;
|
|
|
|
//=== { TJvImageParameter } ==================================================
|
|
|
|
constructor TJvImageParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
FPicture := TPicture.Create;
|
|
FAutoSize := False;
|
|
FCenter := False;
|
|
FIncrementalDisplay := False;
|
|
FStretch := False;
|
|
FTransparent := False;
|
|
end;
|
|
|
|
destructor TJvImageParameter.Destroy;
|
|
begin
|
|
FPicture.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TJvImageParameter.SetPicture(Value: TPicture);
|
|
begin
|
|
FPicture.Assign(Value);
|
|
end;
|
|
|
|
procedure TJvImageParameter.SetAutoSize(Value: Boolean);
|
|
begin
|
|
if Value <> FAutoSize then
|
|
begin
|
|
FAutoSize := Value;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvImageParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvImageParameter then
|
|
begin
|
|
Picture := TJvImageParameter(Source).Picture;
|
|
// AutoSize := TJvImageParameter(Source).AutoSize;
|
|
Center := TJvImageParameter(Source).Center;
|
|
IncrementalDisplay := TJvImageParameter(Source).IncrementalDisplay;
|
|
Stretch := TJvImageParameter(Source).Stretch;
|
|
Transparent := TJvImageParameter(Source).Transparent;
|
|
end;
|
|
end;
|
|
|
|
function TJvImageParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'Image';
|
|
end;
|
|
|
|
procedure TJvImageParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
var
|
|
ITmpImage: IJvDynControlImage;
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateImageControl(Self, AParameterParent, GetParameterName));
|
|
if Supports(WinControl, IJvDynControlImage, ITmpImage) then
|
|
begin
|
|
ITmpImage.ControlSetPicture(Picture);
|
|
// ITmpImage.ControlSetAutoSize(AutoSize);
|
|
ITmpImage.ControlSetIncrementalDisplay(IncrementalDisplay);
|
|
ITmpImage.ControlSetCenter(Center);
|
|
ITmpImage.ControlSetStretch(Stretch);
|
|
ITmpImage.ControlSetTransparent(Transparent);
|
|
end;
|
|
end;
|
|
|
|
//=== { TJvArrangeParameter } ================================================
|
|
|
|
constructor TJvArrangeParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
FArrangeSettings := TJvArrangeSettings.Create(Self);
|
|
FArrangeSettings.BorderLeft := 2;
|
|
FArrangeSettings.BorderTop := 2;
|
|
FArrangeSettings.DistanceVertical := 2;
|
|
FArrangeSettings.DistanceHorizontal := 2;
|
|
FArrangeSettings.AutoArrange := True;
|
|
end;
|
|
|
|
destructor TJvArrangeParameter.Destroy;
|
|
begin
|
|
FArrangeSettings.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TJvArrangeParameter.ArrangeControls;
|
|
begin
|
|
if FParentControl is TJvPanel then
|
|
TJvPanel(FParentControl).ArrangeControls;
|
|
end;
|
|
|
|
procedure TJvArrangeParameter.DisableArrange;
|
|
begin
|
|
if FParentControl is TJvPanel then
|
|
TJvPanel(FParentControl).DisableArrange;
|
|
end;
|
|
|
|
procedure TJvArrangeParameter.EnableArrange;
|
|
begin
|
|
if FParentControl is TJvPanel then
|
|
TJvPanel(FParentControl).EnableArrange;
|
|
end;
|
|
|
|
procedure TJvArrangeParameter.SetArrangeSettings(Value: TJvArrangeSettings);
|
|
begin
|
|
FArrangeSettings.Assign(Value);
|
|
end;
|
|
|
|
procedure TJvArrangeParameter.Notification(AComponent: TComponent; Operation: TOperation);
|
|
begin
|
|
inherited Notification(AComponent, Operation);
|
|
if (AComponent = FParentControl) and (Operation = opRemove) then
|
|
FParentControl := nil;
|
|
end;
|
|
|
|
function TJvArrangeParameter.GetParentControl: TWinControl;
|
|
begin
|
|
if Assigned(FParentControl) then
|
|
Result := FParentControl
|
|
else
|
|
Result := WinControl;
|
|
end;
|
|
|
|
//=== { TJvPanelParameter } ==================================================
|
|
|
|
constructor TJvPanelParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
BevelInner := bvNone;
|
|
BevelOuter := bvNone;
|
|
BevelWidth := 1;
|
|
BorderStyle := bsNone;
|
|
BorderWidth := 0;
|
|
end;
|
|
|
|
procedure TJvPanelParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvPanelParameter then
|
|
begin
|
|
BevelInner := TJvPanelParameter(Source).BevelInner;
|
|
BevelOuter := TJvPanelParameter(Source).BevelOuter;
|
|
end;
|
|
end;
|
|
|
|
function TJvPanelParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'Panel';
|
|
end;
|
|
|
|
procedure TJvPanelParameter.CreateWinControlOnParent(ParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreatePanelControl(Self, ParameterParent,
|
|
GetParameterName, Caption, alNone));
|
|
ParentControl := WinControl;
|
|
if Height > 0 then
|
|
WinControl.Height := Height;
|
|
if Width > 0 then
|
|
WinControl.Width := Width;
|
|
end;
|
|
|
|
procedure TJvPanelParameter.SetWinControlProperties;
|
|
var
|
|
ITmpPanel: IJvDynControlPanel;
|
|
ITmpArrangePanel: IJvArrangePanel;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlPanel, ITmpPanel) then
|
|
ITmpPanel.ControlSetBorder(BevelInner, BevelOuter, BevelWidth, BorderStyle, BorderWidth);
|
|
if Supports(WinControl, IJvArrangePanel, ITmpArrangePanel) then
|
|
ITmpArrangePanel.ArrangeSettings := ArrangeSettings;
|
|
end;
|
|
|
|
//=== { TJvGroupBoxParameter } ===============================================
|
|
|
|
constructor TJvGroupBoxParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
ArrangeSettings.AutoSize := asHeight;
|
|
end;
|
|
|
|
function TJvGroupBoxParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'GroupBoxPanel';
|
|
end;
|
|
|
|
procedure TJvGroupBoxParameter.CreateWinControlOnParent(ParameterParent: TWinControl);
|
|
var
|
|
Panel: TJvPanel;
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateGroupBoxControl(Self, ParameterParent,
|
|
GetParameterName, Caption));
|
|
Panel := TJvPanel.Create(ParameterParent.Owner);
|
|
ParentControl := Panel;
|
|
Panel.Name := GetParameterName;
|
|
Panel.ArrangeSettings := ArrangeSettings;
|
|
Panel.BevelInner := bvNone;
|
|
Panel.BevelOuter := bvNone;
|
|
Panel.Parent := WinControl;
|
|
Panel.Align := alClient;
|
|
Panel.Visible := True;
|
|
Panel.Caption := '';
|
|
Panel.Color := Color;
|
|
Panel.OnResizeParent := ReArrangeGroupbox;
|
|
// Panel.Transparent := True;
|
|
end;
|
|
|
|
procedure TJvGroupBoxParameter.ReArrangeGroupbox(Sender: TObject; nLeft, nTop, nWidth, nHeight: Integer);
|
|
begin
|
|
if ArrangeSettings.AutoSize in [asWidth, asBoth] then
|
|
WinControl.Width := nWidth + 5;
|
|
if ArrangeSettings.AutoSize in [asHeight, asBoth] then
|
|
WinControl.Height := nHeight + 22;
|
|
end;
|
|
|
|
procedure TJvGroupBoxParameter.SetWinControlProperties;
|
|
var
|
|
ITmpArrangePanel: IJvArrangePanel;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(ParentControl, IJvArrangePanel, ITmpArrangePanel) then
|
|
ITmpArrangePanel.ArrangeSettings := ArrangeSettings;
|
|
end;
|
|
|
|
//=== { TJvListParameter } ===================================================
|
|
|
|
constructor TJvListParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
FItemList := TStringList.Create;
|
|
Sorted := False;
|
|
FItemIndex := -1;
|
|
FVariantAsItemIndex := False;
|
|
end;
|
|
|
|
destructor TJvListParameter.Destroy;
|
|
begin
|
|
FItemList.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TJvListParameter.SetAsString(const Value: string);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
I := ItemList.IndexOf(Value);
|
|
if (I >= 0) and (I < ItemList.Count) then
|
|
ItemIndex := I
|
|
else
|
|
ItemIndex := -1;
|
|
if not VariantAsItemIndex then
|
|
inherited SetAsVariant(Value);
|
|
end;
|
|
|
|
function TJvListParameter.GetAsString: string;
|
|
begin
|
|
if VariantAsItemIndex then
|
|
if (ItemIndex >= 0) and (ItemIndex < ItemList.Count) then
|
|
Result := ItemList[ItemIndex]
|
|
else
|
|
Result := ''
|
|
else
|
|
Result := inherited GetAsString;
|
|
end;
|
|
|
|
procedure TJvListParameter.SetAsInteger(Value: Integer);
|
|
begin
|
|
ItemIndex := Value
|
|
end;
|
|
|
|
function TJvListParameter.GetAsInteger: Integer;
|
|
begin
|
|
Result := ItemIndex;
|
|
end;
|
|
|
|
procedure TJvListParameter.SetAsVariant(Value: Variant);
|
|
begin
|
|
if VarIsNull(Value) then
|
|
ItemIndex := -1
|
|
else if VariantAsItemIndex then
|
|
if VarType(Value) in [varSmallInt, varInteger, varByte
|
|
{$IFDEF COMPILER6_UP}, varShortInt, varWord, varLongWord{$ENDIF}] then
|
|
ItemIndex := Value
|
|
else
|
|
SetAsString(Value)
|
|
else
|
|
SetAsString(Value);
|
|
end;
|
|
|
|
function TJvListParameter.GetAsVariant: Variant;
|
|
begin
|
|
Result := inherited GetAsVariant;
|
|
if VariantAsItemIndex then
|
|
if VarToStr(Result) = '-1' then
|
|
Result := Null;
|
|
end;
|
|
|
|
function TJvListParameter.GetItemList: TStringList;
|
|
begin
|
|
Result := FItemList;
|
|
end;
|
|
|
|
procedure TJvListParameter.SetItemList(Value: TStringList);
|
|
begin
|
|
FItemList.Assign(Value);
|
|
if Assigned(Value) then
|
|
SetItemIndex(FItemIndex);
|
|
end;
|
|
|
|
procedure TJvListParameter.SetItemIndex(Value: Integer);
|
|
begin
|
|
if Assigned(ItemList) then
|
|
begin
|
|
if Value >= ItemList.Count then
|
|
FItemIndex := ItemList.Count - 1
|
|
else
|
|
FItemIndex := Value;
|
|
if VariantAsItemIndex then
|
|
inherited SetAsVariant(FItemIndex)
|
|
else if (FItemIndex >= 0) and (FItemIndex < ItemList.Count) then
|
|
inherited SetAsVariant(ItemList[FItemIndex])
|
|
else
|
|
inherited SetAsVariant('');
|
|
end
|
|
else
|
|
begin
|
|
FItemIndex := -1;
|
|
if VariantAsItemIndex then
|
|
inherited SetAsVariant(FItemIndex)
|
|
else
|
|
inherited SetAsVariant('');
|
|
end;
|
|
end;
|
|
|
|
function TJvListParameter.GetWinControlData: Variant;
|
|
var
|
|
Index: Integer;
|
|
begin
|
|
if Assigned(JvDynControlData) then
|
|
Index := JvDynControlData.ControlValue
|
|
else
|
|
Index := -1;
|
|
if VariantAsItemIndex then
|
|
Result := Index
|
|
else if (Index >= 0) and (Index < ItemList.Count) then
|
|
Result := ItemList[Index]
|
|
else
|
|
Result := JvDynControlData.ControlValue;
|
|
end;
|
|
|
|
procedure TJvListParameter.SetWinControlData(Value: Variant);
|
|
var
|
|
Index: Integer;
|
|
begin
|
|
if Assigned(JvDynControlData) then
|
|
if VariantAsItemIndex then
|
|
JvDynControlData.ControlValue := Value
|
|
else
|
|
begin
|
|
Index := ItemList.IndexOf(Value);
|
|
if (Index >= 0) and (Index < ItemList.Count) then
|
|
JvDynControlData.ControlValue := ItemList[Index]
|
|
else
|
|
JvDynControlData.ControlValue := '';
|
|
end;
|
|
end;
|
|
|
|
procedure TJvListParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvListParameter then
|
|
begin
|
|
ItemList.Assign(TJvListParameter(Source).ItemList);
|
|
ItemIndex := TJvListParameter(Source).ItemIndex;
|
|
Sorted := TJvListParameter(Source).Sorted;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvListParameter.SearchItemIndex(const Search: string);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
FItemIndex := -1;
|
|
for I := 0 to ItemList.Count - 1 do
|
|
if Search = ItemList.Strings[I] then
|
|
begin
|
|
FItemIndex := I;
|
|
Break;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvListParameter.GetData;
|
|
begin
|
|
inherited GetData;
|
|
// if Assigned(WinControl) then
|
|
// ItemIndex := ItemList.IndexOf(Inherited GetAsString)
|
|
// else
|
|
// ItemIndex := -1;
|
|
end;
|
|
|
|
procedure TJvListParameter.SetData;
|
|
begin
|
|
inherited SetData;
|
|
// IF Assigned (
|
|
// IF Assigned (WinControl) THEN
|
|
// ItemList.IndexOf (AsString) := ItemIndex;
|
|
end;
|
|
|
|
//=== { TJvRadioGroupParameter } =============================================
|
|
|
|
procedure TJvRadioGroupParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvRadioGroupParameter then
|
|
Columns := TJvRadioGroupParameter(Source).Columns;
|
|
end;
|
|
|
|
procedure TJvRadioGroupParameter.CreateWinControlOnParent(ParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateRadioGroupControl(Self, ParameterParent,
|
|
GetParameterName, Caption, ItemList));
|
|
if Height > 0 then
|
|
WinControl.Height := Height;
|
|
if Width > 0 then
|
|
WinControl.Width := Width;
|
|
end;
|
|
|
|
procedure TJvRadioGroupParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
begin
|
|
end;
|
|
|
|
procedure TJvRadioGroupParameter.SetWinControlProperties;
|
|
var
|
|
ITmpRadioGroup: IJvDynControlRadioGroup;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlRadioGroup, ITmpRadioGroup) then
|
|
ITmpRadioGroup.ControlSetColumns(Columns);
|
|
end;
|
|
|
|
//=== { TJvCheckBoxParameter } ===============================================
|
|
|
|
procedure TJvCheckBoxParameter.CreateWinControlOnParent(ParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateCheckBoxControl(Self, ParameterParent,
|
|
GetParameterName, Caption));
|
|
if Height > 0 then
|
|
WinControl.Height := Height;
|
|
if Width > 0 then
|
|
WinControl.Width := Width;
|
|
end;
|
|
|
|
//=== { TJvComboBoxParameter } ===============================================
|
|
|
|
constructor TJvComboBoxParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
LabelArrangeMode := lamBefore;
|
|
FSorted := False;
|
|
FNewEntriesAllowed := False;
|
|
end;
|
|
|
|
procedure TJvComboBoxParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvComboBoxParameter then
|
|
begin
|
|
Sorted := TJvComboBoxParameter(Source).Sorted;
|
|
NewEntriesAllowed := TJvComboBoxParameter(Source).NewEntriesAllowed;
|
|
end;
|
|
end;
|
|
|
|
function TJvComboBoxParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'ComboBox';
|
|
end;
|
|
|
|
procedure TJvComboBoxParameter.GetData;
|
|
begin
|
|
Value := Null;
|
|
if Assigned(WinControl) then
|
|
Value := WinControlData;
|
|
end;
|
|
|
|
procedure TJvComboBoxParameter.SetData;
|
|
begin
|
|
if Assigned(WinControl) then
|
|
WinControlData := Value;
|
|
end;
|
|
|
|
procedure TJvComboBoxParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateComboBoxControl(Self, AParameterParent,
|
|
GetParameterName, ItemList));
|
|
end;
|
|
|
|
procedure TJvComboBoxParameter.SetWinControlProperties;
|
|
var
|
|
ITmpComboBox: IJvDynControlComboBox;
|
|
ITmpItems: IJvDynControlItems;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlComboBox, ITmpComboBox) then
|
|
ITmpComboBox.ControlSetNewEntriesAllowed(NewEntriesAllowed);
|
|
if Supports(WinControl, IJvDynControlItems, ITmpItems) then
|
|
ITmpItems.ControlSetSorted(Sorted);
|
|
end;
|
|
|
|
function TJvComboBoxParameter.GetWinControlData: Variant;
|
|
var
|
|
Index: Integer;
|
|
begin
|
|
if Assigned(JvDynControlData) then
|
|
Index := ItemList.IndexOf(JvDynControlData.ControlValue)
|
|
else
|
|
Index := -1;
|
|
if VariantAsItemIndex then
|
|
Result := Index
|
|
else if (Index >= 0) and (Index < ItemList.Count) then
|
|
Result := ItemList[Index]
|
|
else
|
|
Result := JvDynControlData.ControlValue;
|
|
end;
|
|
|
|
procedure TJvComboBoxParameter.SetWinControlData(Value: Variant);
|
|
begin
|
|
if Assigned(JvDynControlData) then
|
|
if VariantAsItemIndex then
|
|
JvDynControlData.ControlValue := ItemList[Value]
|
|
else
|
|
JvDynControlData.ControlValue := Value;
|
|
end;
|
|
|
|
//=== { TJvListBoxParameter } ================================================
|
|
|
|
procedure TJvListBoxParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvListBoxParameter then
|
|
Sorted := TJvListBoxParameter(Source).Sorted;
|
|
end;
|
|
|
|
function TJvListBoxParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'ListBox';
|
|
end;
|
|
|
|
procedure TJvListBoxParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
var
|
|
ITmpItems: IJvDynControlItems;
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateListBoxControl(Self, AParameterParent,
|
|
GetParameterName, ItemList));
|
|
if Supports(WinControl, IJvDynControlItems, ITmpItems) then
|
|
ITmpItems.ControlSetSorted(Sorted);
|
|
if Height > 0 then
|
|
WinControl.Height := Height;
|
|
if Width > 0 then
|
|
WinControl.Width := Width;
|
|
end;
|
|
|
|
procedure TJvListBoxParameter.SetWinControlProperties;
|
|
var
|
|
ITmpItems: IJvDynControlItems;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlItems, ITmpItems) then
|
|
ITmpItems.ControlSetSorted(Sorted);
|
|
end;
|
|
|
|
//==== TJvCheckListItemDataWrapper ===========================================
|
|
|
|
procedure TJvCheckListItemDataWrapper.SetChecked(Check: Boolean);
|
|
begin
|
|
if Check then
|
|
FState := cbChecked
|
|
else
|
|
FState := cbUnchecked;
|
|
end;
|
|
|
|
function TJvCheckListItemDataWrapper.GetChecked: Boolean;
|
|
begin
|
|
Result := FState = cbChecked;
|
|
end;
|
|
|
|
//=== { TJvCheckListBoxParameter } ===========================================
|
|
|
|
constructor TJvCheckListBoxParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
FSorted := False;
|
|
FAllowGrayed := False;
|
|
end;
|
|
|
|
destructor TJvCheckListBoxParameter.Destroy;
|
|
var
|
|
I: Integer;
|
|
begin
|
|
for I := 0 to ItemList.Count - 1 do
|
|
ItemList.Objects[I].Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TJvCheckListBoxParameter.Assign(Source: TPersistent);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvCheckListBoxParameter then
|
|
begin
|
|
Sorted := TJvCheckListBoxParameter(Source).Sorted;
|
|
AllowGrayed := TJvCheckListBoxParameter(Source).AllowGrayed;
|
|
for I := 0 to ItemList.Count do
|
|
ItemData[I] := TJvCheckListBoxParameter(Source).ItemData[I];
|
|
end;
|
|
end;
|
|
|
|
procedure TJvCheckListBoxParameter.GetData;
|
|
var
|
|
ITmpCheckListBox: IJvDynControlCheckListBox;
|
|
I: Integer;
|
|
begin
|
|
inherited GetData;
|
|
if Supports(WinControl, IJvDynControlCheckListBox, ITmpCheckListBox) then
|
|
for I := 0 to ItemList.Count - 1 do
|
|
begin
|
|
ItemData[I].ItemEnabled := ITmpCheckListBox.ControlGetItemEnabled(I);
|
|
ItemData[I].State := ITmpCheckListBox.ControlGetState(I);
|
|
ItemData[I].Header := ITmpCheckListBox.ControlGetHeader(I);
|
|
end;
|
|
end;
|
|
|
|
procedure TJvCheckListBoxParameter.SetData;
|
|
var
|
|
ITmpCheckListBox: IJvDynControlCheckListBox;
|
|
I: Integer;
|
|
begin
|
|
inherited SetData;
|
|
if Supports(WinControl, IJvDynControlCheckListBox, ITmpCheckListBox) then
|
|
for I := 0 to ItemList.Count - 1 do
|
|
begin
|
|
ITmpCheckListBox.ControlSetItemEnabled(I, ItemData[I].ItemEnabled);
|
|
ITmpCheckListBox.ControlSetState(I, ItemData[I].State);
|
|
ITmpCheckListBox.ControlSetHeader(I, ItemData[I].Header);
|
|
end;
|
|
end;
|
|
|
|
procedure TJvCheckListBoxParameter.AddCheckListBoxItem(const AText: string;
|
|
AState: TCheckBoxState = cbChecked; AItemEnabled: Boolean = True;
|
|
AHeader: Boolean = False);
|
|
begin
|
|
ItemList.Add(AText);
|
|
ItemData[ItemList.Count - 1].Header := AHeader;
|
|
ItemData[ItemList.Count - 1].State := AState;
|
|
ItemData[ItemList.Count - 1].ItemEnabled := AItemEnabled;
|
|
end;
|
|
|
|
function TJvCheckListBoxParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'CheckListBox';
|
|
end;
|
|
|
|
procedure TJvCheckListBoxParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
var
|
|
ITmpItems: IJvDynControlItems;
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateCheckListBoxControl(Self, AParameterParent,
|
|
GetParameterName, ItemList));
|
|
if Supports(WinControl, IJvDynControlItems, ITmpItems) then
|
|
ITmpItems.ControlSetSorted(Sorted);
|
|
if Height > 0 then
|
|
WinControl.Height := Height;
|
|
if Width > 0 then
|
|
WinControl.Width := Width;
|
|
end;
|
|
|
|
procedure TJvCheckListBoxParameter.SetWinControlProperties;
|
|
var
|
|
ITmpItems: IJvDynControlItems;
|
|
ITmpCheckListBox: IJvDynControlCheckListBox;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlItems, ITmpItems) then
|
|
ITmpItems.ControlSetSorted(Sorted);
|
|
if Supports(WinControl, IJvDynControlCheckListBox, ITmpCheckListBox) then
|
|
ITmpCheckListBox.ControlSetAllowGrayed(AllowGrayed);
|
|
end;
|
|
|
|
function TJvCheckListBoxParameter.GetItemData(Index: Integer): TJvCheckListItemDataWrapper;
|
|
begin
|
|
if (Index >= 0) and (Index < ItemList.Count) then
|
|
begin
|
|
if not Assigned(ItemList.Objects[Index]) then
|
|
begin
|
|
ItemList.Objects[Index] := TJvCheckListItemDataWrapper.Create;
|
|
TJvCheckListItemDataWrapper(ItemList.Objects[Index]).State := cbChecked;
|
|
TJvCheckListItemDataWrapper(ItemList.Objects[Index]).Header := False;
|
|
TJvCheckListItemDataWrapper(ItemList.Objects[Index]).ItemEnabled := True;
|
|
end;
|
|
Result := TJvCheckListItemDataWrapper(ItemList.Objects[Index]);
|
|
end
|
|
else
|
|
Result := nil;
|
|
end;
|
|
|
|
procedure TJvCheckListBoxParameter.SetItemData(Index: Integer; Value: TJvCheckListItemDataWrapper);
|
|
var
|
|
Data: TJvCheckListItemDataWrapper;
|
|
begin
|
|
Data := GetItemData(Index);
|
|
if Assigned(Data) then
|
|
begin
|
|
Data.State := Value.State;
|
|
Data.ItemEnabled := Value.ItemEnabled;
|
|
Data.Header := Value.Header;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvCheckListBoxParameter.SetItemList(Value: TStringList);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
for I := 0 to ItemList.Count - 1 do
|
|
if Assigned(ItemList.Objects[I]) then
|
|
ItemList.Objects[I].Free;
|
|
inherited SetItemList(Value);
|
|
end;
|
|
|
|
//=== { TJvTimeParameter } ===================================================
|
|
|
|
constructor TJvTimeParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
LabelArrangeMode := lamBefore;
|
|
end;
|
|
|
|
procedure TJvTimeParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvTimeParameter then
|
|
Format := TJvTimeParameter(Source).Format;
|
|
end;
|
|
|
|
function TJvTimeParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'Time';
|
|
end;
|
|
|
|
procedure TJvTimeParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateTimeControl(Self, AParameterParent, GetParameterName));
|
|
end;
|
|
|
|
procedure TJvTimeParameter.SetWinControlProperties;
|
|
var
|
|
DynControlTime: IJvDynControlTime;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlTime, DynControlTime) then
|
|
DynControlTime.ControlSetFormat(Format);
|
|
end;
|
|
|
|
//=== { TJvDateTimeParameter } ===============================================
|
|
|
|
constructor TJvDateTimeParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
LabelArrangeMode := lamBefore;
|
|
end;
|
|
|
|
procedure TJvDateTimeParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvDateTimeParameter then
|
|
begin
|
|
Format := TJvDateTimeParameter(Source).Format;
|
|
MaxDate := TJvDateTimeParameter(Source).MaxDate;
|
|
MinDate := TJvDateTimeParameter(Source).MinDate;
|
|
end;
|
|
end;
|
|
|
|
function TJvDateTimeParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'DateTime';
|
|
end;
|
|
|
|
procedure TJvDateTimeParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateDateTimeControl(Self, AParameterParent, GetParameterName));
|
|
end;
|
|
|
|
procedure TJvDateTimeParameter.SetWinControlProperties;
|
|
var
|
|
DynControlDate: IJvDynControlDate;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlDate, DynControlDate) then
|
|
begin
|
|
DynControlDate.ControlSetFormat(Format);
|
|
DynControlDate.ControlSetMinDate(MinDate);
|
|
DynControlDate.ControlSetMaxDate(MaxDate);
|
|
end;
|
|
end;
|
|
|
|
//=== { TJvDateParameter } ===================================================
|
|
|
|
constructor TJvDateParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
LabelArrangeMode := lamBefore;
|
|
end;
|
|
|
|
procedure TJvDateParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvDateParameter then
|
|
begin
|
|
Format := TJvDateParameter(Source).Format;
|
|
MinDate := TJvDateParameter(Source).MinDate;
|
|
MaxDate := TJvDateParameter(Source).MaxDate;
|
|
end;
|
|
end;
|
|
|
|
function TJvDateParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'Date';
|
|
end;
|
|
|
|
procedure TJvDateParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateDateControl(Self, AParameterParent, GetParameterName));
|
|
end;
|
|
|
|
procedure TJvDateParameter.SetWinControlProperties;
|
|
var
|
|
DynControlDate: IJvDynControlDate;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlDate, DynControlDate) then
|
|
begin
|
|
DynControlDate.ControlSetFormat(Format);
|
|
DynControlDate.ControlSetMinDate(MinDate);
|
|
DynControlDate.ControlSetMaxDate(MaxDate);
|
|
end;
|
|
end;
|
|
|
|
//=== { TJvEditParameter } ===================================================
|
|
|
|
constructor TJvEditParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
FPasswordChar := #0;
|
|
FEditMask := '';
|
|
FLabelWidth := 0;
|
|
FEditWidth := 0;
|
|
LabelArrangeMode := lamBefore;
|
|
end;
|
|
|
|
procedure TJvEditParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvEditParameter then
|
|
begin
|
|
EditMask := TJvEditParameter(Source).EditMask;
|
|
PasswordChar := TJvEditParameter(Source).PasswordChar;
|
|
end;
|
|
end;
|
|
|
|
function TJvEditParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'MaskEdit';
|
|
end;
|
|
|
|
procedure TJvEditParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
var
|
|
DynCtrlEdit: IJvDynControlEdit;
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateEditControl(Self, AParameterParent, GetParameterName));
|
|
if Supports(WinControl, IJvDynControlEdit, DynCtrlEdit) then
|
|
begin
|
|
DynCtrlEdit.ControlSetPasswordChar(PasswordChar);
|
|
DynCtrlEdit.ControlSetEditMask(EditMask);
|
|
end;
|
|
end;
|
|
|
|
//=== { TJvButtonEditParameter } =============================================
|
|
|
|
function TJvButtonEditParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'ButtonEdit';
|
|
end;
|
|
|
|
procedure TJvButtonEditParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
var
|
|
DynCtrlEdit: IJvDynControlEdit;
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateButtonEditControl(Self, AParameterParent, GetParameterName, FOnClick));
|
|
if Supports(WinControl, IJvDynControlEdit, DynCtrlEdit) then
|
|
begin
|
|
DynCtrlEdit.ControlSetPasswordChar(PasswordChar);
|
|
DynCtrlEdit.ControlSetEditMask(EditMask);
|
|
end;
|
|
end;
|
|
|
|
procedure TJvButtonEditParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvButtonEditParameter then
|
|
OnClick := TJvButtonEditParameter(Source).OnClick;
|
|
end;
|
|
|
|
//=== { TJvNumberEditParameter } =============================================
|
|
|
|
procedure TJvNumberEditParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvNumberEditParameter then
|
|
EditorType := TJvNumberEditParameter(Source).EditorType;
|
|
end;
|
|
|
|
//=== { TJvIntegerEditParameter } ============================================
|
|
|
|
constructor TJvIntegerEditParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
Required := True;
|
|
MinValue := Low(Integer);
|
|
MaxValue := High(Integer);
|
|
Increment := 10;
|
|
end;
|
|
|
|
procedure TJvIntegerEditParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
var
|
|
DynCtrlEdit: IJvDynControlEdit;
|
|
begin
|
|
if (EditorType = netCalculate) and DynControlEngine.IsControlTypeRegistered(jctCalculateEdit) then
|
|
SetWinControl (DynControlEngine.CreateCalculateControl(Self, AParameterParent, GetParameterName))
|
|
else if (EditorType = netSpin) and DynControlEngine.IsControlTypeRegistered(jctSpinEdit) then
|
|
SetWinControl (DynControlEngine.CreateSpinControl(Self, AParameterParent, GetParameterName))
|
|
else
|
|
SetWinControl (DynControlEngine.CreateEditControl(Self, AParameterParent, GetParameterName));
|
|
if Supports(WinControl, IJvDynControlEdit, DynCtrlEdit) then
|
|
begin
|
|
DynCtrlEdit.ControlSetPasswordChar(PasswordChar);
|
|
DynCtrlEdit.ControlSetEditMask(EditMask);
|
|
end;
|
|
end;
|
|
|
|
procedure TJvIntegerEditParameter.SetWinControlProperties;
|
|
var
|
|
ITmpSpin: IJvDynControlSpin;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlSpin, ITmpSpin) then
|
|
begin
|
|
ITmpSpin.ControlSetIncrement(Increment);
|
|
ITmpSpin.ControlSetMinValue(MinValue);
|
|
ITmpSpin.ControlSetMaxValue(MaxValue);
|
|
ITmpSpin.ControlSetUseForInteger(True);
|
|
end;
|
|
end;
|
|
|
|
procedure TJvIntegerEditParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvIntegerEditParameter then
|
|
begin
|
|
MinValue := TJvIntegerEditParameter(Source).MinValue;
|
|
MaxValue := TJvIntegerEditParameter(Source).MaxValue;
|
|
end;
|
|
end;
|
|
|
|
function TJvIntegerEditParameter.Validate(var AData: Variant): Boolean;
|
|
var
|
|
I: Integer;
|
|
begin
|
|
Result := not Enabled;
|
|
if Result then
|
|
Exit;
|
|
if VarIsNull(AData) or (AData = '') then
|
|
if Required then
|
|
begin
|
|
DSADialogsMessageDlg(Format(RsErrParameterMustBeEntered, [Caption]), mtError, [mbOK], 0);
|
|
Exit;
|
|
end
|
|
else
|
|
begin
|
|
Result := True;
|
|
Exit;
|
|
end;
|
|
try
|
|
I := AData;
|
|
except
|
|
DSADialogsMessageDlg(Format(RsErrParameterIsNotAValidNumber, [Caption, AData]), mtError, [mbOK], 0);
|
|
Exit;
|
|
end;
|
|
if (I < MinValue) or (I > MaxValue) then
|
|
DSADialogsMessageDlg(Format(RsErrParameterMustBeBetween, [Caption, AData, IntToStr(MinValue),
|
|
IntToStr(MaxValue)]), mtError, [mbOK], 0)
|
|
else
|
|
Result := True;
|
|
end;
|
|
|
|
//=== { TJvDoubleEditParameter } =============================================
|
|
|
|
constructor TJvDoubleEditParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
Required := True;
|
|
// (rom) please use better values here (see JclMath)
|
|
MinValue := -1E38;
|
|
MaxValue := 1E38;
|
|
Increment := 100;
|
|
end;
|
|
|
|
procedure TJvDoubleEditParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
var
|
|
DynCtrlEdit: IJvDynControlEdit;
|
|
begin
|
|
if (EditorType = netCalculate) and DynControlEngine.IsControlTypeRegistered(jctCalculateEdit) then
|
|
SetWinControl (DynControlEngine.CreateCalculateControl(Self, AParameterParent, GetParameterName))
|
|
else if (EditorType = netSpin) and DynControlEngine.IsControlTypeRegistered(jctSpinEdit) then
|
|
SetWinControl (DynControlEngine.CreateSpinControl(Self, AParameterParent, GetParameterName))
|
|
else
|
|
SetWinControl (DynControlEngine.CreateEditControl(Self, AParameterParent, GetParameterName));
|
|
if Supports(WinControl, IJvDynControlEdit, DynCtrlEdit) then
|
|
begin
|
|
DynCtrlEdit.ControlSetPasswordChar(PasswordChar);
|
|
DynCtrlEdit.ControlSetEditMask(EditMask);
|
|
end;
|
|
end;
|
|
|
|
procedure TJvDoubleEditParameter.SetWinControlProperties;
|
|
var
|
|
ITmpSpin: IJvDynControlSpin;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlSpin, ITmpSpin) then
|
|
begin
|
|
ITmpSpin.ControlSetIncrement(Increment);
|
|
ITmpSpin.ControlSetMinValue(MinValue);
|
|
ITmpSpin.ControlSetMaxValue(MaxValue);
|
|
ITmpSpin.ControlSetUseForInteger(True);
|
|
end;
|
|
end;
|
|
|
|
procedure TJvDoubleEditParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvDoubleEditParameter then
|
|
begin
|
|
MinValue := TJvDoubleEditParameter(Source).MinValue;
|
|
MaxValue := TJvDoubleEditParameter(Source).MaxValue;
|
|
end;
|
|
end;
|
|
|
|
function TJvDoubleEditParameter.Validate(var AData: Variant): Boolean;
|
|
var
|
|
D: Double;
|
|
begin
|
|
if not Enabled then
|
|
begin
|
|
Result := True;
|
|
Exit;
|
|
end;
|
|
Result := False;
|
|
if VarIsNull(AData) then
|
|
begin
|
|
if Required then
|
|
DSADialogsMessageDlg(Format(RsErrParameterMustBeEntered, [Caption]), mtError, [mbOK], 0)
|
|
else
|
|
Result := True;
|
|
Exit;
|
|
end;
|
|
try
|
|
D := AData;
|
|
except
|
|
DSADialogsMessageDlg(Format(RsErrParameterIsNotAValidNumber, [Caption, AData]), mtError, [mbOK], 0);
|
|
Exit;
|
|
end;
|
|
if (D < MinValue) or (D > MaxValue) then
|
|
DSADialogsMessageDlg(Format(RsErrParameterMustBeBetween, [Caption, AData, FloatToStr(MinValue),
|
|
FloatToStr(MaxValue)]), mtError, [mbOK], 0)
|
|
else
|
|
Result := True;
|
|
end;
|
|
|
|
//=== { TJvFileNameParameter } ===============================================
|
|
|
|
constructor TJvFileNameParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
LabelArrangeMode := lamBefore;
|
|
FDialogOptions := [ofHideReadOnly, ofEnableSizing];
|
|
end;
|
|
|
|
procedure TJvFileNameParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvFileNameParameter then
|
|
begin
|
|
DialogKind := TJvFileNameParameter(Source).DialogKind;
|
|
DefaultExt := TJvFileNameParameter(Source).DefaultExt;
|
|
Filter := TJvFileNameParameter(Source).Filter;
|
|
FilterIndex := TJvFileNameParameter(Source).FilterIndex;
|
|
InitialDir := TJvFileNameParameter(Source).InitialDir;
|
|
DialogOptions := TJvFileNameParameter(Source).DialogOptions;
|
|
DialogTitle := TJvFileNameParameter(Source).DialogTitle;
|
|
end;
|
|
end;
|
|
|
|
function TJvFileNameParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'FileNameEdit';
|
|
end;
|
|
|
|
procedure TJvFileNameParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateFileNameControl(Self, AParameterParent, GetParameterName));
|
|
end;
|
|
|
|
procedure TJvFileNameParameter.SetWinControlProperties;
|
|
var
|
|
ITmpControlFileName: IJvDynControlFileName;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlFileName, ITmpControlFileName) then
|
|
begin
|
|
ITmpControlFileName.ControlSetDialogKind(DialogKind);
|
|
ITmpControlFileName.ControlSetDefaultExt(DefaultExt);
|
|
ITmpControlFileName.ControlSetFilter(Filter);
|
|
ITmpControlFileName.ControlSetFilterIndex(FilterIndex);
|
|
ITmpControlFileName.ControlSetInitialDir(InitialDir);
|
|
ITmpControlFileName.ControlSetDialogOptions(DialogOptions);
|
|
ITmpControlFileName.ControlSetDialogTitle(DialogTitle);
|
|
end;
|
|
end;
|
|
|
|
function TJvFileNameParameter.Validate(var AData: Variant): Boolean;
|
|
begin
|
|
Result := not Enabled;
|
|
if Result then
|
|
Exit;
|
|
AData := Trim(AData);
|
|
if AData = DefaultExt then
|
|
AData := '';
|
|
if Required then
|
|
if AData = '' then
|
|
begin
|
|
DSADialogsMessageDlg(Format(RsErrParameterMustBeEntered, [Caption]), mtError, [mbOK], 0);
|
|
Exit;
|
|
end;
|
|
if AData <> '' then
|
|
if ExtractFileExt(AData) = '' then
|
|
if DefaultExt <> '' then
|
|
if DefaultExt[1] = '.' then
|
|
AData := AData + DefaultExt
|
|
else
|
|
AData := AData + '.' + DefaultExt;
|
|
if ofFileMustExist in DialogOptions then
|
|
if not FileExists(AData) then
|
|
begin
|
|
DSADialogsMessageDlg(Format(RsErrParameterFileDoesNotExist, [Caption, AData]), mtError, [mbOK], 0);
|
|
Exit;
|
|
end;
|
|
if ofOverwritePrompt in DialogOptions then
|
|
if FileExists(AData) then
|
|
if DSADialogsMessageDlg(Format(RsErrParameterFileExistOverwrite, [Caption, AData]), mtConfirmation, [mbYes,
|
|
mbNo], 0) = mrNo then
|
|
Exit;
|
|
if ofPathMustExist in DialogOptions then
|
|
if ExtractFilePath(AData) <> '' then
|
|
if not DirectoryExists(ExtractFilePath(AData)) then
|
|
begin
|
|
DSADialogsMessageDlg(Format(RsErrParameterDirectoryNotExist, [Caption, ExtractFilePath(AData)]), mtError,
|
|
[mbOK], 0);
|
|
Exit;
|
|
end;
|
|
Result := True;
|
|
end;
|
|
|
|
//=== { TJvDirectoryParameter } ==============================================
|
|
|
|
constructor TJvDirectoryParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
LabelArrangeMode := lamBefore;
|
|
end;
|
|
|
|
procedure TJvDirectoryParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvDirectoryParameter then
|
|
begin
|
|
InitialDir := TJvDirectoryParameter(Source).InitialDir;
|
|
DialogOptions := TJvDirectoryParameter(Source).DialogOptions;
|
|
DialogTitle := TJvDirectoryParameter(Source).DialogTitle;
|
|
end;
|
|
end;
|
|
|
|
function TJvDirectoryParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'DirectoryEdit';
|
|
end;
|
|
|
|
procedure TJvDirectoryParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateDirectoryControl(Self, AParameterParent, GetParameterName));
|
|
end;
|
|
|
|
procedure TJvDirectoryParameter.SetWinControlProperties;
|
|
var
|
|
ITmpControlDirectory: IJvDynControlDirectory;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlDirectory, ITmpControlDirectory) then
|
|
begin
|
|
ITmpControlDirectory.ControlSetDialogTitle(DialogTitle);
|
|
ITmpControlDirectory.ControlSetDialogOptions(DialogOptions);
|
|
ITmpControlDirectory.ControlSetInitialDir(InitialDir);
|
|
end;
|
|
end;
|
|
|
|
function TJvDirectoryParameter.Validate(var AData: Variant): Boolean;
|
|
begin
|
|
Result := not Enabled;
|
|
if Result then
|
|
Exit;
|
|
AData := Trim(AData);
|
|
if Required then
|
|
if AData = '' then
|
|
begin
|
|
DSADialogsMessageDlg(Format(RsErrParameterMustBeEntered, [Caption]), mtError, [mbOK], 0);
|
|
Exit;
|
|
end;
|
|
if not DirectoryExists(AData) then
|
|
if not (sdAllowCreate in DialogOptions) then
|
|
begin
|
|
DSADialogsMessageDlg(Format(RsErrParameterDirectoryNotExist, [Caption, AData]), mtError, [mbOK], 0);
|
|
Exit;
|
|
end;
|
|
Result := True;
|
|
end;
|
|
|
|
///=== { TJvMemoParameter } ==================================================
|
|
|
|
constructor TJvMemoParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
ScrollBars := ssNone;
|
|
WantTabs := False;
|
|
WantReturns := True;
|
|
WordWrap := False;
|
|
end;
|
|
|
|
function TJvMemoParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'Memo';
|
|
end;
|
|
|
|
procedure TJvMemoParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateMemoControl(Self, AParameterParent, GetParameterName));
|
|
end;
|
|
|
|
procedure TJvMemoParameter.SetWinControlProperties;
|
|
var
|
|
ITmpMemo: IJvDynControlMemo;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlMemo, ITmpMemo) then
|
|
begin
|
|
ITmpMemo.ControlSetWantTabs(WantTabs);
|
|
ITmpMemo.ControlSetWantReturns(WantReturns);
|
|
ITmpMemo.ControlSetWordWrap(WordWrap);
|
|
ITmpMemo.ControlSetScrollbars(ScrollBars);
|
|
end;
|
|
end;
|
|
|
|
///=== { TJvRichEditParameter } ==============================================
|
|
|
|
constructor TJvRichEditParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
ScrollBars := ssNone;
|
|
WantTabs := False;
|
|
WantReturns := True;
|
|
WordWrap := False;
|
|
end;
|
|
|
|
function TJvRichEditParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'RichEdit';
|
|
end;
|
|
|
|
procedure TJvRichEditParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
begin
|
|
SetWinControl (DynControlEngine.CreateRichEditControl(Self, AParameterParent, GetParameterName));
|
|
end;
|
|
|
|
procedure TJvRichEditParameter.SetWinControlProperties;
|
|
var
|
|
ITmpMemo: IJvDynControlMemo;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlMemo, ITmpMemo) then
|
|
begin
|
|
ITmpMemo.ControlSetWantTabs(WantTabs);
|
|
ITmpMemo.ControlSetWantReturns(WantReturns);
|
|
ITmpMemo.ControlSetWordWrap(WordWrap);
|
|
ITmpMemo.ControlSetScrollbars(ScrollBars);
|
|
end;
|
|
end;
|
|
|
|
///=== { TJvPageControlParameter } ==============================================
|
|
|
|
constructor TJvPageControlParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
fHotTrack := True;
|
|
fMultiline := True;
|
|
fScrollOpposite := True;
|
|
fTabIndex := 0;
|
|
FRaggedRight := False;
|
|
FPages := TStringList.Create;
|
|
end;
|
|
|
|
destructor TJvPageControlParameter.Destroy;
|
|
begin
|
|
FreeAndNil(FPages);
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TJvPageControlParameter.ArrangeControls;
|
|
var
|
|
i: Integer;
|
|
ITmpArrangePanel: IJvArrangePanel;
|
|
w, h: Integer;
|
|
c: TWinControl;
|
|
begin
|
|
w := 0;
|
|
h := 0;
|
|
for i := 0 to Pages.Count - 1 do
|
|
begin
|
|
c := PageWinControl(i);
|
|
if Supports(c, IJvArrangePanel, ITmpArrangePanel) then
|
|
ITmpArrangePanel.ArrangeControls;
|
|
if (ArrangeSettings.AutoSize in [asWidth, asBoth]) then
|
|
if c.Width > w then
|
|
w := c.Width;
|
|
if (ArrangeSettings.AutoSize in [asHeight, asBoth]) then
|
|
if c.Height > h then
|
|
h := c.Height;
|
|
end;
|
|
if (ArrangeSettings.AutoSize in [asWidth, asBoth])
|
|
and (w <> WinControl.Width) then
|
|
WinControl.Width := w;
|
|
if (ArrangeSettings.AutoSize in [asHeight, asBoth])
|
|
and (h <> WinControl.Height) then
|
|
WinControl.Height := h;
|
|
end;
|
|
|
|
procedure TJvPageControlParameter.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if Source is TJvPageControlParameter then
|
|
begin
|
|
HotTrack := TJvPageControlParameter(Source).HotTrack;
|
|
Multiline := TJvPageControlParameter(Source).Multiline;
|
|
ScrollOpposite := TJvPageControlParameter(Source).Scrollopposite;
|
|
TabIndex := TJvPageControlParameter(Source).TabIndex;
|
|
RaggedRight := TJvPageControlParameter(Source).RaggedRight;
|
|
Pages.Assign(TJvPageControlParameter(Source).Pages);
|
|
end;
|
|
end;
|
|
|
|
procedure TJvPageControlParameter.CreateWinControlOnParent(ParameterParent:
|
|
TWinControl);
|
|
var
|
|
i: Integer;
|
|
ITmpPageControl: IJvDynControlPageControl;
|
|
Scrollbox: TScrollBox;
|
|
Panel: TJvPanel;
|
|
begin
|
|
SetWinControl (DynControlEngine.CreatePageControlControl(Self, ParameterParent,
|
|
GetParameterName, Pages));
|
|
if Height > 0 then
|
|
WinControl.Height := Height;
|
|
if Width > 0 then
|
|
WinControl.Width := Width;
|
|
Supports(WinControl, IJvDynControlPageControl, ITmpPageControl);
|
|
for i := 0 to Pages.Count - 1 do
|
|
begin
|
|
Scrollbox := TScrollbox.Create(ParameterParent.Owner);
|
|
Scrollbox.Parent := ITmpPageControl.ControlGetPage(Pages[i]);
|
|
Scrollbox.Align := alClient;
|
|
ScrollBox.AutoScroll := False;
|
|
ScrollBox.BorderStyle := bsNone;
|
|
Panel := TJvPanel.Create(ParameterParent.Owner);
|
|
Panel.Name := GenerateUniqueComponentName(ParameterParent.Owner, Panel, GetParameterName + '_' + Pages[i]);
|
|
Panel.ArrangeSettings := ArrangeSettings;
|
|
Panel.BevelInner := bvNone;
|
|
Panel.BevelOuter := bvNone;
|
|
Panel.Parent := Scrollbox;
|
|
Panel.Align := alTop;
|
|
Panel.Visible := True;
|
|
Panel.Caption := '';
|
|
Panel.Color := Color;
|
|
Panel.OnResizeParent := RearrangePageControl;
|
|
Panel.Parent := Scrollbox;
|
|
Pages.Objects[i] := Panel;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvPageControlParameter.DisableArrange;
|
|
var
|
|
i: Integer;
|
|
ITmpArrangePanel: IJvArrangePanel;
|
|
begin
|
|
for i := 0 to Pages.Count - 1 do
|
|
if Supports(PageWinControl(i), IJvArrangePanel, ITmpArrangePanel) then
|
|
ITmpArrangePanel.DisableArrange;
|
|
end;
|
|
|
|
procedure TJvPageControlParameter.EnableArrange;
|
|
var
|
|
i: Integer;
|
|
ITmpArrangePanel: IJvArrangePanel;
|
|
begin
|
|
for i := 0 to Pages.Count - 1 do
|
|
if Supports(PageWinControl(i), IJvArrangePanel, ITmpArrangePanel) then
|
|
ITmpArrangePanel.EnableArrange;
|
|
end;
|
|
|
|
function TJvPageControlParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'PageControl';
|
|
end;
|
|
|
|
function TJvPageControlParameter.PageWinControl(Index: Integer): TWinControl;
|
|
begin
|
|
if Assigned(Pages.Objects[Index]) and (Pages.Objects[Index] is TWinControl) then
|
|
Result := TWinControl(Pages.Objects[Index])
|
|
else
|
|
Result := nil;
|
|
end;
|
|
|
|
procedure TJvPageControlParameter.RearrangePageControl(Sender: TObject; nLeft,
|
|
nTop, nWidth, nHeight: Integer);
|
|
begin
|
|
if Assigned(Sender) and (Sender is TWinControl) then
|
|
begin
|
|
if (ArrangeSettings.AutoSize in [asWidth, asBoth])
|
|
and (TWinControl(Sender).Width <> nWidth + 5) then
|
|
TWinControl(Sender).Width := nWidth + 5;
|
|
if (ArrangeSettings.AutoSize in [asHeight, asBoth])
|
|
and (TWinControl(Sender).Height <> nHeight + 45) then
|
|
TWinControl(Sender).Height := nHeight + 45;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvPageControlParameter.SetPages(Value: TStringList);
|
|
begin
|
|
FPages.Assign(Value);
|
|
end;
|
|
|
|
procedure TJvPageControlParameter.SetWinControlProperties;
|
|
var
|
|
ITmpTabControl: IJvDynControlTabControl;
|
|
ITmpArrangePanel: IJvArrangePanel;
|
|
i: Integer;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlTabControl, ITmpTabControl) then
|
|
begin
|
|
ITmpTabControl.ControlSetRaggedRight(RaggedRight);
|
|
ITmpTabControl.ControlSetMultiline(Multiline);
|
|
ITmpTabControl.ControlSetScrollOpposite(ScrollOpposite);
|
|
ITmpTabControl.ControlSetHotTrack(HotTrack);
|
|
end;
|
|
for i := 0 to Pages.Count - 1 do
|
|
if Supports(PageWinControl(i), IJvArrangePanel, ITmpArrangePanel) then
|
|
ITmpArrangePanel.ArrangeSettings := ArrangeSettings;
|
|
end;
|
|
|
|
{$IFDEF UNITVERSIONING}
|
|
initialization
|
|
RegisterUnitVersion(HInstance, UnitVersioning);
|
|
|
|
finalization
|
|
UnregisterUnitVersion(HInstance);
|
|
{$ENDIF UNITVERSIONING}
|
|
|
|
end.
|
|
|