Fórum Definir/Mudar ordem de definição das propriedades, como #230213

05/05/2004

0

Olá

Tenho uma classe com as propriedades Prim e Seg
type MyClass = class(TObject)
private
  FSeg: Integer;
  FPrim: Integer;
  procedure SetSeg(Value: integer);
  procedure SetPrim(Value: integer);
public
  constructor Create;
published
  property Seg: Integer read FSeg write SetSeg;
  property Prim: Integer read FPrim write SetPrim;
end;

(...)

constructor Create;
begin
  inherited Create;

end;


(Isso é simplificado, claro)

Quando vou debugar, a partir do meu constructor Create, verifico que:

1- ele passa pelo construtor padrão,
2 - passa primeiro em SetPrim e
3-depois em SetSeg

Problema: preciso do valor de FSeg em para definir FPrim (ou seja, [b:c20841b6e7]FSeg[/b:c20841b6e7] é relevante para [b:c20841b6e7]SetPrim[/b:c20841b6e7])
Mas FSeg não tem o valor definido pelo usuário ainda... ele só vai ter quando sair de SetSeg

Como eu mudo essa ordem, fazendo passar em SetSeg antes de SetPrim??
Tem como alterar a ordem de criação dos métodos, etc. ?

Observem que a resposta não é ´a ordem que eles aparecem no código´, pois tudo de Seg vem antes de Prim. :(

Até+
Obrigado


Paulo_amorim

Paulo_amorim

Responder

Posts

05/05/2004

Fórum Vini

Olá,
você tem que ter em mente que o SetSeg e SetPrim só são chamados quando as propriedades são setadas, assim, você mesmo deve estar setando Prim antes de Seg...
Se isso não estiver acontecendo, poste o código do Create.. :wink:



T+,
Vinicius;


Responder

Gostei + 0

06/05/2004

Beppe

Sim, a ordem relativa das declarações em interface não importam. O que importa é o q vc chama no OnCreate. Se Prim só tem valor válido depois q Seg tb tiver, remova a inicialização de Prim.


Responder

Gostei + 0

06/05/2004

Paulo_amorim

Olá

Como são propriedades, elas não são inicializadas no meu construtor Create...bem como não existe o evento OnCreate (declarado, pelo menos)

meu evento Create somente inicializa umas coisas irrelevantes...mas, aí vai, de qualquer maneira

constructor TCalc.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
     ReadOnly := True;
     Text     := ´0´;
end;


Eu descobri que quem gerencia as propriedades [i:175dab2806]published[/i:175dab2806] é o próprio ObjectInspector (ou os editores de propriedades, algo assim). Quem sabe isso dê um caminho para alguém...
Se souberem de algo, ficarei grato

Obrigado

Até+


Responder

Gostei + 0

10/05/2004

Paulo_amorim

sobe
:(


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar