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 :

PageControl et suppression d'onglets


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut PageControl et suppression d'onglets
    Bonjour,
    Je vous expose mon problème : j'ai un PageControl dans lequel je crée dynamiquement autant d'onglets que nécessaire. J'ai aussi 2 contrôles ( - et +) pour créer 1 onglet ou supprimer l'onglet actif. Tout cela fonctionne parfaitement.
    Je souhaiterais maintenant que le contrôle - (moins) passe sur Disabled lorsqu'il ne reste plus qu'un onglet, pour que le dernier ne soit pas supprimé, et qu'il redevienne actif à partir de 2 onglets.
    Merci pour votre aide.
    Cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 628
    Points : 39 802
    Points
    39 802
    Billets dans le blog
    59
    Par défaut
    Bonjour,

    je propose de coder les onclicks des boutons [-] [+]

    Code rapide
    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
    procedure TForm8.ButtonMoinsClick(Sender: TObject);
    begin
    PageControl1.ActivePage.Free;
    ButtonMoins.Enabled:=Pagecontrol1.PageCount>1;
    Pagecontrol1.ActivePageIndex:=Pagecontrol1.PageCount-1;
    end;
     
    procedure TForm8.ButtonPlusClick(Sender: TObject);
    begin
    With TTabSheet.Create(Pagecontrol1) do
     begin
       PageControl:=Pagecontrol1;
       caption:='page '+Pagecontrol1.PageCount.ToString;
       ButtonMoins.Enabled:=Pagecontrol1.PageCount>1;
       Pagecontrol1.ActivePageIndex:=Pagecontrol1.PageCount-1;
     end;
    end;
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut
    Merci SergioMaster, ça fonctionne correctement après des adaptations à mon cas précis.
    Cordialement

  4. #4
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut
    Bonjour,
    Comme dit dans le message précédent, tout fonctionne bien. Néanmoins il y a un cas particulier. J'utilise le PageControl comme un navigateur internet interne à une application.
    Mes favoris sont stockés dans un PopUp. Aucun problème lorsque j'appelle des sites depuis le PopUp. Cependant, lorsque je charge un site dans le 1er onglet et que je lance un lien depuis ce site, il se crée bien un 2e onglet mais le contrôle "-" reste désactivé.
    Cela dit, le cas se présentant peu, je ne suis pas sûr que cela vaille vraiment la peine de se creuser le crâne, sauf pour la beauté du geste.
    Cordialement

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 628
    Points : 39 802
    Points
    39 802
    Billets dans le blog
    59
    Par défaut
    Bonjour,

    Il faudrait certainement voir un peu plus de code sur ta création d'onglet et voir le traitement fait en cas de lancement de lien
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  6. #6
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut
    Bonjour,
    Certes, cela serait nécessaire de voir le code mais il vient d'une démo fournie avec les composants WebView4Delphi, ce qui veut dire les installer pour faire fonctionner la démo. Comme mon problème n'en est vraiment pas un, je laisse tomber, d'autant plus que ce cas est rarissime et que j'ai trouvé la parade : j'ouvre un 3e onglet pour activer le contrôle '-' et là je fais ce que je veux.
    Merci en tout cas. A bientôt pour de nouvelles aventures !
    Cordialement

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 628
    Points : 39 802
    Points
    39 802
    Billets dans le blog
    59
    Par défaut
    Citation Envoyé par f5jcg_Lulu Voir le message
    lorsque je charge un site dans le 1er onglet et que je lance un lien depuis ce site, il se crée bien un 2e onglet
    une démo fournie avec les composants WebView4Delphi
    oui, je me disais bien aussi, "comment il intercepte le lancement du lien ?"
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  8. #8
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    janvier 2019
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : janvier 2019
    Messages : 176
    Points : 79
    Points
    79
    Par défaut
    Bonjour,
    Voilà, j'ai trouvé la solution. Je me suis dis : il faut que le contrôle btnMoins s'active quand un 2e onglet est créé depuis un lien interne du site affiché dans le 1er onglet. J'ai donc regardé le code en détail, notamment pour tout ce qui crée un onglet. Donc c'est dans le Constructeur de Frame qu'il fallait aller voir et j'ai juste rajouté une instruction comme ci-dessous en rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    constructor TBrowserFrame.Create(AOwner : TComponent);
    begin
      inherited Create(AOwner);
      FHomepage              := '';
      FOnBrowserTitleChange  := nil;
      if BrowserPageCtrl.PageCount = 2 then
        btnMoins.Enabled := True;
    end;
    Et ça fonctionne parfaitement, le btnMoins s'active ou se désactive lorsque c'est nécessaire, sans perturber la création ou la suppression d'autres pages supplémentaires.
    Bon WE à tous.
    Cordialement

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    2 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 2 441
    Points : 4 700
    Points
    4 700
    Par défaut
    Citation Envoyé par f5jcg_Lulu Voir le message
    Bonjour,
    Voilà, j'ai trouvé la solution. Je me suis dis : il faut que le contrôle btnMoins s'active quand un 2e onglet est créé depuis un lien interne du site affiché dans le 1er onglet. J'ai donc regardé le code en détail, notamment pour tout ce qui crée un onglet. Donc c'est dans le Constructeur de Frame qu'il fallait aller voir et j'ai juste rajouté une instruction comme ci-dessous en rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    constructor TBrowserFrame.Create(AOwner : TComponent);
    begin
      inherited Create(AOwner);
      FHomepage              := '';
      FOnBrowserTitleChange  := nil;
      if BrowserPageCtrl.PageCount = 2 then
        btnMoins.Enabled := True;
    end;
    Et ça fonctionne parfaitement, le btnMoins s'active ou se désactive lorsque c'est nécessaire, sans perturber la création ou la suppression d'autres pages supplémentaires.
    Bon WE à tous.
    Cordialement
    Attention, le conteneur est sensé connaître son contenu, pas l'inverse.

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

Discussions similaires

  1. POI rencontre un problème avec la suppression des onglets
    Par hicham_alaoui1 dans le forum Documents
    Réponses: 0
    Dernier message: 12/10/2008, 20h54
  2. Suppression d'onglet dans EXCEL
    Par atlassia dans le forum ASP.NET
    Réponses: 7
    Dernier message: 27/02/2008, 13h21
  3. Réponses: 7
    Dernier message: 02/05/2006, 19h28

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