组件编辑器不会立即提示保存新的 属性 值
Component editor doesn't immediately prompt for saving new property values
我有一个带有组件编辑器的自定义控件(可通过两个不同的上下文菜单项访问两个不同的屏幕)。在这两种情况下,当我更改正在编辑的组件的属性时,IDE 不确认已进行任何更改,因此 Delphi [=31] 中的 "Save All" 按钮=] 保持不活动状态(假设它在更改之前处于不活动状态)。
虽然 属性 更改显然已应用到设计时控件,但如果我立即 运行 项目,组件编辑器中所做的更改尚未应用到 运行时间。我不得不在表单设计器/对象检查器中进行细微调整以触发 "Save All" 按钮启用,这样我才能真正保存更改。
以下是我执行上下文菜单选择的方式:
TMyControlEditor
源自 TDefaultEditor
procedure TMyControlEditor.ExecuteVerb(Index: Integer);
begin
case Index of
0: begin
ExecEditor;
end;
1: ...
end;
end;
procedure TMyControlEditor.ExecEditor;
var
F: TfrmMyControlEditor;
begin
F:= TfrmMyControlEditor.Create(TMyControl(Component));
try
case F.ShowModal of
mrOK: begin
F.SaveTo(TMyControl(Component));
end;
end;
finally
F.Free;
end;
end;
procedure TfrmMyControlEditor.SaveTo(ADst: TMyControl);
begin
ADst.ThisProperty:= chkThisProperty.Checked;
ADst.ThatProperty:= txtThatProperty.Text;
ADst.Width:= seWidth.Value;
ADst.Height:= seHeight.Value;
ADst.Visible:= chkVisible.Checked;
... set other properties ...
end;
这甚至发生在我什至没有重新引入的属性上,例如 Visible
或 Width
。如果我从这个 属性 编辑器中更改任何 属性,它会立即在对象检查器中向我显示该更改。但是,IDE 的其余部分不承认任何更改,因此不给我保存更改的选项。
如何让 IDE 在对我的控件的属性进行更改时确认?
IComponentEditor
接口在DesignIntf.pas的评论有一些建议:
Whenever the component modifies the component is must call Designer.Modified
to inform the designer that the form has been modified.
有一些错别字,但要点很清楚:您的组件编辑器需要调用 Designer.Modified
。
我有一个带有组件编辑器的自定义控件(可通过两个不同的上下文菜单项访问两个不同的屏幕)。在这两种情况下,当我更改正在编辑的组件的属性时,IDE 不确认已进行任何更改,因此 Delphi [=31] 中的 "Save All" 按钮=] 保持不活动状态(假设它在更改之前处于不活动状态)。
虽然 属性 更改显然已应用到设计时控件,但如果我立即 运行 项目,组件编辑器中所做的更改尚未应用到 运行时间。我不得不在表单设计器/对象检查器中进行细微调整以触发 "Save All" 按钮启用,这样我才能真正保存更改。
以下是我执行上下文菜单选择的方式:
TMyControlEditor
源自 TDefaultEditor
procedure TMyControlEditor.ExecuteVerb(Index: Integer);
begin
case Index of
0: begin
ExecEditor;
end;
1: ...
end;
end;
procedure TMyControlEditor.ExecEditor;
var
F: TfrmMyControlEditor;
begin
F:= TfrmMyControlEditor.Create(TMyControl(Component));
try
case F.ShowModal of
mrOK: begin
F.SaveTo(TMyControl(Component));
end;
end;
finally
F.Free;
end;
end;
procedure TfrmMyControlEditor.SaveTo(ADst: TMyControl);
begin
ADst.ThisProperty:= chkThisProperty.Checked;
ADst.ThatProperty:= txtThatProperty.Text;
ADst.Width:= seWidth.Value;
ADst.Height:= seHeight.Value;
ADst.Visible:= chkVisible.Checked;
... set other properties ...
end;
这甚至发生在我什至没有重新引入的属性上,例如 Visible
或 Width
。如果我从这个 属性 编辑器中更改任何 属性,它会立即在对象检查器中向我显示该更改。但是,IDE 的其余部分不承认任何更改,因此不给我保存更改的选项。
如何让 IDE 在对我的控件的属性进行更改时确认?
IComponentEditor
接口在DesignIntf.pas的评论有一些建议:
Whenever the component modifies the component is must call
Designer.Modified
to inform the designer that the form has been modified.
有一些错别字,但要点很清楚:您的组件编辑器需要调用 Designer.Modified
。