📄 jvqparameterlistparameter.pas
字号:
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;
implementation
uses
{$IFDEF UNITVERSIONING}
JclUnitVersioning,
{$ENDIF UNITVERSIONING}
JvQResources;
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 := JvQDSADialogs.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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -