hysteria74
Messages postés20Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention24 juin 2005
-
7 juin 2005 à 16:54
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 2008
-
8 juin 2005 à 12:05
Bonjour,
J'aurais voulu savoir comment on déclare un constructeur puis un destructeur dans une application car je n'y arrive pas, j'aimerais créer mon objet puis ensuite le détruire.
Merci d'avance.
Mon code est le suivant :
type
TDBExportation = class(TObject)
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
{ ----------------------Variables globales---------------------- }
var
FrmPresentation : TFrmPresentation;
constructor TFrmPresentation.Create(AOwner: TComponent);
begin
inherited;
FrmPresentation := TFrmPresentation.Create(Self);
end;
destructor TFrmPresentation.Destroy;
begin
FrmPresentation.Free;
inherited;
end;
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 7 juin 2005 à 17:19
Salut,
Aïe, aïe, aïe.
Tu nous poste un bout d'une déclaration de classe ( TDBExportation ) et
un bout de l'implémentation de la classe TFrmPresentation (qui est ta
fiche).
Il y a comme un non-sens mais passons.
Pour ton bout de code de la méthode Create, j'ai trois choses à redire:
- Inherited; Cette ligne de code appelle le constructeur hérité de
TFrmPresentation, en l'occurence TForm j'imagine, qui appellera le
constructeur hérité de TForm, TCustomFrom et ainsi de suite jusqu'a
TObject.
Chaque constructeur se charge d'initialiser (et/ou d'allouer) la
mémoire qu'il aura besoin en plus de celle fournie par la classe
ancètre.
Ensuite, chaque destructeur se charge de finaliser de libérer cette memoire précédemment allouée dans les méthodes de la classe.
Tu n'as donc pas besoin de creer ta classe en mettant la ligne FrmPresentation := TFrmPresentation.Create(Self);,
- FrmPresentation := TFrmPresentation.Create(Self); que
fait cette ligne ?? Elle appele le constructeur de TFrmPresentation
pour qu'il crée une instance de cette classe. Dans le cas présent, le
constructeur s'autoappelera indéfinimant.
- Toujours cette ligne de code. Delphi, en tant qu'outil R.A.D. (Rapid
Application Developpment) se charge d'écrire lui-même certains bouts de
code, comme par exemple le comstructeur de chaque Form et son
destructeur. C'est lui aussi qui gère les propriétés que l'on modifie
dans l'inspecteur d'objet. (voir les ficiers .dfm qui contiennent
toutes ces propriétés).
Ce n'est donc pas la peine, à toi, en tant que développeur Delphi, de
t'occuper de la création de tes fiches. Si tu veux intercepter le
constructeur, écris une procédure en réponse à l'evenement OnCreate de
ta fiche et une autre à l'évenement OnDestroy.
Voiula, j'espère avoir été clair sur cette notion de classe qui n'est pas si évidente que cela.
hysteria74
Messages postés20Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention24 juin 2005 8 juin 2005 à 09:04
salut, tu as raison je me suis trompé c'est bien
Type
TFrmPresentation = class(TForm)
Je me suis embrouillé car j'ai plusieurs unitées, a propos de ca d'ailleur, est ce que je peux créer un constructeur et un destructeur pour les autres unitées, d'après ce que tu me dis je ne suis pas obligé pour ma form mais je peux pour les autres unitées qui sont liées avec...
hysteria74
Messages postés20Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention24 juin 2005 8 juin 2005 à 09:39
Pour etre plus précis j'ai une unité qui s'appelle UnitEntites :
unit UnitEntites;
type
{ Création de la classe TDBEntites }
TDBEntites = class(TObject)
public
{ Déclarations publiques }
function Lister(Appli, Table, ClusterRank: Integer) : TClientDataSet;
function ModifierLigne(Appli, Table, ClusterRank, LineRank, InfoColumnRank: Integer; InfoValue: WideString) : Boolean;
function SupprimerLigne(Appli, Table, ClusterRank, LineRank, NbLines: Integer) : Boolean;
end;
Dans ma form TFrmPresentation, est ce que c'est bien de mettre ce bout de code pour créer l'instance de Entites :
procedure TFrmPresentation.FormCreate(Sender: TObject);
begin
// Création de l'instance de Entites
Entites:= TDBEntites.Create;
// Appelle de la fonction OuvertureCatalogue de TFrmPresentation
FrmPresentation.OuvertureCatalogue;
end;
procedure TFrmPresentation.FormDestroy(Sender: TObject);
begin
// Libérer l'espace alloué
Entites.Free;
end;