У меня есть следующий компонент, который содержит свойство, полученное из пользовательского класса:значение свойства во время разработки, не отображается во время выполнения
unit MyComponentTest3;
interface
uses Windows, ExtCtrls,Classes,Controls;
type
TMyClass3 = class
myString: string;
myNumber: double;
end;
TMyComponentTest3 = class(TCustomPanel)
private
FMyProperty: TMyClass3;
procedure SetMyProperty(Value: TMyClass3);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure SetMyPropertyPublic(AmyString: string; AmyNumber: double);
published
property MyProperty: TMyClass3 read FMyProperty write SetMyProperty;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('MyComponents', [TMyComponentTest3]);
end;
{ TMyComponentTest3 }
constructor TMyComponentTest3.Create(AOwner: TComponent);
begin
inherited;
FMyProperty:= TMyClass3.Create;
end;
destructor TMyComponentTest3.Destroy;
begin
FMyProperty.Free;
inherited;
end;
procedure TMyComponentTest3.SetMyProperty(Value: TMyClass3);
begin
with FMyProperty do
begin
myString:= Value.myString;
myNumber:= Value.myNumber;
end;
end;
procedure TMyComponentTest3.SetMyPropertyPublic(AmyString: string;
AmyNumber: double);
var
auxMyProperty: TMyClass3;
begin
auxMyProperty:= TMyClass3.Create;
with auxMyProperty do
begin
myString:= AmyString;
myNumber:= AmyNumber;
end;
SetMyProperty(auxMyProperty);
auxMyProperty.Free;
end;
end.
Он отлично работает, но когда я установил значение свойства во время разработки и запуска программы исчезают. Та же проблема я получаю, если я устанавливаю значения компонента, сохраняю все, и когда я загружаю значения, их больше нет ...
Я думаю, проблема в том, что я создаю экземпляр пользовательского класса для всех но я не уверен, и я не знаю, как обойти это. Кто-нибудь имеет представление о том, что я могу сделать?
какой-либо причине не делать 'TMyClass3' запись вместо класса? –
Это всего лишь простой пример, в моем реальном коде это сложнее ... – Felipe
@J ... Независимо от того, насколько он сложный, ключевым фактором является то, хотите ли вы семантику значения или ссылочного присвоения. –