Componentes.Terceros.jvcl/official/3.36/run/JvParameterListParameter.pas
2009-02-27 12:23:32 +00:00

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.