begin process at 2010 02 10 06:30:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

probleme affectation de données vers une form mdi


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

demande001

Y a personne pour me rependre ?

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

Loda

Membre Club
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

Membre Club
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

Membre Club
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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales