Конференция "Компоненты" » Не сохраняются параметры объекта в компоненте [WinXP]
 
  • Still Swamp (03.06.07 18:23) [0]
    Есть некий MyPersistent:TPersistent
    Я включаю его в MyComponent:TComponent;

    MyComponent = class(TComponent)
    private
     FMyPersistent:TMyPersistent;
    protected
    public
    published
     property MyPersistent:TMyPersistentread FMyPersistent;
    end;

    constructor MyComponent.Create;
    begin
    inherited Create(AOwner);
    FScene:=TScene.Create;
    end;

    Беда заключается в том что когда я прописываю параметры в обжектинспекторе для MyPersistent они сохраняются в дезайнтайме, однако при запуске рантаймя все параметры умолчальные. Что это может быть?
  • Юрий Зотов © (03.06.07 19:07) [1]
    Для начала приведите РЕАЛЬНЫЙ код. Потому что по тому коду, который Вы привели, ничего сказать нельзя. Он даже не скомпилируется.
  • Still Swamp (03.06.07 21:49) [2]
    Ок. Вот код:


    unit SceneControl;

    interface

    uses
    ...

    type
    TSceneControl = class(TComponent)
    private
     FControl:TWinControl;
     FCamera:TCamera;
     FScene:TScene;
     FTextureList:TTextureList;
     FControlPointList:TControlPointList;
     procedure SetControl(AControl:TWinControl);
     procedure SceneOnMessage(Sender:TObject; Message:TMessage);
    public
     constructor Create(AOwner:TComponent); override;
     destructor Destroy; override;
     property ControlPointList:TControlPointList read FControlPointList write FControlPointList;
    published
     property Control:TWinControl read FControl write SetControl;
     property TextureList:TTextureList read FTextureList;
     property Camera:TCamera read FCamera;
     property Scene:TScene read FScene;
    end;

    procedure Register;

    implementation

    procedure Register;
    begin
    RegisterComponents('Swamp', [TSceneControl]);
    end;

    constructor TSceneControl.Create;
    begin
    inherited Create(AOwner);
    FControl:=nil;
    FScene:=TScene.Create;
    FTextureList:=TTextureList.Create;
    FCamera:=TCamera.Create;
    FControlPointList:=TControlPointList.Create;
    end;

    destructor TSceneControl.Destroy;
    begin
    if FControlPointList<>nil then FControlPointList.Free;
    if FCamera<>nil then FCamera.Free;
    if FTextureList<>nil then FTextureList.Free;
    if FScene<>nil then FScene.Free;
    inherited Destroy;
    end;

    procedure TSceneControl.SetControl;
    begin
    ....
    end;

    procedure TSceneControl.SceneOnMessage;
    begin
    .....
    end;

    end.


  • Still Swamp (03.06.07 22:48) [3]
    Пардон. Вопрос снят.
    stored надо было использовать.
  • DimaBr © (04.06.07 11:42) [4]
    Нужно не stored, а write метод.
  • Still Swamp (04.06.07 11:55) [5]
    ну эээ... не знаю, но проблема исчезла. :)
  • DimaBr © (04.06.07 12:13) [6]
    Для того чтобы система записывала свойства в ресурс нужно иметь Write метод это свойства, после этого, при наличии диррективы Stored или Default проверяется Stored = true или DefaultValue = Value и производится ( не производится) запись в DFM
 
Конференция "Компоненты" » Не сохраняются параметры объекта в компоненте [WinXP]
Есть новые Нет новых   [134427   +38][b:0][p:0.001]