我想创建一个新组件,其行为与TEdit完全相同,但有一些字符替换为输入的文本。 例如,当有人输入' abc'进入新组件时,我希望Text-Property在源代码中读取时返回' aac'
type
TMyEdit = class(TEdit)
public
property Text : TCaption read GetText;
end;
像这样。
是否可以使用此属性的新读取函数覆盖现有属性,而不更改此属性的写入函数?
此致
答案 0 :(得分:1)
如前所述:
最好的方法是使用TMaskEdit
但是如果你真的想要实现这个行为,那么就可以这样做:
type
TMyEdit = class(TEdit)
private
function GetText: TCaption;
procedure SetText(const Value: TCaption);
public
property Text: TCaption read GetText write SetText;
end;
{ TMyEdit }
function TMyEdit.GetText: TCaption;
begin
Result := 'TMyEdit' + inherited Text;
end;
procedure TMyEdit.SetText(const Value: TCaption);
begin
inherited Text := Value;
end;
总之,我创建了GetText
和SetText
settext,只需调用继承的Text属性,而GetText更改结果
答案 1 :(得分:0)
TMyEdit = class(TEdit)
protected
procedure Change; override;
end;
procedure TMyEdit.Change;
begin
Self.Text := StringReplace(Self.Text, 'aaa', 'ccc');
inherited;
end;