Accueil > Forum > > > > probleme affectation de données vers une form mdi
probleme affectation de données vers une form mdi
lundi 13 novembre 2006 à 08:53:55 |
probleme affectation de données vers une form mdi

demande001
|
Bonjour; je suis nouveau sur les applications Mdi j'ai une form mdi child qui fait appele a une autre forme mdi child elle devient donc sa proprietaire. je fait appele a la deuxieme forme pour faire une extraction de donnés et revenir a la premiere avec des données. Mon probleme est que quand je veux affecté la valeur choisis a un Edit de la premiere forme a partir de la deuxieme j'ai une violation d'accée se produit..
[CODE] var i : integer; Trouve : Boolean; begin Trouve := False; for i := 0 to Application.MainForm.MdiChildCount-1 do begin if Application.MainForm.MdiChildren[i].ClassType = TFormMdiChild1 then begin Trouve:=true; end; end; if Trouve then Begin FormMdiChild1.Edit1.Text:=Données1; FormMdiChild1.Label20.Caption:=Données2; FormMdiChild2.free; End; end; [/CODE]

|
|
mardi 14 novembre 2006 à 09:27:34 |
Re : probleme affectation de données vers une form mdi
|
mardi 14 novembre 2006 à 16:22:07 |
Re : probleme affectation de données vers une form mdi

Loda
|
salut,
je vais peut-être avoir l'air négatif, mais t'es pas partie juste. C'est bourré de fautes.
(dsl, mais j'ai de la peine a comprendre ta question -> réécriture)
Sous-titre :
"Je crée une form MDIChild(F2) depuis une FormMDI (F1). F2 est une form de dialoge pour selectionner des données de F1.
J'ai une AV lorsque je tente de lire la valeur d'un TEdit de F1 depuis F2 (je suis pas sur du sens dans lequel tu fait l'opération).
D'où peut venir le problème?"
Pour commencer utilise les MDIChild pour des document ou des entité similaire.
utilise des form normal pour les dialogues.
ensuite, de manière général une form MDICHild n'est pas proriétaie d'une autre. C'est l'application qui les possède. (il y a toujours des cas différent, mais c'est presque une régle universelle.) Ceci évite les problème du genre "et si user ferme F1/F2 en premier?" et les problèmes de mémoires.
Aussi, on évite les .free sur les TForm, on appel .Close ou .release. mais pas .free. (lit l'aide et des post de ce forum si tu veux savoir pourquoi)
Ensuite ton bout de code ne sert à rien.
Si tu as la var FormMDICHild1, pourquoi fait tu une recherche dans MDICHildren?
Et si tu ne l'as pas et que tu doit la rechercher, pourquoi utilise tu une var global après ta boucle?
de plus, tu fait une recherche par CLASS et non par INSTANCE. donc si t'as eux fenêtre ouverte, tu ne sait pas ce qui vas se passer.
(je suppose que) Tu as une AV car tu fait référence à FormMDiChild1 qui est une var global que tu as probablement soit déjà détruit, soit pas construit.
Je te propose (de tête, donc y a peut-être des blanc) une structure qui devrait résoudre ton problème:
1) crée une form de dialog ( TfrmExtraireDonnee) pour "extraire tes donnée"
1.1) crée une propriété "Appleant : TFormMDIChild"
1.2) crée une propriété "DonneeChoisie : String"
1.3) dans .OnHide affect DonneeChoisie
1.4) dans .onShow init ton affichage en utilisant "Appelant" (et non une var global)
1.5) met deux TBitBtn avec des valeurs pour .ModalResult (MrOk, mrCancel) pour fermer la form.
2) depuis ta FormMDI, appel ton dialogue comme ça
with TfrmExtraireDonne.Create do
try
Appelant := self;
if ShowModal = mrOk then
TraiterDonne(DonneChoisie);
finally
Release;
end;
3) cree tes form MDI comme dans l'exemple de Delphi.
voilà. avec cette structure, tu ne devrait plus avoir de AV.
(tu devrait pouvoir "corriger" ton code sans devoir tout réécrire)
PS:
1) Oublie pas de faire des tests "Assigned" là ou c'est nécessaire.
2) On ne travail pas pour le site, on répond pour rendre service. Alors ne t'attent pas à avoir une réponse sous 30min (surtout à 9h du mat: soit on est au taf, soit on dort.)
3) si ton dialogue est très gros, utilise plutôt une instance global.
|
|
mercredi 15 novembre 2006 à 08:17:14 |
Re : probleme affectation de données vers une form mdi

