TComponent, mmm comment recuperer TApplication ? [Résolu]

Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 28 mars 2006 à 03:44 - Dernière réponse :
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 29 mars 2006 à 20:30
C'est pas souvent mais ... parfois.

voila, je suis en train d'elaborer un composant, dans ce composant, il est primordiale que je connaisse la valeur de Application.ExeName.

bien sur, je pourrais laisser cette tache a l'utilisateur, mais, j'ai envie de l'automatiser pour eviter les erreurs.

probleme, c'est que, si je ne me trompe pas, quand on dispose un composant sur une fiche,
la valeur de AOwner est logiquement la fiche ou on le place.

jusque la ... tout vas ... mais ... est-ce que Application est le parent de FormN ?

si oui, un simple (AOwner.GetParentComponent as TApplication).ExeName suffirait'il ?

j'en doute, surtout si l'on crée le composant de maniere dynamique...

bref je patauge ...

j'ai penser a mettre une prop de type TApplication pour que l'utilisateur link l'application au composant ... faut que je test.

si quelqu'un connais la bonne solution propre qui vas bien ... merci d'avance.

<hr size="2" width="100%">
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 28 mars 2006 à 14:44
3
Merci
Salut,
Normalement si tu déclares Froms dans les Uses tu as accès à Application dans ton composant c'est aussi simple que cela.
Enfin moi je procède comme ça :

Function TcrComponentStorage.GetDataFileName: String;
Begin
Result := ExtractFileName(ChangeFileExt(Application.ExeName, OwnerForm.Name +
'.DAT'));
End;

@+
Cirec

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de Cirec
Meilleure réponse
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 28 mars 2006 à 22:09
3
Merci
Ben mince, vla'ti pas que le foxi y's'met à poser des questions !!!

Je n'ai rien de plus à dire que Cirec sauf qu'il faut inclure l'unité Forms et non Froms

Foxi a écrit ceci : "jusque la ... tout vas ... mais ... est-ce que Application est le parent de FormN ?"
Réponse : Non, mais il en est le Owner.

May Delphi be with you !

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 28 mars 2006 à 16:18
0
Merci
holala ...

merci bien, mais de toute façon j'ai reflechis a un truc et cela n'iras pas.

quand on créer un nouveau projet, le nom de l'exe serat "Project1.exe" par defaut.

donc si je place mon compo avant d'avoir enregistrer mon projet sous son vrai nom, j'aurais donc "projet1" dans le nom de l'exe.

probleme, il faudrat recharger le projet pour que la modification sois prise en compte du nouveau nom de l'appli.

donc comme j'aime pas cet inconvegniant, j'ai decider de laisser a l'utilisateur le soins de declarer lui meme le nom de l'exe ce qui est au final mieux.

merci de ta reponse.

<hr size="2" width="100%">
Commenter la réponse de f0xi
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 29 mars 2006 à 04:18
0
Merci
Ça y est j'ai les doigts qui deviennent dyslexiques.
Il est certain que ça fonctionnera bien mieux avec Forms qu'avec Froms

Je suis sur que si tu n'avais rien dit personne ne l'aurai remarqué.

@+
Cirec
Commenter la réponse de Cirec
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 29 mars 2006 à 20:30
0
Merci
en fait, j'avais fait un test mais qui avais echoué sur une belle erreur de violation de memoire,
j'avais considéré Application comme un objet TApplication et donc le code dans le composant:

TMaClass = Class(Tcomponent)
private
fApp : TApplication;
procedure fSetApp(val : TApplication);
published
property Application : TApplication read fApp write fSetApp;
end;

et

procedure TMaClasse.fSetApp(val : TApplication);
begin
fApp.Assign(Val);
end;

trop lol ...

tout ça pour juste recuperer Application.ExeName ... erf.

en definitif, je laisse a l'utilisateur le choix de transmettre le nom du processus a analiser,
que ce soit Application.ExeName ou tout autre executable.

Bref, j'ai contourné le probleme, mais quelque part c'est mieux.

<hr size="2" width="100%">
Commenter la réponse de f0xi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.