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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [RESOLU] Ordre d'execution a la creation dune form ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Ordre d'execution a la creation dune form ?

n°1473586
mkracing66
Posté le 10-11-2006 à 16:25:29  profilanswer
 

Bon voila j ai un soucy et je ne pige absolument rien.
 
 
Je cree dynamiquement une nouvelle form (j ai donc bien modifie dans mes options de projets que la fenetre designee serait creee dynamiquement) et j ai mis un code asez standard selon moi que je resume vite fait ainsi :
 

Code :
  1. try
  2.     wNewWindow = TwNewWindow.Create(Self);
  3.     wNewWindows.MySettings := MySettings;
  4.     try
  5.       wNewWindow.ShowModal;
  6.     finally
  7.       wNewWindow.free;
  8.   except
  9.      blabla pour logger la quelconque erreur.
  10.   end;


 
j'etais persuade, et je le suis toujours que les evenements oncreate est appelé apres le create de la form et que le onshow est appele au moment d un show ou showmodal, et qu ensuite on a un onactivate a chaque focus de la fenetre en question, ou je me gourre qq part ?
 
Mon pb est que j ai mis du code dans l evenement onshow ou j'utilise des proprietes de l objet MySettings, or qd je debug au pas a pas je passe du oncreate directement au onshow sans revenir dans mon code principal ou j affecte mon objet MySettings par celui de la form principale (-> wNewWindows.MySettings := MySettings;) donc bien evidement ca plante lamentablement....
 
Bref qqun a t il une idee ? comment se fait il que ma fenetre s affiche directement ? y a rien dans le oncreate....
 
Merci d avance pour toute aide apportée.

Message cité 2 fois
Message édité par mkracing66 le 13-11-2006 à 12:13:36
mood
Publicité
Posté le 10-11-2006 à 16:25:29  profilanswer
 

n°1473900
xlogan
Tu l'as vu ?
Posté le 11-11-2006 à 15:01:49  profilanswer
 

Je comprenais pas que ton code plante suivant la description que tu en fais alors j'ai lancé delphi 7 pour tester.
 
J'ai crée une fiche principale Form1 et une fiche Form2 que j'ai sortie de la création automatique.
J'ai alors posé un Bouton1 dont le click lance le code de création dynamique de la Form2.
 
Dans la Form2 j'ai placée un champs public du type TButton qui joue le rôle de ton onbjet MySettings.
 
Dans le OnShow de Form2 je change le caption de Form2.Button1 et cela change bien le Form1.Button1.Caption...
 
Le fait que cela ne plante pas est trés logique et le OnShow de ma Form2 est bien lancé lors de l'exécution de la ligne Form2.ShowModal;
 
Ai-je bien reproduis ta situation ?? Si oui, ton problème viens d'ailleurs, si non j'attends tes précisions. (genre... qu'est censé faire le TMySettings)
 
En espérant avoir fait avancer le schmilblick.

n°1474355
mkracing66
Posté le 13-11-2006 à 10:42:54  profilanswer
 

xlogan a écrit :

Je comprenais pas que ton code plante suivant la description que tu en fais alors j'ai lancé delphi 7 pour tester.
 
J'ai crée une fiche principale Form1 et une fiche Form2 que j'ai sortie de la création automatique.
J'ai alors posé un Bouton1 dont le click lance le code de création dynamique de la Form2.
 
Dans la Form2 j'ai placée un champs public du type TButton qui joue le rôle de ton onbjet MySettings.
 
Dans le OnShow de Form2 je change le caption de Form2.Button1 et cela change bien le Form1.Button1.Caption...
 
Le fait que cela ne plante pas est trés logique et le OnShow de ma Form2 est bien lancé lors de l'exécution de la ligne Form2.ShowModal;
 
Ai-je bien reproduis ta situation ?? Si oui, ton problème viens d'ailleurs, si non j'attends tes précisions. (genre... qu'est censé faire le TMySettings)
 
En espérant avoir fait avancer le schmilblick.


 
 
Voici mon code :
 

Code :
  1. procedure TwMain.FormCreate(Sender: TObject);
  2. begin
  3.   //Recuperation du path courant ou se trouve l'appli
  4.   CurrentPath := IncludeTrailingPathDelimiter(
  5.                    ExtractFilePath(Application.ExeName));
  6.   //Creation et initialisation des variables
  7.   ADOConnection.ConnectionString := '';
  8.   ADOQuery.Connection := nil;
  9.   MyError := TuError.Create(Self);
  10.   MyError.LogPath := CurrentPath + NameFileDefault + '.log';
  11.   MySettings                  := TuSettings.Create(Self);
  12.   MySettings.XMLConfigPath    := CurrentPath + NameFileDefault + '_current.xml';
  13.   MySettings.XMLReferencePath := CurrentPath + NameFileDefault + '.xml';
  14.   //Verification des paramètres concernant la base de données et
  15.   //Ouverture de la fenetre de paramétrage si nécessaire
  16.   if (not MySettings.CheckDatabaseinADOConnection(TTDB_Access)) then
  17.   begin
  18.     try
  19.       wConfig := TwConfig.Create(Self);
  20.       wConfig.MySettings := MySettings;
  21.       wConfig.MyError := MyError;
  22.       try
  23.         wConfig.ShowModal;
  24.       finally
  25.         wConfig.Free;
  26.       end;
  27.     except
  28.     end;
  29.   end;
  30. end;


 
 
Il s'agit de la formcreate de ma fiche principale...je cree mes compos, je les initialise, je teste ma bdd à partir d'un fichier de config XML et si y a un soucy je voudrais creer dynamiquement ma fenetre de config et l ouvrir en y passant tous mes objets crees pour mutualiser certaines infos (config, erreurs entre autre).
 
Pourtant qd je fais     wConfig := TwConfig.Create(Self);   cela execute bien le formcreate mais ca passe directement dans le onshow avant meme de continuer le code de ma fiche principale et d arriver sur le showmodal :s
 
 
Une idee ?


Message édité par mkracing66 le 13-11-2006 à 12:20:08
n°1474380
breizhbugs
Posté le 13-11-2006 à 11:09:13  profilanswer
 

mkracing66 a écrit :

Bon voila j ai un soucy et je ne pige absolument rien.

Code :
  1. try
  2.     wNewWindow = TwNewWindow.Create(Self);
  3.     wNewWindows.MySettings := MySettings;
  4.     try
  5.       wNewWindow.ShowModal;
  6.     finally
  7.       wNewWindow.free;
  8.   except
  9.      blabla pour logger la quelconque erreur.
  10.   end;


.


Dans la ligne 3, wNewWindow a un 's' et pas les autres!

n°1474438
el zozo
Stroumf Grognon
Posté le 13-11-2006 à 11:52:48  profilanswer
 

mkracing66 a écrit :

j'etais persuade, et je le suis toujours que les evenements oncreate est appelé apres le create de la form et que le onshow est appele au moment d un show ou showmodal, et qu ensuite on a un onactivate a chaque focus de la fenetre en question, ou je me gourre qq part ?


Oui, tu te gourance. En tout cas, si tu croi que OnShow ne peut etre déclenché que par Show ou ShowModal.
 
OnShow est appele au moment de l'affichage et l'affichage à lieu (sans mème passer implicitement par la procedure show) à la création si visible=true.

Message cité 1 fois
Message édité par el zozo le 13-11-2006 à 11:54:12
n°1474440
mkracing66
Posté le 13-11-2006 à 11:54:38  profilanswer
 

lol, je ne m etais pas arrete a une erreur de syntaxe ;)  
 
merci qd meme :)
 
[edit] c etait pour breizhbugs ;)


Message édité par mkracing66 le 13-11-2006 à 12:11:25
n°1474467
mkracing66
Posté le 13-11-2006 à 12:13:15  profilanswer
 

el zozo a écrit :

Oui, tu te gourance. En tout cas, si tu croi que OnShow ne peut etre déclenché que par Show ou ShowModal.
 
OnShow est appele au moment de l'affichage et l'affichage à lieu (sans mème passer implicitement par la procedure show) à la création si visible=true.


 
oui effectivement il semblerait que le pb soit cela....obligation de mettre visible a false pour ne pas avor de soucy.
 
Merci  :jap:  

n°1474834
xlogan
Tu l'as vu ?
Posté le 13-11-2006 à 19:43:01  profilanswer
 

?? Visible était à True ?? Ce n'est pas la caleur par défaut de la propriété... mais j'aurai dû y pensé.
 
Content que ton problème soit résolu.


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

  [RESOLU] Ordre d'execution a la creation dune form ?

 

Sujets relatifs
[résolu] Perte connexion Mysql 5 après chaque requête d'un script php[presque résolu] Problème de Session
je voudrais un conseil sur les logiciels de création[résolu] Besoin d'aide pour écrire une requête SQL compliquée
Résolu - Effacer des champs dans des tables à partir d'un selectOracle : gestion de l'ordre de tri des caractêres
[RESOLU] PHP EXIF et retouche d'image[resolu] Probleme passage iframe --> include
[résolu] Prendre un nom de fichier + répertoire en macro pour excel[résolu...enfin presq]Choix multiple pour une propriété de type string
Plus de sujets relatifs à : [RESOLU] Ordre d'execution a la creation dune form ?


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