Componentes.Terceros.DevExp.../internal/x.48/1/ExpressEditors Library 5/Sources/cxExtEditReg.pas
2010-01-18 18:37:26 +00:00

487 lines
18 KiB
ObjectPascal

{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressEditors }
{ }
{ Copyright (c) 1998-2009 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSEDITORS AND ALL }
{ ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{********************************************************************}
unit cxExtEditReg;
{$I cxVer.inc}
interface
uses
Classes;
procedure Register;
implementation
uses
DesignIntf, DesignEditors, Controls, Forms, Graphics, ImgList, StdCtrls,
SysUtils, TypInfo, cxCheckBox, cxCheckComboBox, cxCheckGroup,
cxCheckGroupStatesEditor, cxCheckListBox, cxClasses, cxColorComboBox,
cxContainer, cxDBCheckComboBox, cxDBCheckGroup, cxDBCheckListBox,
cxDBColorComboBox, cxDBFontNameComboBox, cxDBLabel, cxDBProgressBar,
cxDBRichEdit, cxDBTrackBar, cxEdit, cxEditPropEditors, cxEditRepositoryEditor,
cxExtEditConsts, cxExtEditRepositoryItems, cxFontNameComboBox, cxHeader, cxHint,
cxHintEditor, cxLabel, cxListView, cxLookAndFeels, cxMCListBox, cxProgressBar,
cxPropEditors, cxRichEdit, cxScrollBar, cxSpinButton, cxSplitter, cxSplitterEditor,
cxTrackBar, cxTreeView;
const
cxEditorsRestoreStyleCaption = 'Restore style';
cxEditorsRestoreLookAndFeelCaption = 'Restore LookAndFeel';
cxEditComponentEditorVerbS: array[0..0] of string = (cxEditorsRestoreStyleCaption);
cxEditComponentEditorVerbL: array[0..0] of string = (cxEditorsRestoreLookAndFeelCaption);
cxSplitterStyleControllerVerb = 'Splitter Editor...';
cxHintStyleControllerVerb = 'Hints Editor...';
type
TcxCustomEditAccess = class(TcxCustomEdit);
type
{ TcxHotZoneStyleProperty }
TcxHotZoneStyleProperty = class(TClassProperty)
protected
function HasSubProperties: Boolean;
public
function GetAttributes: TPropertyAttributes; override;
function GetValue: string; override;
procedure GetValues(Proc: TGetStrProc); override;
procedure SetValue(const Value: string); override;
end;
{ TcxCustomHeaderComponentEditor }
TcxCustomHeaderComponentEditor = class(TcxEditorsLibraryComponentWithoutStylesEditor)
protected
function GetLookAndFeel: TcxLookAndFeel; override;
public
procedure Edit; override;
end;
{ TcxSplitterComponentEditor }
TcxSplitterComponentEditor = class(TcxEditorsLibraryComponentEditorEx)
protected
function GetEditItemCaption: string; override;
procedure ExecuteEditAction; override;
end;
{ TcxHintStyleComponentEditor }
TcxHintStyleComponentEditor = class(TcxEditorsLibraryComponentEditorEx)
protected
function GetEditItemCaption: string; override;
procedure ExecuteEditAction; override;
end;
{ TcxHotZoneStyleEventsProperty }
TcxHotZoneStyleEventsProperty = class(TcxNestedEventProperty)
protected
function GetInstance: TPersistent; override;
end;
{ TcxHeaderSectionImageIndexProperty }
TcxHeaderSectionImageIndexProperty = class(TImageIndexProperty)
public
function GetImages: TCustomImageList; override;
end;
{ TcxChecksControlStatesItemsProperty }
TcxChecksControlStatesItemsProperty = class(TPropertyEditor)
protected
procedure InitializeDlg(ADialog: TcxCheckGroupStatesEditorDlg); virtual;
procedure SynchronizeControlCheckStates(ADialog: TcxCheckGroupStatesEditorDlg); virtual;
public
procedure Edit; override;
function GetAttributes: TPropertyAttributes; override;
function GetName: string; override;
function GetValue: string; override;
end;
{ TcxCheckGroupStatesItemsProperty }
TcxCheckGroupStatesItemsProperty = class(TcxChecksControlStatesItemsProperty)
protected
procedure InitializeDlg(ADialog: TcxCheckGroupStatesEditorDlg); override;
procedure SynchronizeControlCheckStates(ADialog: TcxCheckGroupStatesEditorDlg); override;
end;
{ TcxCheckComboBoxStatesItemsProperty }
TcxCheckComboBoxStatesItemsProperty = class(TcxChecksControlStatesItemsProperty)
protected
procedure InitializeDlg(ADialog: TcxCheckGroupStatesEditorDlg); override;
procedure SynchronizeControlCheckStates(ADialog: TcxCheckGroupStatesEditorDlg); override;
end;
{ TcxCheckGroupComponentEditor }
TcxCheckGroupComponentEditor = class(TcxEditComponentEditor)
public
procedure Edit; override;
end;
TcxCommonControlsSelectionEditor = class(TSelectionEditor)
public
procedure RequiresUnits(Proc: TGetStrProc); override;
end;
{ TcxCheckListBoxItemImageIndexProperty }
TcxCheckListBoxItemImageIndexProperty = class(TImageIndexProperty)
public
function GetImages: TCustomImageList; override;
end;
{ TcxHotZoneStyleProperty }
function TcxHotZoneStyleProperty.HasSubProperties: Boolean;
var
I: Integer;
begin
for I := 0 to PropCount - 1 do
begin
Result := TcxCustomSplitter(GetComponent(I)).HotZone <> nil;
if not Result then Exit;
end;
Result := True;
end;
function TcxHotZoneStyleProperty.GetAttributes: TPropertyAttributes;
begin
Result := inherited GetAttributes;
if not HasSubProperties then
Exclude(Result, paSubProperties);
Result := Result - [paReadOnly] +
[paValueList, paSortList, paRevertable, paVolatileSubProperties];
end;
function TcxHotZoneStyleProperty.GetValue: string;
begin
if HasSubProperties then
Result := GetRegisteredHotZoneStyles.GetDescriptionByClass(
TcxCustomSplitter(GetComponent(0)).HotZone.ClassType)
else
Result := '';
end;
procedure TcxHotZoneStyleProperty.GetValues(Proc: TGetStrProc);
var
I: Integer;
begin
for I := 0 to GetRegisteredHotZoneStyles.Count - 1 do
Proc(GetRegisteredHotZoneStyles.Descriptions[I]);
end;
procedure TcxHotZoneStyleProperty.SetValue(const Value: string);
var
FHotZoneStyleClass: TcxHotZoneStyleClass;
I: Integer;
begin
FHotZoneStyleClass := TcxHotZoneStyleClass(GetRegisteredHotZoneStyles.FindByClassName(Value));
if FHotZoneStyleClass = nil then
FHotZoneStyleClass := TcxHotZoneStyleClass(GetRegisteredHotZoneStyles.FindByDescription(Value));
for I := 0 to PropCount - 1 do
TcxCustomSplitter(GetComponent(I)).HotZoneStyleClass := FHotZoneStyleClass;
Modified;
end;
{ TcxHotZoneStyleEventsProperty }
function TcxHotZoneStyleEventsProperty.GetInstance: TPersistent;
begin
Result := TcxCustomSplitter(GetComponent(0)).HotZone;
end;
{ TcxHeaderSectionImageIndexProperty }
function TcxHeaderSectionImageIndexProperty.GetImages: TCustomImageList;
begin
Result := nil;
if GetComponent(0) is TcxHeaderSection then
Result := TCustomImageList(TcxHeaderSection(GetComponent(0)).HeaderControl.Images);
end;
{ TcxCustomHeaderComponentEditor }
procedure TcxCustomHeaderComponentEditor.Edit;
begin
end;
function TcxCustomHeaderComponentEditor.GetLookAndFeel: TcxLookAndFeel;
begin
Result := TcxCustomHeader(Component).LookAndFeel;
end;
{ TcxSplitterComponentEditor }
function TcxSplitterComponentEditor.GetEditItemCaption: string;
begin
Result := cxSplitterStyleControllerVerb;
end;
procedure TcxSplitterComponentEditor.ExecuteEditAction;
begin
ShowSplitterEditor(Component as TcxSplitter);
end;
{ TcxHintStyleComponentEditor }
function TcxHintStyleComponentEditor.GetEditItemCaption: string;
begin
Result := cxHintStyleControllerVerb;
end;
procedure TcxHintStyleComponentEditor.ExecuteEditAction;
begin
ShowHintStyleEditor(Component as TcxHintStyleController);
end;
{ TcxChecksControlStatesItemsProperty }
procedure TcxChecksControlStatesItemsProperty.Edit;
var
ADialog: TcxCheckGroupStatesEditorDlg;
begin
ADialog := TcxCheckGroupStatesEditorDlg.Create(Application);
try
InitializeDlg(ADialog);
if ADialog.ShowModal = mrOK then
begin
SynchronizeControlCheckStates(ADialog);
Modified;
end;
finally
ADialog.Free;
end;
end;
function TcxChecksControlStatesItemsProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog, paReadOnly];
end;
function TcxChecksControlStatesItemsProperty.GetName: string;
begin
Result := 'States';
end;
function TcxChecksControlStatesItemsProperty.GetValue: string;
begin
Result := '';
end;
procedure TcxChecksControlStatesItemsProperty.InitializeDlg(ADialog: TcxCheckGroupStatesEditorDlg);
begin
end;
procedure TcxChecksControlStatesItemsProperty.SynchronizeControlCheckStates(ADialog: TcxCheckGroupStatesEditorDlg);
begin
end;
{ TcxCheckGroupStatesItemsProperty }
procedure TcxCheckGroupStatesItemsProperty.InitializeDlg(
ADialog: TcxCheckGroupStatesEditorDlg);
var
ACheckGroup: TcxCustomCheckGroup;
AItem: TcxCheckListBoxItem;
I: Integer;
begin
ADialog.Caption := cxGetResourceString(@
cxSCheckGroupStatesItemsPropertyDlgCaption);
ADialog.clbStates.Items.Clear;
ACheckGroup := TcxCustomCheckGroup(GetComponent(0));
ADialog.clbStates.AllowGrayed := ACheckGroup.ActiveProperties.AllowGrayed and
(ACheckGroup.ActiveProperties.EditValueFormat <> cvfInteger);
for I := 0 to ACheckGroup.ActiveProperties.Items.Count - 1 do
begin
AItem := TcxCheckListBoxItem(ADialog.clbStates.Items.Add);
AItem.Text := ACheckGroup.ActiveProperties.Items[I].Caption;
AItem.State := ACheckGroup.States[I];
end;
end;
procedure TcxCheckGroupStatesItemsProperty.SynchronizeControlCheckStates(ADialog: TcxCheckGroupStatesEditorDlg);
var
I: Integer;
begin
with TcxCustomCheckGroup(GetComponent(0)) do
for I := 0 to ADialog.clbStates.Items.Count - 1 do
States[I] := ADialog.clbStates.Items[I].State;
end;
{ TcxCheckComboBoxStatesItemsProperty }
procedure TcxCheckComboBoxStatesItemsProperty.InitializeDlg(ADialog: TcxCheckGroupStatesEditorDlg);
var
ACheckComboBox: TcxCustomCheckComboBox;
AItem: TcxCheckListBoxItem;
I: Integer;
begin
ADialog.Caption := cxGetResourceString(@
cxSCheckComboBoxStatesItemsPropertyDlgCaption);
ADialog.clbStates.Items.Clear;
ACheckComboBox := TcxCustomCheckComboBox(GetComponent(0));
ADialog.clbStates.AllowGrayed := False;
for I := 0 to ACheckComboBox.ActiveProperties.Items.Count - 1 do
begin
AItem := TcxCheckListBoxItem(ADialog.clbStates.Items.Add);
AItem.Text := ACheckComboBox.ActiveProperties.Items[I].Description;
AItem.State := ACheckComboBox.States[I];
end;
end;
procedure TcxCheckComboBoxStatesItemsProperty.SynchronizeControlCheckStates(ADialog: TcxCheckGroupStatesEditorDlg);
var
I: Integer;
begin
with TcxCustomCheckComboBox(GetComponent(0)) do
for I := 0 to ADialog.clbStates.Items.Count - 1 do
States[I] := ADialog.clbStates.Items[I].State;
end;
{ TcxCheckGroupComponentEditor }
procedure TcxCheckGroupComponentEditor.Edit;
const
AMethodParams: array[0..0] of TMethodParam =
((Flags: [pfAddress]; Name: 'Sender'; TypeName: 'TObject'));
begin
ShowEventMethod(Designer, TcxCustomEditAccess(Component).Properties,
'OnChange', Component.Name + 'PropertiesChange', AMethodParams);
end;
procedure TcxCommonControlsSelectionEditor.RequiresUnits(Proc: TGetStrProc);
begin
Proc('ComCtrls');
end;
{ TcxCheckListBoxItemImageIndexProperty }
function TcxCheckListBoxItemImageIndexProperty.GetImages: TCustomImageList;
begin
Result := TcxCustomInnerCheckListBox(GetPersistentOwner(
TcxCheckListBoxItem(GetComponent(0)).Collection)).Container.Images;
end;
procedure RegisterEditRepositoryItems;
begin
RegisterEditRepositoryItem(TcxEditRepositoryLabel, scxSEditRepositoryLabelItem);
RegisterEditRepositoryItem(TcxEditRepositoryFontNameComboBox, scxSEditRepositoryFontNameComboBoxItem);
RegisterEditRepositoryItem(TcxEditRepositoryColorComboBox, scxSEditRepositoryColorComboBoxItem);
RegisterEditRepositoryItem(TcxEditRepositoryProgressBar, scxSEditRepositoryProgressBarItem);
RegisterEditRepositoryItem(TcxEditRepositoryTrackBar, scxSEditRepositoryTrackBarItem);
RegisterEditRepositoryItem(TcxEditRepositoryCheckComboBox, scxSEditRepositoryCheckComboBox);
RegisterEditRepositoryItem(TcxEditRepositoryCheckGroupItem, scxSEditRepositoryCheckGroupItem);
RegisterEditRepositoryItem(TcxEditRepositoryRichItem, scxSEditRepositoryRichEditItem);
end;
procedure UnregisterEditRepositoryItems;
begin
UnregisterEditRepositoryItem(TcxEditRepositoryLabel);
UnregisterEditRepositoryItem(TcxEditRepositoryFontNameComboBox);
UnregisterEditRepositoryItem(TcxEditRepositoryColorComboBox);
UnregisterEditRepositoryItem(TcxEditRepositoryProgressBar);
UnregisterEditRepositoryItem(TcxEditRepositoryTrackBar);
UnregisterEditRepositoryItem(TcxEditRepositoryCheckComboBox);
UnregisterEditRepositoryItem(TcxEditRepositoryCheckGroupItem);
UnregisterEditRepositoryItem(TcxEditRepositoryRichItem);
end;
procedure Register;
begin
{$IFDEF DELPHI9}
ForceDemandLoadState(dlDisable);
{$ENDIF}
RegisterComponents('Express Editors 6', [TcxLabel, TcxProgressBar, TcxTrackBar,
TcxCheckListBox, TcxColorComboBox, TcxFontNameComboBox, TcxCheckComboBox,
TcxCheckGroup, TcxRichEdit]);
RegisterComponents('Express DBEditors 6', [TcxDBLabel, TcxDBProgressBar, TcxDBTrackBar,
TcxDBCheckListBox, TcxDBColorComboBox, TcxDBFontNameComboBox, TcxDBCheckComboBox,
TcxDBCheckGroup, TcxDBRichEdit]);
RegisterComponents('Express Utilities', [TcxHintStyleController, TcxSpinButton,
TcxMCListBox, TcxListView, TcxTreeView, TcxHeader, TcxSplitter]);
RegisterPropertyEditor(TypeInfo(string), TcxCustomSplitter, 'HotZoneClassName', nil);
RegisterPropertyEditor(TypeInfo(Boolean), TcxCustomSplitter, 'ResizeIgnoreSnap', nil);
RegisterPropertyEditor(TypeInfo(TcxHotZoneStyle), TcxCustomSplitter, 'HotZone', TcxHotZoneStyleProperty);
RegisterPropertyEditor(TypeInfo(TNotifyEvent), TcxCustomSplitter, 'HotZoneEvents', TcxHotZoneStyleEventsProperty);
RegisterPropertyEditor(TypeInfo(TcxEditValue), TcxCustomCheckGroup, 'EditValue', nil);
RegisterPropertyEditor(TypeInfo(Boolean), TcxCustomCheckGroup, 'StatesItems', TcxCheckGroupStatesItemsProperty);
RegisterPropertyEditor(TypeInfo(Boolean), TcxCustomCheckComboBox, 'StatesItems', TcxCheckComboBoxStatesItemsProperty);
RegisterPropertyEditor(TypeInfo(TcxEditValue), TcxCustomCheckListBox, 'EditValue', nil);
RegisterPropertyEditor(TypeInfo(TMeasureItemEvent), TcxCustomCheckListBox, 'OnMeasureItem', nil);
RegisterPropertyEditor(TypeInfo(Boolean), TcxLabelProperties, 'ShowEndEllipsis', nil);
RegisterPropertyEditor(TypeInfo(TcxEditValue), TcxCustomCheckComboBox, 'EditValue', nil);
RegisterPropertyEditor(TypeInfo(Variant), TcxCustomCheckComboBox, 'Value', nil);
RegisterPropertyEditor(TypeInfo(Boolean), TcxCustomSpinButton, 'AutoSize', nil);
RegisterPropertyEditor(TypeInfo(TTabOrder), TcxCustomLabel, 'TabOrder', nil);
RegisterPropertyEditor(TypeInfo(Boolean), TcxCustomLabel, 'TabStop', nil);
RegisterPropertyEditor(TypeInfo(Boolean), TcxCustomCheckComboBoxProperties,
'AllowGrayed', nil);
RegisterPropertyEditor(TypeInfo(TcxProgressBarPropertiesValues), TcxCustomProgressBarProperties, 'AssignedValues', nil);
RegisterPropertyEditor(TypeInfo(Integer), TcxCustomListView, 'ItemIndex', nil);
RegisterSelectionEditor(TcxCustomListView, TcxCommonControlsSelectionEditor);
RegisterSelectionEditor(TcxCustomTreeView, TcxCommonControlsSelectionEditor);
RegisterPropertyEditor(TypeInfo(TImageIndex), TcxCheckListBoxItem, 'ImageIndex', TcxCheckListBoxItemImageIndexProperty);
RegisterPropertyEditor(TypeInfo(TImageIndex), TcxHeaderSection, 'ImageIndex', TcxHeaderSectionImageIndexProperty);
RegisterComponentEditor(TcxCheckListBox, TcxContainerComponentEditor);
RegisterComponentEditor(TcxCustomCheckGroup, TcxCheckGroupComponentEditor);
RegisterComponentEditor(TcxCustomHeader, TcxCustomHeaderComponentEditor);
RegisterComponentEditor(TcxDBCheckListBox, TcxContainerComponentEditor);
RegisterComponentEditor(TcxHintStyleController, TcxHintStyleComponentEditor);
RegisterComponentEditor(TcxListView, TcxContainerComponentEditor);
RegisterComponentEditor(TcxMCListBox, TcxContainerComponentEditor);
RegisterComponentEditor(TcxSplitter, TcxSplitterComponentEditor);
RegisterComponentEditor(TcxTreeView, TcxContainerComponentEditor);
end;
initialization
RegisterEditRepositoryItems;
finalization
UnregisterEditRepositoryItems;
end.