|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Problème : 'Impossible de créer la fiche. Aucune fiche Non MDI active'
-------------------------------------------------------------------------------- Bonjour à tous, voilà j'ai ce message qui arrive "de temps en temps" lorsque j'ouvre une fenetre MDI dans mon programme. J'ai lu le post : http://www.developpez.net/forums/showthread.php?t=14031 mais hélas ce n'est pas tout à fait cela que je veux faire, c'est à dire ouvrir une fenêtre fille directement. Moi j'ai tout simplement une fiche Mère qui ouvre une fiche Fille, avec entre temps le chargement de données (fonction Load), et la sauvegarde d'un fichier. J'ai bien les propriétés fsMDIForm pour la Mère et fsMDIChild pour la fille et pourtant j'ai quand même l'erreur. Le vrai problème pour moi c'est que cette erreur est complétement aléatoire, d'ailleurs je ne l'ai "presque" jamais sur mon ordi (une seule fois en un an), ce sont des clients qui l'ont parfois (régulièrement). Voici le bout de code pour ouvrir mon projet : Code : PROCEDURE TMain.aOpenExecute( Sender : TObject ); var SR: TSelectRequest; i: Integer; Z: Boolean; begin SR:=TSelectRequest.Create(Self); try SR.Caption:='Open project...'; if (SR.ShowModal=mrOk) then begin Z:=(MDIChildCount=0); for i:=0 to SR.Files.Count-1 do with TChild.Create(Self) do begin Application.ProcessMessages; Load(SR.Files[i]); CopyFile(PChar(FWorkingPath+'requests\'+SR.Files[i]+'\'+'data.mp'), PChar(FWorkingPath+'requests\'+SR.Files[i]+'\'+'data.BAK'), False); end; if Z then ActiveMDIChild.WindowState:=wsMaximized; end; finally SR.Release; end; end; {* PROC .aOpenExecute *} Si quelqu'un a une idée, je suis preneur. D'avance merci pour vos conseils, Amicalement, Bruno |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Vire l'appel à ProcessMessages, j'suis quasiment persuadé qu'il fout la
merde (comme souvent d'ailleurs) |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Salut OBones,
Hélas, ce n'est pas lui qui provoque l'erreur car même sans lui j'ai l'erreur. N'y a t il pas un moyen de forcer la fenetre Mère a être active ? Est-ce que cela peut venir du fait que la fenêtre fille est créée aprés la selection de mon projet depuis une fenêtre intermédiaire ? Et donc la fenêtre Mère n'est pas active à ce moment là. "OBones" <obones_dfd_@_zeea_altern.org> a écrit dans le message de news: fm03pj$io5$1@sd-6498.dedibox.fr... > Vire l'appel à ProcessMessages, j'suis quasiment persuadé qu'il fout la > merde (comme souvent d'ailleurs) |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Tu as la pile d'appel au moment de l'exception ?
Et puis très sincèrement, tu te fais chier avec la variable Z pour rien. Suffit de faire ça: if Assigned(ActiveMDIChild) then .... D'autant plus que tu notes le nombre d'enfant AVANT la boucle alors même que ce nombre peut très bien changer dans la boucle... |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
OBones a écrit :
> Tu as la pile d'appel au moment de l'exception ? > Et puis très sincèrement, tu te fais chier avec la variable Z pour rien. > Suffit de faire ça: > > if Assigned(ActiveMDIChild) then > ... > > D'autant plus que tu notes le nombre d'enfant AVANT la boucle alors même > que ce nombre peut très bien changer dans la boucle... En même temps, MDI is flawed, depuis le temps qu'on le dit :-) |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Hélas non, car cela ne se produit jamais (une fois en un an) sur mon ordi.
Alors que c'est plus fréquent chez certains clients. J'ai fait la modification pour la variable Z mais ça c'est juste de l'optimisation de code. De plus je suis conscient que le MDI est "has been" mais mon appli a été développé comme ça donc tout refaire ne m'interesse pas. "OBones" <obones_dfd_@_zeea_altern.org> a écrit dans le message de news: fm04c2$j0s$1@sd-6498.dedibox.fr... > Tu as la pile d'appel au moment de l'exception ? > Et puis très sincèrement, tu te fais chier avec la variable Z pour rien. > Suffit de faire ça: > > if Assigned(ActiveMDIChild) then > ... > > D'autant plus que tu notes le nombre d'enfant AVANT la boucle alors même > que ce nombre peut très bien changer dans la boucle... |
|
![]() |
| Outils de la discussion | |
|
|