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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Variable publique, creation dynamique ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variable publique, creation dynamique ?

n°933456
mkracing66
Posté le 29-12-2004 à 11:10:47  profilanswer
 

Bonjour,
voila g un projet ou je cree differentes fenetres heritees d une fenetre de "base" dans laquelle je declare une variable publique ModeSaisie.
 
Dans ma fenetre de menu, je veux creer dynamiquement mes fenetres pour des raisons assez compliques (devellopement avec intraweb pour une appli intranet avec un systeme de retour au menu par un bouton "sommaire" mais egalement une naviguation en cascade par un bouton "precedent" bref...) et donc j applique ce code :
 

Code :
  1. with TwBaseWindowClass(GetClass('TwSaisieCellule')).Create(WebApplication) do begin
  2.   ModeSaisie:=AJOUT;
  3.   Show;
  4. end;


 
Et voila donc ou se pose mon pb, c que la valeur ModeSaisie que j initialise est en faite initialiser dans mon menu et non dans la fenetre creee.
Pourtant si on faisait :
 

Code :
  1. with TwSaisieCellule.Create(WebApplication) do begin
  2.   ModeSaisie:=AJOUT;
  3.   Show;
  4. end;


 
ca fonctionnerait parfaitement....:/
 
Qqun a t il une idee sur ce qui cloche ? (en esperant que mon explication est suffisament claire :p)
 
Merci

mood
Publicité
Posté le 29-12-2004 à 11:10:47  profilanswer
 

n°933495
mkracing66
Posté le 29-12-2004 à 11:50:24  profilanswer
 

Je ne dois qd meme pas faire un truc du style :
 

Code :
  1. TwBaseWindowClass(GetClass('TwSaisieCellule')).Create(WebApplication)
  2. TwBaseWindowClass(GetClass('TwSaisieCellule')).ModeSaisie:=AJOUT;
  3. TwBaseWindowClass(GetClass('TwSaisieCellule')).Show;


 
 
????
 
[edit] bah de toute facon c pas possible de coder ca :(


Message édité par mkracing66 le 29-12-2004 à 11:53:22
n°933834
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-12-2004 à 20:25:28  profilanswer
 

with TwSaisieCellule(TwBaseWindowClass(GetClass('TwSaisieCellule')).Create(WebApplication)) do
begin
  ModeSaisie:=AJOUT;
  Show;
end;


 
Dans ton cas il prenait ModeSaisie de Self plutôt que du TwSaisieCellule créé, vu que dans le with tu avais un TwBaseWindowClass au lieu d'un TwSaisieCellule ;)
 
Une variable intermédiaire serait peut-être plus simple qu'un "with" dans ce cas, non ?


Message édité par antp le 29-12-2004 à 20:27:01

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°933991
mkracing66
Posté le 30-12-2004 à 10:31:52  profilanswer
 

antp a écrit :

with TwSaisieCellule(TwBaseWindowClass(GetClass('TwSaisieCellule')).Create(WebApplication)) do
begin
  ModeSaisie:=AJOUT;
  Show;
end;


 
Dans ton cas il prenait ModeSaisie de Self plutôt que du TwSaisieCellule créé, vu que dans le with tu avais un TwBaseWindowClass au lieu d'un TwSaisieCellule ;)
 
Une variable intermédiaire serait peut-être plus simple qu'un "with" dans ce cas, non ?


 
Merci, mais j avais compris les symptomes, en fait je ne pige pas pk c si bloquant et comment contourner ce pb.
 
c quoi pour toi une variable intermediaire dans ce cas precis ou g une creation dynamique de chez dynamique et que je dois absolument y passer un param ?
 
Ce que je ne pige pas c que le show il me le fait bien, il m affiche bien la fenetre wSaisieCellule, donc pk on n arrive pas a y passer un param  :heink:  

n°934084
antp
Super Administrateur
Champion des excuses bidons
Posté le 30-12-2004 à 14:05:07  profilanswer
 

Parce que Show existe dans TwBaseWindowClass alors que ModeSaisie n'existe pas je suppose.
La variable intermédiaire c'était pour éviter les erreurs du with : quand un truc n'existe pas dans l'objet passé à with il prend le truc de Self, sans qu'on ne s'en rende compte. Donc quand on teste il est parfois plus prudent de faire une variable intermédiaire et de ne pas utiliser le with ; quitte à mettre le with une fois que tout marche bien.


Message édité par antp le 30-12-2004 à 14:05:43

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°934110
mkracing66
Posté le 30-12-2004 à 14:36:14  profilanswer
 

Je ne vois tjs pas comment tu veux faire pour cette variable intermediaire.
 
Juste pour rappel : toutes mes fenetres dont TwSaisieCellule derivent de TwBaseFenetre, et dans cette classe g ModeSaisie en variable publique.
 
Pour revenir sur les erreurs du with , si c etait reellement le cas, il ferait Self.ModeSaisie et Self.Show (etant donne que c deja le cas) et donc ne m afficherait pas ma nouvelle fenetre, non ?
Ma foi , ca me semble super obscure....
 
Merci pour ton aide, si tu pouvais me mettre un petit exemple de ta variable intermediaire histoire de voir si je peux vraiment appliquer ca, ca serait sympa
 
Merci

n°934124
antp
Super Administrateur
Champion des excuses bidons
Posté le 30-12-2004 à 14:47:42  profilanswer
 

Je ne savais pas que ModeSaisie existait dans l'ancêtre ;)
Alors je ne sais pas pourquoi ça foirait...  
 
pour l'histoire de la variable, je parlais bêtement de faire :
NewWin := TwSaisieCellule(TwBaseWindowClass(GetClass('TwSaisieCellule')).Create(WebApplication));
NewWin.ModeSaisie:=AJOUT;
NewWin.Show;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°934127
mkracing66
Posté le 30-12-2004 à 14:49:24  profilanswer
 

ca fonctionne pas de faire ce petit bout de code.
La encore mystere, mais ca foire a la compil
 
Il n apprecie guere TwBaseWindowClass(GetClass('TwSaisieCellule')


Message édité par mkracing66 le 30-12-2004 à 14:50:39
n°934148
antp
Super Administrateur
Champion des excuses bidons
Posté le 30-12-2004 à 15:10:08  profilanswer
 

"Il n apprecie guere"
il dit quoi ?  

Citation :

[Error] at line 541: je n'aprécie guère ce code


?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°934162
mkracing66
Posté le 30-12-2004 à 15:21:56  profilanswer
 

g teste ce que j avais mis dans mon 2eme post, et je ne me rappelle plus l erreur.
Par contre, je ne peux pas appliquer ton bout de code tel quel  car sinon je perd tout l interet de la construction dynamique par un string si je cast directement dans la fenetre que j obtiens :p

mood
Publicité
Posté le 30-12-2004 à 15:21:56  profilanswer
 

n°934167
antp
Super Administrateur
Champion des excuses bidons
Posté le 30-12-2004 à 15:27:48  profilanswer
 

oui, je m'en doute, c'est pour ça que je parlais de faire ça pour tester et d'ensuite remplacer le "NewWin :=" par un "with" (parce que répéter le code du with pour chaque ligne comme tu voulais le faire, c'est totalement impossible vu que soit tu recrées l'objet à chaque ligne, soit tu appliques ton code à la classe au lieu de l'objet)


Message édité par antp le 30-12-2004 à 15:28:36

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°935653
mkracing66
Posté le 03-01-2005 à 12:33:38  profilanswer
 

antp a écrit :

Je ne savais pas que ModeSaisie existait dans l'ancêtre ;)
Alors je ne sais pas pourquoi ça foirait...  
 
pour l'histoire de la variable, je parlais bêtement de faire :
NewWin := TwSaisieCellule(TwBaseWindowClass(GetClass('TwSaisieCellule')).Create(WebApplication));
NewWin.ModeSaisie:=AJOUT;
NewWin.Show;


 
Bon g eu en fait des soucies avec delphi qui m a fait des trucs etranges O_o style en compilation il ne voyait plus mes points d arrets ou ce genre de connerie...
 
bon g reteste ton code, ca ne fct tjs pas, mon pb s etend un petit peu je pense :
 
'ModeSaisie' etait declaree en variable publique sur ma class TwBaseWindow, mais la g une variable publique 'N_Poste' definie dans TwSaisieCellule, qd je compile ton bout de code avec variable intermediaire g variable non declare pour N_Poste :s
 
Commence a me gaver ce pb, et plus j etudie la question moins je pense qu il existe une reelle solution au pb mais plus j en ai besoin de ce truc...Ouuinn :'(
 
Merci a toute ame genereuse qui pourra m eclairer un peu
 

n°935679
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-01-2005 à 13:17:36  profilanswer
 

bah il doit y avoir un problème dans ta déclaration si il dit qu'elle n'est pas déclarée... faut voir le code


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°935695
mkracing66
Posté le 03-01-2005 à 13:43:44  profilanswer
 

c simple , si je remplace :
 
test := TwSaisiePoste(TwBaseWindowClass(GetClass('TwSaisiePoste')).Create(WebApplication));
 
par :
 
test := TwSaisiePoste.Create(WebApplication);
 
ca fontionne....

n°935723
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-01-2005 à 14:37:51  profilanswer
 

Elles dérivent de TForm tes classes ? Si oui, pourquoi ne pas utiliser WebApplication.CreateForm plutôt ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°935759
mkracing66
Posté le 03-01-2005 à 15:04:06  profilanswer
 

elles derivent de TIWAppForm (intraweb)


Message édité par mkracing66 le 03-01-2005 à 15:04:25
n°935864
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-01-2005 à 16:33:30  profilanswer
 

Je parlais pas au premier niveau, mais dans l'arbre des classes.  
TIWAppForm a-t-il TForm dans ses parents ?
 
Sinon tu peux aussi tenter de faire  
NewForm := GetClass('TwSaisieCellule').NewInstance;
où NewFom est de type TwBaseWindowClass
mais je ne suis pas sûr du résultat :D C'est ce que Delphi fait quand il créé des composants lus dans les .dfm lors de la création d'une Form, mais dans la doc ils disent de ne pas l'appeler directement.


Message édité par antp le 03-01-2005 à 16:37:23

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire

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

  Variable publique, creation dynamique ?

 

Sujets relatifs
[Perl] Executer le contenu d'une variableCréation d'une bd de site d'eCommerce
[PHP]Récuperation d'une boucle en variablePack de création web
Un petit conseil concernant la valeur d'une variableaide pour création forcée d'un fichier txt (et écriture)...
[DELPHI][TECHNO OLE][WORD] Création dynamique d'un doc Wordsupprimer une variable d'une variable, est-ce possible ?
[C Ansi] Affichage dynamique en console 
Plus de sujets relatifs à : Variable publique, creation dynamique ?


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