PDA

Visualizza la versione completa : [DELPHI] Passare parametri aggiuntivi ad un costruttore ereditato


denis76
16-02-2007, 16:03
Data una classe che estende TPanel con il seguente costruttore



constructor Create(AOwner: TComponent); override;


implementato in questo modo:



constructor TBachecaTerminale.Create(AOwner: TComponent);
var
I: Integer;
begin
inherited;
....


come posso fare per passare un altro valore oltre ad AOwner: TComponent??

Grazie mille, Denis.

mondobimbi
17-02-2007, 09:17
Originariamente inviato da denis76
Data una classe che estende TPanel con il seguente costruttore



constructor Create(AOwner: TComponent); override;


implementato in questo modo:



constructor TBachecaTerminale.Create(AOwner: TComponent);
var
I: Integer;
begin
inherited;
....


come posso fare per passare un altro valore oltre ad AOwner: TComponent??

Grazie mille, Denis.

constructor Create(AOwner: TComponent;altro_parametro : tipo_parametro); override;

...

constructor TBachecaTerminale.Create(AOwner: TComponent;altro_parametro : tipo_parametro);
var
I: Integer;
begin
inherited Create(AOwner);

ciao
sergio

alka
17-02-2007, 11:47
Originariamente inviato da denis76
Data una classe che estende TPanel con il seguente costruttore
[...]
come posso fare per passare un altro valore oltre ad AOwner: TComponent??

Semplicemente, non puoi, a meno di non creare un altro costruttore con parametri differenti in overload o con un nome diverso.

Se ridefinisci il costruttore ereditato tramite override, esso deve avere ovviamente gli stessi parametri in quanto dev'essere accessibile anche utilizzando una variabile che appartiene alla classe base che lo introduce (TComponent).

In ogni caso, non potresti ottenere la chiamata al costruttore "appoggiando" il controllo sul Form in quanto Delphi invocherebbe il costruttore di TComponent e non il tuo "costruttore alternativo"; il tuo costruttore viene chiamato ovviamente se, sfruttando il concetto di polimorfismo della OOP, ridefinisci il costruttore ereditato dalla classe base tramite override, ma in tal caso - come detto all'inizio - non puoi variarne il prototipo.

A cosa ti servirebbe? Qual lo scopo che desideri ottenere? :master:

Ciao! :ciauz:

Loading