我有一个源自TWinControl
的自己的组件,其中包含更多标准组件(例如TEdit
,TCombobox
)。此子组件未发布,因此其属性不可见。
但其中一些我想让它们可见,但在我的组件下。我成功处理了一些属性,如Text
,Enabled
,ReadOnly
,但现在我想添加来自Items
的TComboBox
。
这意味着,在我编辑自己的Items
属性后,Items
子组件的TCombo
也会发生同样的情况。
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
TSodaEditor = class(TWinControl)
private
FEdit: TEdit;
FCombo: TComboBox;
FAlignment: TAlignment;
FItems: TStrings; //<-------
FText: TCaption;
FOnChange: TNotifyEvent;
FOnEnter: TNotifyEvent;
FOnExit: TNotifyEvent;
FOnClick: TNotifyEvent;
FOnDblClick: TNotifyEvent;
FOnKeyDown: TEvent_OnKeyDown;
FOnKeyUp: TEvent_OnKeyUp;
FOnKeyPress: TEvent_OnKeyPress;
//....
protected
//....
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify;
property ReadOnly: Boolean read FReadOnly write SetReadOnly default False;
property Items: TStrings read FItems write SetItems;
property Text;
property Visible;
property Enabled;
property Align;
property Font;
property ParentFont;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnExit;
property OnEnter;
property OnClick;
property OnDblClick;
property TabOrder;
end;
任何简单的方法或我应该覆盖TStrings
的一些方法,以捕捉Items
下的变化?
更新:通过这个Items
我想通过使用AddObject
处理对象。因此,当我从TCombo
子组件中选择一个项目时,我想获得分配的对象。
您可以简单地从您自己的TComboBox.Items
getter / setter中直接访问Items
。根本不需要FItems
成员。
property Items: TStrings read GetItems write SetItems;
function TSodaEditor.GetItems: TStrings;
begin
Result := FCombo.Items;
end;
procedure TSodaEditor.SetItems(AValue: TStrings);
begin
FCombo.Items.Assign(AValue);
end;