2339 lines
72 KiB
ObjectPascal
2339 lines
72 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 10612 2006-05-19 19:04:09Z 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}
|
|
{$IFDEF VisualCLX}
|
|
JvQTypes,
|
|
{$ENDIF VisualCLX}
|
|
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);
|
|
|
|
TJvBasePanelEditParameter = class(TJvBaseParameter)
|
|
private
|
|
FLabelControl: TControl;
|
|
FFramePanel: TWinControl;
|
|
FLabelArrangeMode: TJvParameterLabelArrangeMode;
|
|
FLabelWidth: Integer;
|
|
FEditWidth: Integer;
|
|
FRightSpace: Integer;
|
|
FArrangeLabelAndWinControlDisabled: Boolean;
|
|
protected
|
|
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
|
procedure SetWinControlProperties; override;
|
|
procedure ArrangeLabelAndWinControlOnPanel; virtual;
|
|
procedure CreateLabelControl(AParameterParent: TWinControl); virtual;
|
|
procedure CreateFramePanel(AParameterParent: TWinControl); virtual;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); virtual; abstract;
|
|
function GetLabelWidth: Integer; virtual;
|
|
procedure SetLabelWidth(Value: Integer); virtual;
|
|
property LabelControl: TControl read FLabelControl write FLabelControl;
|
|
property FramePanel: TWinControl read FFramePanel write FFramePanel;
|
|
public
|
|
constructor Create(AParameterList: TJvParameterList); override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
procedure SetEnabled(Value: Boolean); override;
|
|
procedure SetVisible(Value: Boolean); override;
|
|
procedure SetHeight(Value: Integer); override;
|
|
procedure SetWidth(Value: Integer); override;
|
|
procedure SetTabOrder(Value: Integer); override;
|
|
procedure SetLabelArrangeMode(Value: TJvParameterLabelArrangeMode); virtual;
|
|
procedure CreateWinControlOnParent(ParameterParent: TWinControl); override;
|
|
published
|
|
property LabelArrangeMode: TJvParameterLabelArrangeMode read FLabelArrangeMode write SetLabelArrangeMode;
|
|
property LabelWidth: Integer read GetLabelWidth write SetLabelWidth;
|
|
property EditWidth: Integer read FEditWidth write FEditWidth;
|
|
property RightSpace: Integer read FRightSpace write FRightSpace;
|
|
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;
|
|
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);
|
|
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;
|
|
{$IFDEF VCL}
|
|
FDialogOptions: TSelectDirOpts;
|
|
{$ENDIF VCL}
|
|
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;
|
|
{$IFDEF VCL}
|
|
property DialogOptions: TSelectDirOpts read FDialogOptions write FDialogOptions;
|
|
{$ENDIF VCL}
|
|
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
|
|
FSorted: Boolean;
|
|
protected
|
|
function GetParameterNameExt: string; override;
|
|
procedure CreateWinControl(AParameterParent: TWinControl); override;
|
|
procedure SetWinControlProperties; override;
|
|
public
|
|
procedure Assign(Source: TPersistent); override;
|
|
published
|
|
property Sorted: Boolean read FSorted write FSorted;
|
|
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
|
|
FSorted: Boolean;
|
|
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 Sorted: Boolean read FSorted write FSorted;
|
|
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;
|
|
|
|
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/tags/JVCL3_32/run/JvParameterListParameter.pas $';
|
|
Revision: '$Revision: 10612 $';
|
|
Date: '$Date: 2006-05-19 21:04:09 +0200 (ven., 19 mai 2006) $';
|
|
LogPath: 'JVCL\run'
|
|
);
|
|
{$ENDIF UNITVERSIONING}
|
|
|
|
implementation
|
|
|
|
uses
|
|
JvResources;
|
|
|
|
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
|
|
WinControl := 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
|
|
with IJvButton do
|
|
begin
|
|
ControlSetGlyph(Glyph);
|
|
ControlSetNumGlyphs(NumGlyphs);
|
|
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
|
|
WinControl := 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;
|
|
FRightSpace := 0;
|
|
FArrangeLabelAndWinControlDisabled := False;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.CreateWinControlOnParent(ParameterParent: TWinControl);
|
|
begin
|
|
CreateFramePanel(ParameterParent);
|
|
CreateWinControl(FramePanel);
|
|
CreateLabelControl(FramePanel);
|
|
ArrangeLabelAndWinControlOnPanel;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.Notification(AComponent: TComponent; Operation: TOperation);
|
|
begin
|
|
inherited Notification(AComponent, Operation);
|
|
if (AComponent = FFramePanel) and (Operation = opRemove) then
|
|
FFramePanel := nil;
|
|
if (AComponent = FLabelControl) and (Operation = opRemove) then
|
|
FLabelControl := nil;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetWinControlProperties;
|
|
begin
|
|
try
|
|
FArrangeLabelAndWinControlDisabled := True;
|
|
inherited SetWinControlProperties;
|
|
finally
|
|
FArrangeLabelAndWinControlDisabled := False;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.CreateFramePanel(AParameterParent: TWinControl);
|
|
begin
|
|
FramePanel := DynControlEngine.CreatePanelControl(Self, AParameterParent,
|
|
GetParameterName + 'Panel', '', alNone);
|
|
FramePanel.Height := Height;
|
|
FramePanel.Width := Width;
|
|
if FramePanel is TPanel then
|
|
with TPanel(FramePanel) do
|
|
begin
|
|
BevelInner := bvNone;
|
|
BevelOuter := bvNone;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.CreateLabelControl(AParameterParent: TWinControl);
|
|
begin
|
|
if Caption = '' then
|
|
Exit;
|
|
LabelControl := DynControlEngine.CreateLabelControl(Self, AParameterParent,
|
|
GetParameterName + 'Label', Caption, WinControl);
|
|
LabelControl.Visible := True;
|
|
LabelControl.Enabled := Enabled;
|
|
LabelControl.Parent := AParameterParent;
|
|
end;
|
|
|
|
function TJvBasePanelEditParameter.GetLabelWidth: Integer;
|
|
begin
|
|
if Assigned(ParameterList) and (FLabelWidth <= 0) then
|
|
Result := ParameterList.DefaultParameterLabelWidth
|
|
else
|
|
Result := FLabelWidth;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetLabelWidth(Value: Integer);
|
|
begin
|
|
FLabelWidth := Value;
|
|
if Assigned(WinControl) then
|
|
ArrangeLabelAndWinControlOnPanel;
|
|
end;
|
|
|
|
type
|
|
TAccessCustomControl = class(TCustomControl);
|
|
|
|
procedure TJvBasePanelEditParameter.ArrangeLabelAndWinControlOnPanel;
|
|
var
|
|
TmpLabelArrangeMode: TJvParameterLabelArrangeMode;
|
|
begin
|
|
if not Assigned(FramePanel) or not Assigned(WinControl) or FArrangeLabelAndWinControlDisabled then
|
|
Exit;
|
|
if (LabelArrangeMode = lamBefore) and not Assigned(LabelControl) then
|
|
TmpLabelArrangeMode := lamAbove
|
|
else
|
|
TmpLabelArrangeMode := LabelArrangeMode;
|
|
|
|
if not Assigned(LabelControl) then
|
|
begin
|
|
WinControl.Top := 0;
|
|
WinControl.Left := 0;
|
|
if FramePanel.Height > 0 then
|
|
FramePanel.Height := WinControl.Height
|
|
else
|
|
WinControl.Height := FramePanel.Height;
|
|
if EditWidth > 0 then
|
|
begin
|
|
WinControl.Width := EditWidth;
|
|
if FramePanel.Width <= 0 then
|
|
FramePanel.Width := WinControl.Width;
|
|
end
|
|
else
|
|
if RightSpace > 0 then
|
|
if FramePanel.Width > 0 then
|
|
WinControl.Width := FramePanel.Width - RightSpace
|
|
else
|
|
begin
|
|
FramePanel.Width := WinControl.Width;
|
|
WinControl.Width := WinControl.Width - RightSpace;
|
|
end
|
|
else
|
|
if FramePanel.Width > 0 then
|
|
WinControl.Width := FramePanel.Width
|
|
else
|
|
FramePanel.Width := WinControl.Width;
|
|
Exit;
|
|
end
|
|
else
|
|
begin
|
|
LabelControl.Top := 0;
|
|
LabelControl.Left := 0;
|
|
end;
|
|
if (TmpLabelArrangeMode = lamAbove) or not Assigned(LabelControl) then
|
|
begin
|
|
if Assigned(LabelControl) then
|
|
WinControl.Top := LabelControl.Height + 2
|
|
else
|
|
WinControl.Top := 0;
|
|
WinControl.Left := 0;
|
|
|
|
if EditWidth > 0 then
|
|
begin
|
|
WinControl.Width := EditWidth;
|
|
if FramePanel.Width <= 0 then
|
|
FramePanel.Width := WinControl.Width;
|
|
end
|
|
else
|
|
if RightSpace > 0 then
|
|
if FramePanel.Width > 0 then
|
|
WinControl.Width := FramePanel.Width - RightSpace
|
|
else
|
|
begin
|
|
FramePanel.Width := WinControl.Width;
|
|
WinControl.Width := WinControl.Width - RightSpace;
|
|
end
|
|
else
|
|
if FramePanel.Width > 0 then
|
|
WinControl.Width := FramePanel.Width
|
|
else
|
|
FramePanel.Width := WinControl.Width;
|
|
if Assigned(LabelControl) then
|
|
LabelControl.Width := FramePanel.Width;
|
|
|
|
if Height > 0 then
|
|
if Assigned(LabelControl) then
|
|
WinControl.Height := Height - (LabelControl.Height + 3)
|
|
else
|
|
WinControl.Height := Height
|
|
else
|
|
if Assigned(LabelControl) then
|
|
FramePanel.Height := WinControl.Height + LabelControl.Height + 3
|
|
else
|
|
FramePanel.Height := WinControl.Height;
|
|
end
|
|
else
|
|
begin
|
|
if LabelWidth > 0 then
|
|
LabelControl.Width := LabelWidth
|
|
else
|
|
if FramePanel is TCustomControl then
|
|
LabelControl.Width := TAccessCustomControl(FramePanel).Canvas.TextWidth(Caption);
|
|
WinControl.Top := LabelControl.Top;
|
|
WinControl.Left := LabelControl.Left + LabelControl.Width + 4;
|
|
if FramePanel.Height > 0 then
|
|
WinControl.Height := FramePanel.Height
|
|
else
|
|
FramePanel.Height := WinControl.Height;
|
|
LabelControl.Top := WinControl.Top + Round((WinControl.Height - LabelControl.Height) / 2);
|
|
if EditWidth > 0 then
|
|
begin
|
|
WinControl.Width := EditWidth;
|
|
if FramePanel.Width <= 0 then
|
|
FramePanel.Width := WinControl.Width + WinControl.Left + 1;
|
|
end
|
|
else
|
|
begin
|
|
if FramePanel.Width > 0 then
|
|
if RightSpace > 0 then
|
|
WinControl.Width := FramePanel.Width - (WinControl.Left + 1) - RightSpace
|
|
else
|
|
WinControl.Width := FramePanel.Width - (WinControl.Left + 1)
|
|
else
|
|
FramePanel.Width := WinControl.Width + WinControl.Left + 1;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetEnabled(Value: Boolean);
|
|
begin
|
|
inherited SetEnabled(Value);
|
|
if Assigned(FramePanel) then
|
|
FramePanel.Enabled := Value;
|
|
if Assigned(LabelControl) then
|
|
LabelControl.Enabled := Value;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetVisible(Value: Boolean);
|
|
begin
|
|
inherited SetVisible(Value);
|
|
if Assigned(FramePanel) then
|
|
FramePanel.Visible := Value;
|
|
if Assigned(LabelControl) then
|
|
LabelControl.Visible := Value;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetHeight(Value: Integer);
|
|
begin
|
|
inherited SetHeight(Value);
|
|
if Assigned(FramePanel) then
|
|
FramePanel.Height := Value;
|
|
ArrangeLabelAndWinControlOnPanel;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetWidth(Value: Integer);
|
|
begin
|
|
inherited SetWidth(Value);
|
|
if Assigned(FramePanel) then
|
|
FramePanel.Width := Value;
|
|
ArrangeLabelAndWinControlOnPanel;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetTabOrder(Value: Integer);
|
|
begin
|
|
if Assigned(FramePanel) then
|
|
FramePanel.TabOrder := Value;
|
|
end;
|
|
|
|
procedure TJvBasePanelEditParameter.SetLabelArrangeMode(Value: TJvParameterLabelArrangeMode);
|
|
begin
|
|
FLabelArrangeMode := Value;
|
|
ArrangeLabelAndWinControlOnPanel;
|
|
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;
|
|
RightSpace := TJvBasePanelEditParameter(Source).RightSpace;
|
|
end;
|
|
end;
|
|
|
|
//=== { TJvLabelParameter } ==================================================
|
|
|
|
procedure TJvLabelParameter.CreateWinControlOnParent(ParameterParent: TWinControl);
|
|
begin
|
|
WinControl := 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
|
|
WinControl := DynControlEngine.CreateImageControl(Self, AParameterParent, GetParameterName);
|
|
if Supports(WinControl, IJvDynControlImage, ITmpImage) then
|
|
with ITmpImage do
|
|
begin
|
|
ControlSetPicture(Picture);
|
|
// ControlSetAutoSize(AutoSize);
|
|
ControlSetIncrementalDisplay(IncrementalDisplay);
|
|
ControlSetCenter(Center);
|
|
ControlSetStretch(Stretch);
|
|
ControlSetTransparent(Transparent);
|
|
end;
|
|
end;
|
|
|
|
//=== { TJvArrangeParameter } ================================================
|
|
|
|
constructor TJvArrangeParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
FArrangeSettings := TJvArrangeSettings.Create;
|
|
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.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
|
|
WinControl := DynControlEngine.CreatePanelControl(Self, ParameterParent,
|
|
GetParameterName, Caption, alNone);
|
|
if Height > 0 then
|
|
WinControl.Height := Height;
|
|
if Width > 0 then
|
|
WinControl.Width := Width;
|
|
end;
|
|
|
|
procedure TJvPanelParameter.SetWinControlProperties;
|
|
var
|
|
ITmpPanel: IJvDynControlPanel;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlPanel, ITmpPanel) then
|
|
ITmpPanel.ControlSetBorder(BevelInner, BevelOuter, BevelWidth, BorderStyle, BorderWidth);
|
|
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
|
|
WinControl := 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;
|
|
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 + 18;
|
|
end;
|
|
|
|
//procedure TJvGroupBoxParameter.SetEnabled(Value: Boolean);
|
|
//begin
|
|
// inherited SetEnabled(Value);
|
|
// if Assigned(Wincontrol) then
|
|
// Wincontrol.Enabled := Value;
|
|
//end;
|
|
//
|
|
//procedure TJvGroupBoxParameter.SetVisible(Value: Boolean);
|
|
//begin
|
|
// inherited SetVisible(Value);
|
|
// if Assigned(Wincontrol) then
|
|
// Wincontrol.Visible := Value;
|
|
//end;
|
|
//
|
|
//procedure TJvGroupBoxParameter.SetHeight(Value: Integer);
|
|
//begin
|
|
// if Assigned(GroupBox) then
|
|
// GroupBox.Height := Value;
|
|
//end;
|
|
//
|
|
//procedure TJvGroupBoxParameter.SetWidth(Value: Integer);
|
|
//begin
|
|
// if Assigned(GroupBox) then
|
|
// GroupBox.Width := Value;
|
|
//end;
|
|
//
|
|
//procedure TJvGroupBoxParameter.SetTabOrder(Value: Integer);
|
|
//begin
|
|
// if Assigned(GroupBox) then
|
|
// GroupBox.TabOrder := Value;
|
|
//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
|
|
WinControl := 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
|
|
WinControl := 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
|
|
WinControl := 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
|
|
WinControl := 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
|
|
with ITmpCheckListBox, ItemData[I] do
|
|
begin
|
|
ItemEnabled := ITmpCheckListBox.ControlGetItemEnabled(I);
|
|
State := ITmpCheckListBox.ControlGetState(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
|
|
with ITmpCheckListBox, ItemData[I] do
|
|
begin
|
|
ITmpCheckListBox.ControlSetItemEnabled(I, ItemEnabled);
|
|
ITmpCheckListBox.ControlSetState(I, State);
|
|
ITmpCheckListBox.ControlSetHeader(I, Header);
|
|
end;
|
|
end;
|
|
|
|
procedure TJvCheckListBoxParameter.AddCheckListBoxItem(const AText: string;
|
|
AState: TCheckBoxState = cbChecked; AItemEnabled: Boolean = True;
|
|
AHeader: Boolean = False);
|
|
begin
|
|
ItemList.Add(AText);
|
|
with ItemData[ItemList.Count - 1] do
|
|
begin
|
|
Header := AHeader;
|
|
State := AState;
|
|
ItemEnabled := AItemEnabled;
|
|
end;
|
|
end;
|
|
|
|
function TJvCheckListBoxParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'CheckListBox';
|
|
end;
|
|
|
|
procedure TJvCheckListBoxParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
var
|
|
ITmpItems: IJvDynControlItems;
|
|
begin
|
|
WinControl := 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;
|
|
with TJvCheckListItemDataWrapper(ItemList.Objects[Index]) do
|
|
begin
|
|
State := cbChecked;
|
|
Header := False;
|
|
ItemEnabled := True;
|
|
end;
|
|
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
|
|
WinControl := 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
|
|
WinControl := DynControlEngine.CreateDateTimeControl(Self, AParameterParent, GetParameterName);
|
|
end;
|
|
|
|
procedure TJvDateTimeParameter.SetWinControlProperties;
|
|
var
|
|
DynControlDate: IJvDynControlDate;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlDate, DynControlDate) then
|
|
with DynControlDate do
|
|
begin
|
|
ControlSetFormat(Format);
|
|
ControlSetMinDate(MinDate);
|
|
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
|
|
WinControl := DynControlEngine.CreateDateControl(Self, AParameterParent, GetParameterName);
|
|
end;
|
|
|
|
procedure TJvDateParameter.SetWinControlProperties;
|
|
var
|
|
DynControlDate: IJvDynControlDate;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlDate, DynControlDate) then
|
|
with DynControlDate do
|
|
begin
|
|
ControlSetFormat(Format);
|
|
ControlSetMinDate(MinDate);
|
|
ControlSetMaxDate(MaxDate);
|
|
end;
|
|
end;
|
|
|
|
//=== { TJvEditParameter } ===================================================
|
|
|
|
constructor TJvEditParameter.Create(AParameterList: TJvParameterList);
|
|
begin
|
|
inherited Create(AParameterList);
|
|
FPasswordChar := #0;
|
|
FEditMask := '';
|
|
FLabelWidth := 0;
|
|
FEditWidth := 0;
|
|
FRightSpace := 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;
|
|
LabelWidth := TJvEditParameter(Source).LabelWidth;
|
|
EditWidth := TJvEditParameter(Source).EditWidth;
|
|
RightSpace := TJvEditParameter(Source).RightSpace;
|
|
end;
|
|
end;
|
|
|
|
function TJvEditParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'MaskEdit';
|
|
end;
|
|
|
|
procedure TJvEditParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
var
|
|
DynCtrlEdit: IJvDynControlEdit;
|
|
begin
|
|
WinControl := 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
|
|
WinControl := 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
|
|
WinControl := DynControlEngine.CreateCalculateControl(Self, AParameterParent, GetParameterName)
|
|
else
|
|
if (EditorType = netSpin) and DynControlEngine.IsControlTypeRegistered(jctSpinEdit) then
|
|
WinControl := DynControlEngine.CreateSpinControl(Self, AParameterParent, GetParameterName)
|
|
else
|
|
WinControl := 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
|
|
with ITmpSpin do
|
|
begin
|
|
ControlSetIncrement(Increment);
|
|
ControlSetMinValue(MinValue);
|
|
ControlSetMaxValue(MaxValue);
|
|
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
|
|
WinControl := DynControlEngine.CreateCalculateControl(Self, AParameterParent, GetParameterName)
|
|
else
|
|
if (EditorType = netSpin) and DynControlEngine.IsControlTypeRegistered(jctSpinEdit) then
|
|
WinControl := DynControlEngine.CreateSpinControl(Self, AParameterParent, GetParameterName)
|
|
else
|
|
WinControl := 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
|
|
with ITmpSpin do
|
|
begin
|
|
ControlSetIncrement(Increment);
|
|
ControlSetMinValue(MinValue);
|
|
ControlSetMaxValue(MaxValue);
|
|
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
|
|
WinControl := DynControlEngine.CreateFileNameControl(Self, AParameterParent, GetParameterName);
|
|
end;
|
|
|
|
procedure TJvFileNameParameter.SetWinControlProperties;
|
|
var
|
|
ITmpControlFileName: IJvDynControlFileName;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlFileName, ITmpControlFileName) then
|
|
with ITmpControlFileName do
|
|
begin
|
|
ControlSetDialogKind(DialogKind);
|
|
ControlSetDefaultExt(DefaultExt);
|
|
ControlSetFilter(Filter);
|
|
ControlSetFilterIndex(FilterIndex);
|
|
ControlSetInitialDir(InitialDir);
|
|
ControlSetDialogOptions(DialogOptions);
|
|
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;
|
|
{$IFDEF VCL}
|
|
DialogOptions := TJvDirectoryParameter(Source).DialogOptions;
|
|
{$ENDIF VCL}
|
|
DialogTitle := TJvDirectoryParameter(Source).DialogTitle;
|
|
end;
|
|
end;
|
|
|
|
function TJvDirectoryParameter.GetParameterNameExt: string;
|
|
begin
|
|
Result := 'DirectoryEdit';
|
|
end;
|
|
|
|
procedure TJvDirectoryParameter.CreateWinControl(AParameterParent: TWinControl);
|
|
begin
|
|
WinControl := DynControlEngine.CreateDirectoryControl(Self, AParameterParent, GetParameterName);
|
|
end;
|
|
|
|
procedure TJvDirectoryParameter.SetWinControlProperties;
|
|
var
|
|
ITmpControlDirectory: IJvDynControlDirectory;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlDirectory, ITmpControlDirectory) then
|
|
with ITmpControlDirectory do
|
|
begin
|
|
ControlSetDialogTitle(DialogTitle);
|
|
{$IFDEF VCL}
|
|
ControlSetDialogOptions(DialogOptions);
|
|
{$ENDIF VCL}
|
|
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;
|
|
{$IFDEF VCL}
|
|
if not DirectoryExists(AData) then
|
|
if not (sdAllowCreate in DialogOptions) then
|
|
begin
|
|
DSADialogsMessageDlg(Format(RsErrParameterDirectoryNotExist, [Caption, AData]), mtError, [mbOK], 0);
|
|
Exit;
|
|
end;
|
|
{$ENDIF VCL}
|
|
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
|
|
WinControl := DynControlEngine.CreateMemoControl(Self, AParameterParent, GetParameterName);
|
|
end;
|
|
|
|
procedure TJvMemoParameter.SetWinControlProperties;
|
|
var
|
|
ITmpMemo: IJvDynControlMemo;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlMemo, ITmpMemo) then
|
|
with ITmpMemo do
|
|
begin
|
|
ControlSetWantTabs(WantTabs);
|
|
ControlSetWantReturns(WantReturns);
|
|
ControlSetWordWrap(WordWrap);
|
|
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
|
|
WinControl := DynControlEngine.CreateRichEditControl(Self, AParameterParent, GetParameterName);
|
|
end;
|
|
|
|
procedure TJvRichEditParameter.SetWinControlProperties;
|
|
var
|
|
ITmpMemo: IJvDynControlMemo;
|
|
begin
|
|
inherited SetWinControlProperties;
|
|
if Supports(WinControl, IJvDynControlMemo, ITmpMemo) then
|
|
with ITmpMemo do
|
|
begin
|
|
ControlSetWantTabs(WantTabs);
|
|
ControlSetWantReturns(WantReturns);
|
|
ControlSetWordWrap(WordWrap);
|
|
ControlSetScrollbars(ScrollBars);
|
|
end;
|
|
end;
|
|
|
|
{$IFDEF UNITVERSIONING}
|
|
initialization
|
|
RegisterUnitVersion(HInstance, UnitVersioning);
|
|
|
|
finalization
|
|
UnregisterUnitVersion(HInstance);
|
|
{$ENDIF UNITVERSIONING}
|
|
|
|
end.
|
|
|
|
|