Surcharger la méthode Create du composant TImage
Bonjour,
J'ai parcouru le forum, lu les tutos sur la POO mais je ne parviens pas à mes fins :(
J'ai créé un classe TTable, dérivée de TImage.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| unit Table;
interface
uses Champs,QExtCtrls,Dialogs,SysUtils;
type TabListeChamps = array of TChamps;
type TTable=class(TImage)
private
nom:string;
lesChamps:TabListeChamps;
nbElements:integer;
indiceCourant:integer;
public
procedure setNom(unNom:string);
function getNom:string;
procedure AddField(leChamps:TChamps);
procedure RemoveLastField;
procedure RemoveAField(intitule:string);
procedure RemoveAllFields;
function ListFields:TabListeChamps;
procedure DrawTable;virtual;abstract;
constructor Create;
end;
implementation
constructor TTable.Create;
begin
nbElements:=0;
indiceCourant:=0;
end;
procedure TTable.RemoveAllFields;
begin
nbElements:=0;
SetLength(lesChamps,nbElements);
end;
procedure TTable.RemoveAField(intitule:string);
var
i,j:integer;
trouver:boolean;
begin
i:=0;
trouver:=false;
if (nbElements<>0) then
begin
repeat
//if (i<high(lesChamps)) then
//i:=i+1;
if (lesChamps[i].getIntitule = intitule) then
trouver:=true
else
i:=i+1;
until ((trouver) or (i=high(lesChamps)+1));
if (trouver) then
begin
for j:=i to high(lesChamps)-1 do
lesChamps[i]:=lesChamps[i+1];
nbElements:=nbElements-1;
SetLength(lesChamps,nbElements);
end
else
ShowMessage('L''élément à supprimer n''existe pas');
end
else
ShowMessage('Aucun champs présent pour cette entité');
end;
function TTable.ListFields:TabListeChamps;
begin
result:=lesChamps;
end;
end. |
Ensuite, viens 2 classes enfants à TTable qui TEntite et TRelation.
Voici la déclaration d'une d'entre elles :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| unit Entite;
interface
uses QExtCtrls,Dialogs,SysUtils,Table;
type TEntite=class(TTable)
public
procedure DrawTable;override;
end;
implementation
uses UPrincipale;
procedure TEntite.DrawTable;
begin
ShowMessage('Essai de la méthode');
end;
end. |
Je ne sais pas comment déclarer le create pour :
- dans la classe TTable, je puisse initialiser des valeurs
- dans mes classes dérivée de TTable, pourvoir avoir le create de la classe TTable tout en y ajoutant du code supplémentaire.
J'espère que vous pourrai m'éclairer car entre override, overload, inherited etc ... je commence a m'emmélé les pinceaux :
Si je comprends bien :
- override surcharge une méthode avec des paramètres supplémentaires
- overload permet de redéfinir entièrement une méthode (cela veut-il dire que l'on reprends une méthode et qu'on "la vide" ?)
- inherited permet d'appelant une méthode d'un parent.
Merci de votre aide
Cordialement Ero-Sennin