Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1631 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Partager un objet dans plusieurs fenêtres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Partager un objet dans plusieurs fenêtres

n°1169547
Inekman
Posté le 04-08-2005 à 00:16:50  profilanswer
 

Bonsoir à tous (antp :jap:)
 
Je suis face à un problème qui me turlupine et je me demande comment je peux faire ça proprement, à savoir :
 
J'ai 2 fiches. Une principale et une autre, dite de traitement.
 
Dans la fiche principale j'ai un objet "MonObjet" de type "TMonObjet" déclaré en public. L'interface graphique de la fiche principale permet d'agir sur les propriétés de "MonObjet". Un bouton dans la fiche principale démarre un traitement dans un thread séparé dont l'évolution est affichée dans la fiche de traitement.
 
J'aimerai savoir un truc maintenant. Comment je dois faire pour que "MonObjet" soit visible depuis la fiche de traitement dans la mesure où celle-ci va récupérer les valeurs des propriétés de "MonObjet" pour les afficher à l'écran :sleep:  
 
Pour l'instant je fais un bête "frmPrincipale.MonObjet.Propriete" pour récupérer les valeurs mais je me demandais si y'avait pas un autre moyen plus sympatique...je ne fais allusion à rien du tout car je sais pas si y'a une autre méthode :hello:  
 
Voilà, si vous avez des idées / suggestions, j'attends de vous lire impatiemment.
 
Inek.


Message édité par Inekman le 04-08-2005 à 00:17:07
mood
Publicité
Posté le 04-08-2005 à 00:16:50  profilanswer
 

n°1170257
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-08-2005 à 23:01:21  profilanswer
 

Soit tu surcharges le Create du Thread pour lui donner le TMonObjet, soit tu déclares dans le thread une propriété permettant d'écrire un TMonObjet, que la Form principale pourra assigner après avoir créé le thread.


Message édité par antp le 04-08-2005 à 23:02:00

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1170262
Inekman
Posté le 04-08-2005 à 23:14:57  profilanswer
 

Oublions le thread ^^
 
J'ai deux fiches, et un objet déclaré dans l'une des fiches. Ma question est : Pour accéder aux propriétés de l'objet déclaré dans ma fichier 1, suis-je obligé de faire :
 
Fiche1.objet.propriete := 'trucmuche'
 
?
 
Ou alors est-ce plus propre de créer une unité avec mon objet dedans et de déclarer cette unité dans les "uses" des fiches qui vont utiliser l'objet ?
 
Question d'organisation :)

n°1170383
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-08-2005 à 09:44:53  profilanswer
 

Bah a priori le type de ton objet a sa propre unité. Y déclarer une variable représentant l'objet, c'est pas spécialement le mieux, ça fait une variable globale en plus. Dans certains cas c'est pas grave (par ex moi j'ai toujours un objet global "Settings" qui est une classe avec les params de l'application).
Pour passer des objets aux Form, je rajoute en général une méthode Execute que j'utilise à la place de ShowModal.
Dans cette méthode je passe les objets dont la Form aura besoin, je les assigne à des attributs privés, puis je fais un Result := ShowModal = mrOk; pour que la méthode renvoie True ou False, selon que l'action a été appliquée ou non (ou qui ne renvoie rien si la fenêtre n'a rien à renvoyer, évidemment :D)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1170571
Inekman
Posté le 05-08-2005 à 12:20:14  profilanswer
 

et ton objet global Settings il est déclaré où ? :sleep:

n°1170595
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-08-2005 à 12:59:48  profilanswer
 

Dans global.pas, inclus par toutes les fenêtres [:dawa]  
(ou dans la unit dans laquelle est définie la classe, éventuellement)
 
Par exemple dans Ant Movie Catalog dans global.pas j'ai :
 
  Settings: TSettings; -> les settings dont j'ai parlé
  Translator: TAntTranslator; -> le truc qui sert à traduire les fenêtres
  ToolbarImages: TCustomImageList; -> les images des barres d'outils des fenêtres
  MessageWin: TMessageWin; -> remplace MessageDlg
  InputWin: TInputWin; -> remplace InputQuery
  ProgressWin: TProgressWin; -> fenêtre de progression
  FormatSettings: TFormatSettings; -> utilisé par les fonctions genre Format, FormatDateTime, etc. quand j'ai besoin d'un format fixe pour les réels et les dates
 


Message édité par antp le 05-08-2005 à 13:02:27

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1170836
Inekman
Posté le 05-08-2005 à 16:37:10  profilanswer
 

donc t'as bien une unité dans laquelle sont déclarés tous les objets susceptibles d'être utilisés par plusieurs fenêtres. Et tu inclus l'unité global dans toutes les fiches qui vont utiliser ces objets ^^
 
C'est ce que je voulais savoir :D
 
Et au niveau conception, est-ce que c'est une méthode "propre", ça fait pas bricoleur ?


Message édité par Inekman le 05-08-2005 à 16:37:32
n°1170920
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-08-2005 à 18:00:21  profilanswer
 

"tous les objets" non, juste ceux qui sont utilisés par toutes les fenêtres.
Les objets genre "catalogue courant" ou le fichier à utiliser, je les passe aux méthodes Execute des fenêtres comme expliqué précédemment.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1170922
Inekman
Posté le 05-08-2005 à 18:10:35  profilanswer
 

d'accord, je vais voir comment je peux faire un truc de ce genre chez moi :)
 
Merci :jap:

n°1663745
mkracing66
Posté le 28-12-2007 à 17:25:05  profilanswer
 

Bonsoir,
 
je deterre ce sujet pour poser une petite question en complément presque dans le meme style :
 
...et si la class n'était plus utilisée par 2 fenetres, mais par 2 applications ?
 
Faire ca dans une simple dll ne semble pas bcp plus avantageux vu qu il faut tout de meme "dupliquer" le prototypage de la class dans l'appli pour une question de "visibilité".  
Doit on donc forcément en faire un objet COM ?
 
[edit:] ou bien conserver l'unité de la class facon librairie statique commune aux deux projets ? d'un point de vue maintenance quel est le plus pratique ?
 
Par avance merci.


Message édité par mkracing66 le 28-12-2007 à 17:28:30

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Partager un objet dans plusieurs fenêtres

 

Sujets relatifs
Renommer plusieurs fichiers à la voléeun grep qui cherche plusieurs valeurs
[JS] savoir si un objet est présent ou pas[MYSQL] Concaténation de plusieurs lignes
[VBS] [Résolu] Libération mémoire d'objet WORDComment gèrer plusieurs bases par une même interface
[SQL - ORACLE] Faire un somme de count sur plusieurs tablesplusieurs count(*) avec plusieurs WHERE avec des if
interroger plusieurs tablesobjet indépendance?
Plus de sujets relatifs à : Partager un objet dans plusieurs fenêtres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR