dal menù File->Nuovo crei una nuova unit
ti metti sotto interface e scrivi:
type
TLinea = class(TObject)
end;
classe vuota che eredita da TObject creata :)
L'oggetto viene creato con un costruttore, cioè un metodo che alloca le risorse, inizializza i dati , ......
Tutte le classi hanno un costruttore automatico derivato da TObject, molte hanno un costruttore porprietario (in overload o override rispetto a TObject).
Un classe definita, si dichiara come varibile e la si istanzia:
//Definizione
type
TLinea = class(TObject)
end;
//Dichiarazione
var
Linea: TLinea;
// Creazione istanza deve essere eseguita 1 sola volta tuo codice, normalmente nel FormCreate (ma non obbligatorio ovviamente farlo li)
Linea := TLinea.Create;
//Ora la puoi usare
Quando si crea un "qualcosa" ci dovrebbe essere una buona abitudine di distruggerlo alla fine dell'uso (che potrebbe essere alla fine della procedura, alla fine del programma, o in altre condizioni.
Normalmente un oggetto si "distrugge" con il metodo FREE, attenzione che questo dovrebbe essere fatto se
l'oggetto è già stato creato:
//Controlla che la variabile sia stata istanziata
if Assigned(Linea)
Linea.Free; //Distrugge l'istanza liberando le risorse
I costruttori degli oggetti possono essere anche personalizzati così come i distruttori.
Si fà così ad esempio:
type
TLinea: Class
private
fParent: TComponent;
fLunghezza: cardinal;
public
constructor Create(AOwner: TComponent); overload //Esempio di costruttore
destructor Destroy; override; //Esempio di distruttore
Var
Linea: TLinea
Implementation
constructor TLinea.Create(AOwner: TComponent);
begin
//Chiama il metodo originale per la creazione (deve essere la prima riga)
inherited Create;
//Mantiene in memoria il componente padre
fParent := AOwner;
//Inizializza i dati
fLunghezza := 0;
end;
destructor TLinea.Destroy;
begin
//QUi il codice eventuale
....................
....................
//Chiama la procedura originale (deve essere l'ultima riga)
inherited;
end;
//Uso:
Linea := TLinea.Create(self);
//oppure
Linea := TLinea.Create(nil);
*****EDIT
Anche se si dichiara un metodo di "distruzione", il componente si disistanzia normalmente sempre con il FREE sopra citato (il metodo FREE poi chiamerà automaticamente il distruttore).