Loda
|
je voulais juste "supprimer" mon ps2, j'avais pas vu que tu avais poster le jour d'après. dsl.
|
|
samedi 18 novembre 2006 à 10:02:37 |
Re : probleme affectation de données vers une form mdi

demande001
|
Bonjour ; Merci Loda pour votre aide et vos conseils mais désolé car votre méthode n'a pas marché je me suis retourné vers l'ancienne méthode de prog (SDI) avec les .Show; et le .Close; domage j'aurais bien aimer travailler sur des applications MDI 
|
|
mardi 21 novembre 2006 à 09:10:34 |
Re : probleme affectation de données vers une form mdi

Loda
|
salut,
Cette méthode fonctionne très bien.
quelle partie posent problème?
|
|
dimanche 26 novembre 2006 à 09:51:16 |
Re : probleme affectation de données vers une form mdi

demande001
|
Réponse acceptée !
 Bonjour; Un ami que je connais pas ma donné la solution suivante qui marche à 100% : var i : integer; Trouve : Boolean; fmChild1 : TFormMdiChild1 begin Trouve := False; for i := 0 to Application.MainForm.MdiChildCount-1 do begin if Application.MainForm.MdiChildren[i].ClassType=TFormMdiChild1 then begin Trouve:=true; fmChild1:=Application.MainForm.MdiChildren[i]as TFormMdiChild1; end; end; if Trouve then Begin fmChild1.Edit1.Text:=Données1; fmChild1.Label20.Caption:=Données2; FormMdiChild2.free; End; end;
|
|
Cette discussion est classée dans : end, probleme, trouve, mdi, begin
Répondre à ce message
Sujets en rapport avec ce message
probleme dans mon programme [ par tarik ]
monsieur kerad je crois que j'ai un bug dans mon programme ci-dessousprocedure TForm1.Button1Click(Sender: TObject);begintable1.open;try Table1.First
Datamodule et accès à partir d'une form [ par manudel ]
Voilà, je voudrais avoir accès aux événements des objets figurant sur mon datamodule, mais je n'y arrive pas. J'ai l'erreur suivante : "le type de l'e
Index d'un table Dbase [ par webazard ]
Bonjour, je crée un base Dbase indiqué dans l'aide de delphi en remplacant ttparadox par ttdbase.en supprimant la construction d'index min prog marche
Probleme avec une Application MDI. [ par Youyou0214 ]
J ai un Pobleme avec mon application MDI: Sur la procedure onclick d un bouton je voudrai ouvrir une fenetre MDI (pas de probleme) et si on reclique u
Ord et Char [ par apz ]
Salut a tous,en executant ce code la fonction Ord ne marche pâs sur le contenu du stringgrid :----------------------------procedure TForm1.Button1Clic
TServerSocket en Multithread [ par Cyrille2 ]
Salut... je bloque à mort sur un bug... en faite, impossible de lire le socketstream voila la procédure : Code: procedure TServerThread.ClientExecute;
Hints dans une DLL [ par almi ]
J'ai une fenêtre (TForm) qui fonctionne parfaitement dans mon executable.Si je la place dans une DLL, j'obtiens le message :Ne peut assigner TFont à T
Code 1 à tester [ par apz ]
salut a tous,je voulais faire un filtrage sur une table en utlisant les numeros d'enregistrements pour marquer les record et ensuite applique une requ
Champs Chamboulés [ par apz ]
Salut,1- En voulant avoir une table *.DB à partir d'une table *.DBF, en utilisant le Module Base de Données (Outils/Utilitaires/Copier), j'avais dans
Erreur incomprehensible [ par intello2001 ]
j'ai lerreur suivante :Unsatisfied forward or external declaration: Tform1....je pesne que c une kestion de end et begin dans mon code : else if
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|