IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Frame et composants "embarqués"


Sujet :

Langage Delphi

  1. #1
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut Frame et composants "embarqués"
    Bonjour,

    J'ai un souci concernant des composants non visuels inclus dans une frame...

    Dans le principe, ma fiche principale contient un TPageControle initialement dépourvu de TTabSheet.

    Lors d'une demande de connexion à une DB, j'ajoute un TTabSheet alimenté par ma Frame.
    Cette Frame contient des compos visuels et des composants UIB gérant la connexion à la base choisie.

    Lorsque j'ai 2 DB en ligne (donc 2 TTabsheet), il y a comme un problème d'étanchéité entre les compos UIB, notamment les Metadata...alors que les autres compos sembles ok (pas d'effet de bord constaté)

    Ainsi, par exemple, la liste des tables de la 1ère DB (1er TTabsheet) est écrasée par celle de la 2ème DB.

    D'où mon interrogation concernant le fonctionnement de ces Frames et des compos UIB contenus...
    Comment tout ceci est géré ? Les frames sont-elles bien indépendantes ?
    Qu'est-ce qui peut expliquer l'anomalie constatée ?

    Merci par avance.

    TurboExplorer Pro updaté/ XP Pro SP2
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Est-ce que le Onwer des Composants UIB est la Form ou la Frame ?

    Si c'est la Form, peut-être isoler ces composants dans un TDataModule (tu auras autant d'instance de DataModule que de Frame) ou alors faire une instanciation par code (ce que je préfère, on peut mieux gérer l'architecture de son code avec les bonnes Pattern), on peut penser à un problème de nommage des composants et des références de ces derniers dans leur Owner

    Si c'est la Frame, cela serait plus surprenant, cela voudrait dire qu'il y aurait de la mémoire partagée entre les instances ??? Très peu probable !!!
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Citation Envoyé par qi130 Voir le message
    Ainsi, par exemple, la liste des tables de la 1ère DB (1er TTabsheet) est écrasée par celle de la 2ème DB.
    Je viens de construire un mini-projet et je ne suis pas confronté à ce problème.

    Donc le problème est certainement ailleurs que dans le couple Frame/UIB, puisque les frames sont bien indépendantes.

    Ton composant UIBDatabase est bien posé sur ta Frame ?

    @+ Claudius

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Merci pour vos réponses.
    Citation Envoyé par Cl@udius Voir le message
    Ton composant UIBDatabase est bien posé sur ta Frame ?

    @+ Claudius
    Les compos UIB ne sont directement posés dessus.

    En fait, la frame comporte 3 panels, disposés en
    1|2
    x|-
    x|3
    avec des splitter, et c'est le n°2 qui détient les compos UIB.

    Je peux cependant tenter de les raccrocher à la frame...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Ta notion de panel "conteneur" m'échappe un peu (), les UIB n'étant pas des composants visuels.

    As-tu la possibilité, simplement, de créer un mini-projet reproduisant ce comportement ? Si oui mets le en PJ, on pourra y jeter un coup d'oeil. Car ça m'intrique c't'affaire !!

    @+ Claudius

  6. #6
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Ou alors c'est un bug des composants UIB quand il sont créés à la volée.

    C'est assez étrange tout de même.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Nono40 Voir le message
    Ou alors c'est un bug des composants UIB quand il sont créés à la volée.

    C'est assez étrange tout de même.
    A priori non, puisque j'ai également fait le test en créant le TUIBDatabase dynamiquement.

  8. #8
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Bon, avec le projet sous le nez, c'est plus concret...

    Alors, les UIB apparaissent en fils directs de la frame.

    J'ai fait 1 essai avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MetaData.LoadFromDatabase(FBMTr);
    systématique lors du changement de frame. Le pb ne se produit plus, mais ça ne me parait pas être LA solution; et en + c'est pas gratuit à l'exécution

    Je vais tacher de reproduire la chose dans 1 projet réduit...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  9. #9
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Bon, je reviens vers vous avec un projet expurgé des compos exotiques.

    Cependant, l'erreur est toujours là

    N'hésitez pas à m'interpeler pour un complément d'info (ou autre).

    Merci par avance.

    NB: il vous faudra 2 DB et commencer par les référencer dans le prog.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  10. #10
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Zip téléchargé.

    Tu ne travailles pas avec les derniers UIB ? (dépôt SVN). Bon Je vais me débrouiller.
    A suivre...

  11. #11
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Est-ce que vous avez vérifier leur propriété Name et Owner ... c'est typiquement un problème de référence ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  12. #12
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Est-ce que vous avez vérifier leur propriété Name et Owner ... c'est typiquement un problème de référence ...
    Name, Owner (et Parent) sont correctement renseignés.
    Ce n'est visiblement pas un problème de création dynamique de frame ou de leur gestion, mais plutôt une mauvaise utilisation de l'acquisition des MetaData via les composants UIB.

    @qi130
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    unit FBMframeDB;
      // ...
    initialization
      RegisterClass(TAncestorFrame0);
      MetaData := TMetaDataBase.Create(nil, 0);
     
    finalization
      MetaData.Free;
    end.
    C'est la création dynamique de MetaData qui me dérange. J'obtiens d'ailleurs une belle AV sur le bpl des UIB lors des mes tests.
    Il faut utiliser la fonction GetMetaData de TUIBDataBase qui créé une instance de TMetaDatabase. A savoir que cette instance perdure jusqu'à la déconnexion de cette base.

    Je fais de plus amples tests et te tiens au courant.

    @+ Claudius

  13. #13
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Voici un petit projet présentant une autre façon d'accéder aux Metadata en utilisant les UIB.

    Attention:
    J'utilise la dernière version des UIB (compatible D2009/Unicode ). Classes TUIBxxx et non TJvUIBxxx

  14. #14
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Tu aurais l'url pour le dernier jus des UIB ?

    Sinon, je jette un oeil à ton projet
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  15. #15
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Bon, je pense avoir trouvé, surtout grâce aux posts ci-dessus...
    C'est la création dynamique de MetaData qui me dérange.
    En fait, il s'agissait d'un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var MetaData: TMetaDataBase;
    ce qui portait à confusion.

    Je l'ai rebaptisé myMetadata, déclaré dans Private et créé dans TAncestorFrame0.InitConnexion.
    Dès lors, je n'ai plus le problème

    Heu... dois-je libérer myMetaData explicitement ? Je suppose que oui, hein ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  16. #16
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par qi130 Voir le message
    Tu aurais l'url pour le dernier jus des UIB ?
    Dernier jus:

    Citation Envoyé par qi130 Voir le message
    Heu... dois-je libérer myMetaData explicitement ? Je suppose que oui, hein ?
    Si tu lui as assigné la frame comme Owner, pas la peine. Sinon à libérer explicitement dans le destructeur de celle-ci.

    @+ Claudius

  17. #17
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Merci pour le lien, et surtout pour le coup de pouce
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo