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 :

utiliser un tpagecontrol


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut utiliser un tpagecontrol
    salut j'ai bien vu l'utilisation dans la faq, mais ce que je voudrais savoir si on peut charger le contenu d'une autre page(j'ai un formulaire avec des champs,bouttons) integrer cette page dans mon tpagecontrol.
    ou bien faut-il reprendre en deposant les elements dans le tpagecontrol?
    et j'aimerais savoir , y atil moyens de changer le fond, faire en sorte que ça ne soit pas blanc?merci

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    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 786
    Par défaut
    Bonjour,
    Citation Envoyé par moustaf_26 Voir le message
    je voudrais savoir si on peut charger le contenu d'une autre page(j'ai un formulaire avec des champs,bouttons) integrer cette page dans mon tpagecontrol.
    ou bien faut-il reprendre en deposant les elements dans le tpagecontrol?
    Si j'ai bien compris , tu veux déplacer visuellement les contrôles (type TControl et descendants) d'une page (type TTabSheet) vers une autre.
    Attention, tu peux changer le Parent (qui est chargé du dessin) mais pas le Owner (qui est chargé de la libération). On peut procéder comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      // Transfert des contrôles d'une page à une autre
      for i := TabSheet1.ControlCount - 1 downto 0 do
        TabSheet1.Controls[i].Parent := TabSheet2;
    Attention aux effets de bord (du style je supprime TabSheet1 alors que ce contrôle possède toujours les contrôles qui ont été déplacés)
    Citation Envoyé par moustaf_26 Voir le message
    et j'aimerais savoir , y atil moyens de changer le fond, faire en sorte que ça ne soit pas blanc?merci
    En gérant le message WM_ERASEBKGND
    --
    Philippe.

  3. #3
    Membre très actif
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,Si j'ai bien compris , tu veux déplacer visuellement les contrôles (type TControl et descendants) d'une page (type TTabSheet) vers une autre.
    Attention, tu peux changer le Parent (qui est chargé du dessin) mais pas le Owner (qui est chargé de la libération). On peut procéder comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      // Transfert des contrôles d'une page à une autre
      for i := TabSheet1.ControlCount - 1 downto 0 do
        TabSheet1.Controls[i].Parent := TabSheet2;
    Attention aux effets de bord (du style je supprime TabSheet1 alors que ce contrôle possède toujours les contrôles qui ont été déplacés)En gérant le message WM_ERASEBKGND
    --
    Philippe.
    en fait je pense que je me suis pas fait comprendre, j'ai un autre tform avec des composant la dessus(un formulaire), je decide apres pour un souci de navigation integre mon tform dans un tpagecontrol.

    pour la couleur, comment utiliser WM_ERASEBKGND?

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    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 786
    Par défaut
    Bonjour,
    Citation Envoyé par moustaf_26 Voir le message
    en fait je pense que je me suis pas fait comprendre, j'ai un autre tform avec des composant la dessus(un formulaire), je decide apres pour un souci de navigation integre mon tform dans un tpagecontrol.
    En mode conception depuis l'EDI, je suppose ?
    Par copier coller mais une partie du code dont la gestion évènementielle devra être repris manuellement...
    Citation Envoyé par moustaf_26 Voir le message
    pour la couleur, comment utiliser WM_ERASEBKGND?
    En sous classant la classe TTabSheet, en introduisant la propriété Color et les méthodes qui vont avec dont la gestion du message WM_ERASEBKGND...
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    // Déclaration
      TTabSheet = class(ComCtrls.TTabSheet)
      private
        FColor: TColor;
        procedure SetColor(Value: TColor);
        procedure WMEraseBkGnd(var Msg: TWMEraseBkGnd); message WM_ERASEBKGND;
      public
        constructor Create(AOwner: TComponent); override;
        property Color: TColor read FColor write SetColor;
      end;
    //...
    // Implémentation
    constructor TTabsheet.Create(AOwner: TComponent);
    begin
      inherited;
      FColor := clBtnFace;
    end;
     
    procedure TTabsheet.SetColor(Value: TColor);
    begin
      if FColor <> Value then
      begin
        FColor := Value;
        Invalidate;
      end;
    end;
     
    procedure TTabsheet.WMEraseBkGnd(var Msg: TWMEraseBkGnd);
    begin
      If FColor = clBtnFace then
        inherited
      else
      begin
        Brush.Color := FColor;
        FillRect(Msg.DC, ClientRect, Brush.Handle);
        Msg.Result := 1;
      end;
    end;
    // ...
    // Utilisation
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Tabsheet1.color := clBlue;
      TabSheet2.color := clRed;
    end;
    --
    Philippe.

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    Regarde ce lien il pourra t'aider
    http://www.developpez.net/forums/d67...t/ouvrir-form/

    bonne chance

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 660
    Billets dans le blog
    65
    Par défaut
    Pour 'intégrer la Forme dans un TpageControl' pourquoi ne pas utiliser le Docking ? (j'en suis devenu un fan , c'est une manière de ne pas utiliser le MDI parait-il obsolète)

    procédure a suivre :
    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
     
    // TMain est la fenêtre  contenant un pageControl
    //                                                   un bouton pour 'appeller' la form
    // Form2 est la form a 'docker'
    // TForm 'Modale  Classique' , non crée automatiquement par le projet
    // ne pas oublier les OnClose de celle-ci etc... 
     
    procedure TMain.Button1Click(Sender: TObject);
    var F2 : TForm2;
    begin
     // au cas ou 
     PageControl1.Visible:=true;
     // Création de la Form 
     F2:=TForm2.Create(self);
     // Docking de la Form
     F2.ManualDock(PageControl1);
     F2.Show;
     // se positionner sur l'onglet créé
     PageControl1.ActivePageIndex:=PageControl1.PageCount-1;
    end;

Discussions similaires

  1. utilisation d'un TPagecontrol
    Par parabole33 dans le forum C++Builder
    Réponses: 12
    Dernier message: 03/12/2010, 18h38
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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