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

Composants VCL Delphi Discussion :

Le contrôle n'a pas de fenêtre parente


Sujet :

Composants VCL Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Le contrôle n'a pas de fenêtre parente
    Bonjour,
    Je voudrais passer une application en MTI (multi onglet).
    Pour cela j'utilise le composant TPageControl et TTabSheet.
    Voici le code:
    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
    21
    22
    23
    24
    25
    26
    27
    procedure TAccueil.SmenuVehiculeClick(Sender: TObject);
    var
      Tab: TTabSheet;
    begin
        //Creation du TabSheet.
        Tab := TTabSheet.Create(Self);
        Tab.PageControl := pageArea;
     
        //Creation de la fiche à afficher
        vTFlisteVeh := TFlisteVeh.Create(Tab);  // j'affiche le TForm dans le conteneur TabSheet
        With vTFlisteVeh do
        begin
          OnClose     := DoOnCloseTFlisteVeh;  // afin de capter la fermeture du TForm
          Parent      := Tab;
          Align       := alClient;
          BorderStyle := bsNone;
          Show;
        end;
        //Affichage de l'onglet fraichement crée
        pageArea.ActivePage :=  Tab;
    end;
     
    Voici le code qui me permet de capter l’événement de fermeture:
    procedure TAccueil.DoOnCloseTFlisteVeh;
    begin
        PageArea.ActivePage.Free; // libération du TabSheet 
    end;
    Lors de la libération du TabSheet cela me déclenche l'erreur: Le contrôle n'a pas de fenêtre parente.
    Je pensais que la libération du TabSheet libéré aussi le TForm mais en fait il doit y avoir quelque chose qui m'échappe.
    Merci pour votre aide ...

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,

    Vous n'avez pas affecté le Parent de l'objet TTabSheet que vous avez créé, seulement son propriétaire (Owner).
    Rajoutez Tab.Parent := Self; après la création...
    A la place de Self, je mettrais plutôt le TPageControl qui encapsule le TTabSheet, que ce soit pour la création comme l'affectation du parent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //Creation du TabSheet.
    Tab := TTabSheet.Create(pageArea);
    Tab.Parent := pageArea;
    Tab.PageControl := pageArea; // pas sur du coup que cela reste nécessaire, à tester sans...
    Philippe.

Discussions similaires

  1. Réponses: 11
    Dernier message: 29/09/2019, 14h54
  2. Contrôle de la fenêtre parent
    Par sara21 dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2008, 14h48
  3. [Javascript] Appeler une fonction d'une fenêtre parente
    Par TekP@f dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 26/08/2005, 11h33
  4. Valider un form et lancer le résultat ds la fenêtre parent
    Par [DreaMs] dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 23/08/2005, 17h01
  5. Fenêtre parent
    Par adelavarenne dans le forum Composants VCL
    Réponses: 9
    Dernier message: 20/10/2003, 14h44

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