Dériver une form ? [Résolu]

Messages postés
459
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
8 avril 2009
- - Dernière réponse : DeltaFX
Messages postés
459
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
8 avril 2009
- 20 avril 2006 à 22:44
En fait j'ai besoin d'ajouter à la class Tform une procedure, donc de créer une classe du genre TExtendForm qui reprendraient tout d'une TForm normale mais qui disposerait d'une procedure/fonction publique supplémentaire .
Un petit exemple ? A vot' bon coeur m'sieurs dames :)
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
329
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
10 mars 2012
3
Merci
Hey chteu connai toa tu viendrai pas de ville taneuse ? lol
bon je vois que ta pas trop capich mon post tout fin de compte alors voici un exemple plus explicite et moins contrainiant que l'autre version

1) Ajoute une nouvelle unité (pas une fiche )

voici le code de cette unité
-------------------------------
unit ExtendedForm;

interface
uses
Forms;

type
TExtendedForm = class(TForm)
private
{ Déclarations privées }
public
{ Déclarations publiques }
procedure DoQuelqueChose;virtual; // <=== ne pas oublié le virtual c'est très important !!!
end;


implementation

{ TExtendedForm }

procedure TExtendedForm.DoQuelqueChose;
begin
// rien
end;

end.
-------------------------------

maintenant tu as une classe de Base pour toutes tes forms capich ??

maintenant dans Form1 tu rajoute ExtendedForm dans la clause Uses

maintenant dans TForm1 tu change la déclararion

TForm1 = class(TExtendedForm)

ensuite dans la partie "Public"

public
{ Déclarations publiques }
procedure DoQuelqueChose;override; <=== surcharge obligatoire !!!

juste ici c'est enfin clair non ?

maintenant tu repère cette opération pour toutes les forms de ton Application


ensuite tu fait un test par exemple dans Form1 dans un bouton

TExtendedForm(FindGlobalComponent('Form2')).DoQuelqueChose;

ya pas plus simple ;)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_shining
Messages postés
329
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
10 mars 2012
0
Merci
Hey chteu connai toa tu viendrai pas de ville taneuse ? lol
bon je vois que ta pas trop capich mon post tout fin de compte alors voici un exemple plus explicite et moins contrainiant que l'autre version

1) Ajoute une nouvelle unité (pas une fiche )

voici le code de cette unité
-------------------------------
unit ExtendedForm;

interface
uses
Forms;

type
TExtendedForm = class(TForm)
private
{ Déclarations privées }
public
{ Déclarations publiques }
procedure DoQuelqueChose;virtual; // <=== ne pas oublié le virtual c'est très important !!!
end;


implementation

{ TExtendedForm }

procedure TExtendedForm.DoQuelqueChose;
begin
// rien
end;

end.
-------------------------------

maintenant tu as une classe de Base pour toutes tes forms capich ??

maintenant dans Form1 tu rajoute ExtendedForm dans la clause Uses

maintenant dans TForm1 tu change la déclararion

TForm1 = class(TExtendedForm)

ensuite dans la partie "Public"

public
{ Déclarations publiques }
procedure DoQuelqueChose;override; <=== surcharge obligatoire !!!

juste ici c'est enfin clair non ?

maintenant tu repère cette opération pour toutes les forms de ton Application


ensuite tu fait un test par exemple dans Form1 dans un bouton

TExtendedForm(FindGlobalComponent('Form2')).DoQuelqueChose;

ya pas plus simple ;)
Commenter la réponse de cs_shining
Messages postés
329
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
10 mars 2012
0
Merci
oula pardon pour le doublon c'est la maladie d'alzeimer ;) non c'est ce $$^$^:$;:^$^ de navigateur ou le réseau de code source qui merdouille de temps en temps !!!
Commenter la réponse de cs_shining
Messages postés
329
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
10 mars 2012
0
Merci
mieux encore tu peux ajouter abstract après virtual; !!!
Commenter la réponse de cs_shining
Messages postés
1078
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
0
Merci
Ou alors, tu n'ajoutes niu le virtual ni le abstract mais tu mets du code concret dans ta procédure.
Comme ça, tu n'a pas besoin de la redefinir.

Mais, là, ça dépend de tes besoins.
Si tu t'y touches en POO, tu devrais vite trouver comment faire.

Si tu ne te plantes pas ......
tu ne pousseras jamais
Commenter la réponse de florenth
Messages postés
459
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
8 avril 2009
1
0
Merci
T'es fou,chuis pas de villetaneuse :D Capich ce coup-ci, là t'as dit Unit et pas fiche (et toc !) Blague a part j'ai créer ce topic pour pas poser 2 questions dans l'autre.

Ca marche, j'ai, suite au post de Delphiprog surl'autre topic, étudié la cas des design pattern, Et je m'en suis inspiré.

Donc au final, l'unit qui contieint mes variables globales a 2 fonctions suppl.

//-----------------------------------------------------------
procedure SpreadMsg(Msg:String;Flag:integer);
var i: integer;
begin
for i:= 0 to NbOfForms do
if FormNames[i]<>'' then
with FindGlobalComponent(FormNames[i]) as TExtendedForm
do AnalyseThis(Msg,Flag);
end;


//-----------------------------------------------------------
procedure RegisterMe(aName: string;aIndex:integer);
begin
FormNames[aIndex]:=aName;
end;

chaque instance de TextendedForm fait ca au OnCreate:

with Form_MP3 do
begin
Tag:=2;
RegisterMe(Name,Tag);
end;

Ca marche impec, c'est pas trop trop orienté POO, et rien qu'avec ca j'ai une appli plus fluide, plutot que d'avoir N variables globales, et M timers pour les surveiller. Et c'est important la fluidité, mine de rien, je me fais un FrontEnd pour mon CarPc (camera de recul - lecture mp3 - Navigation Gps - OBDII - et gestion telephone bloutouss pour plus tard ), avec une config de base minimale. (ex: la cam de recul croppé + lecture Mp3 via Bass.dll + hardware monitoring+ aplli gps embedded) 20% de ressources sur un Tbird 1ghz)
Commenter la réponse de DeltaFX