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

Delphi Discussion :

Problème de Parents


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut Problème de Parents
    Bonjour à tous,

    Je vais essayer d'être clair...
    1) Mon projet contient une Form: dans le formCreate, j'instancie un certain nombre de Panel dont le Owner et le Parent est la Form. Dans le Create des Panels, j'utilise des fonctions qui font appels au canvas du Panel et tout ce passe bien (car le Parent est bien positionné avant l'utilisation de ces fonctions ).

    2) J'ai changé certaines choses : maintenant, j'ai décidé de placer tous les composants qui étaient sur la Form dans un Panel. Ce Panel Englobant est instancié dans le FormCreate de la Form. Le Parent et le Owner de ce Panel est la Form. Les Panels Englobés sont instanciés dans le Panel Englobant, leur Owner et leur Parent seront donc le Panel Englobant. Mais maintenant, ça plante à l'éxecution lorsque j'arrive sur des instructions qui font appels au Canvas des Panels Englobés. Et je ne comprends pas ce qui se passe...

    N.B : Toutes les créations sont éffectuées en Run Time (à l'éxécution) et non en Design Time (Conception)

    Quelqu'un pourrait-il m'aider?
    Amicalement,

    Anis B.

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Il serait bien que tu précises l'erreur que tu as, car un "ca plante" ca ne nous dit pas où est l'erreur.
    Un bout de code aussi avec l'endroit de l'erreur serait un petit plus que nous apprécierons ^^
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut
    Bonjour et merci pour la rapidité de ta réaction.

    L'erreur est une violation d'accès lorsqu'on utilise les fonctions du Canvas : mais le Canvas n'est pas nil.

    Voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Form.FormCreate( Sender : TObject );
    begin
       Panel1 := TMonPanel.Create( Self );
       Panel1.Parent := Self;
       Panel1.PanelCreate;
    end;
    
    TMonPanel.PanelCreate;
    begin
       SousPanel := TMonSousPanel.Create( Self );
       SousPanel.Parent := Self;
       SousPanel.PanelCreate;
    end;
    
    TMonSousPanel.PanelCreate;
    var
      h : integer;
    begin
      h := Canvas.TextWidth('Test'); // Plantage à l'appel de cette instruction
    end;

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 940
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TMonPanel.PanelCreate;
    begin
       SousPanel := TMonSousPanel.Create( Self ); // plante à cet appel
       SousPanel.Parent := Self;
       SousPanel.PanelCreate; // ou à celui-ci ?
    end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut
    Citation Envoyé par tourlourou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TMonPanel.PanelCreate;
    begin
       SousPanel := TMonSousPanel.Create( Self ); // plante à cet appel
       SousPanel.Parent := Self;
       SousPanel.PanelCreate; // ou à celui-ci ?
    end;
    ça plante dans le deuxième ...
    remarque en retappant ce code dans un nouveau projet on se rend compte qu'il marchait sans plantage ... donc je pense que le problème vient d'ailleurs... Le Canevas refuse de faire quoi que ce soit ... ça doit être un truc mal initialisé
    est ce que quelqu'un a déjà eu ce problème ou connait la raison ?

  6. #6
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    A mon avis,

    Ton panel X englobant tes composants doit avoir comme Owner ET comme parent, la form.

    Les composants visuels se trouvant dans ton panel X, doivent avoir comme Owner la forme ET comme parent le panel X.

    La libération n'est normalement pas à faire, elle se fera normalement et dans le bon ordre à la destruction de la fiche.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

Discussions similaires

  1. Problème MDI parent
    Par sarorita dans le forum Windows Forms
    Réponses: 0
    Dernier message: 03/08/2009, 09h57
  2. Problème: Fome Parent / Forme Fille
    Par Saten dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/11/2008, 11h12
  3. Problème requête parent/enfant
    Par Bobtop dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/05/2006, 13h07
  4. [VB.Net][Threading] Problème de parent ...
    Par maitrebn dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/01/2006, 11h05
  5. Problème avec control parent de type TDrawGrid
    Par slylafone dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/11/2005, 17h32

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