f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
28 mars 2006 à 03:44
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
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.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 28 mars 2006 à 14:44
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;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 28 mars 2006 à 16:18
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.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 29 mars 2006 à 20:30
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:
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.