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

Lazarus Pascal Discussion :

Problème selon le TTabSheet sélectionné à la compilation [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut Problème selon le TTabSheet sélectionné à la compilation
    Bonjour,

    oui, je sais, le titre n'est pas très clair et explicite, mais j'ai essayé de faire court et comme je ne vois pas du tout où est le problème (à part dans les tréfonds de Lazarus...), je ne pouvais pas mettre 25 lignes de texte pour le titre

    Alors voilà (et ça n'a rien à voir avec mon problème de SetFocus dont on a causé hier) :
    soit un TPageControl contenant 4 TTabSheets, et dont le 2e contient un TGroupBox contenant d'autres composants.
    Nom : conception.png
Affichages : 75
Taille : 17,3 Ko

    Ce TGroupBox sera affiché ou pas en fonction d'un booléen positionné dans FormActivate. Cela fonctionne parfaitement bien sur le projet de test sans TPageControl, c'est quand je regroupe plusieurs maquettes (une par TTabSheet) que ça coince, et ça coince également sans aucun code : juste pour confirmer, j'ai fait un projet de test qui n'a pas de code à part la détection du booléen :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.FormActivate(Sender: TObject);
    begin
      FbTest := False;
      if FileExists(ExtractFilePath(Application.ExeName)+'test') then FbTest := True;
      if not FbTest then GroupBox1.Visible := False;
    end;
    Maintenant soyez bien assis sinon vous risquez de tomber par terre (comme moi hier soir à pas d'heure...) :
    ce qui m'intéresse, c'est la condition False du booléen, et donc le gb caché.
    • si je compile pour l'onglet contenant le gb, pas de problème ;
    • si je compile pour un autre onglet, à l'exécution quand je passe sur cet onglet, ben le gb est visible !
      Mais pas tous ses composants ! ! !

    Nom : exécution.png
Affichages : 78
Taille : 11,7 Ko

    Je ne vois aucune solution à ce merdier, mis à part compiler pour cet onglet et dans le FormActivate, rajouter PageControl1.ActivePage := TabSheet1;.

    Et là je retrouve un fonctionnement correct.

    Ce post n'est pas une demande d'aide (sauf s'il y a un bug connu que j'ignore), plutôt un coup de gueule face à un comportement farfelu qui me fait me dégoûter, parfois, de l'informatique.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 302
    Points
    11 302
    Billets dans le blog
    6
    Par défaut
    Quid de tester la condition dans le Form.OnActivate et attribuer la visibilité dans le TabSheet.OnShow ?
    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 !

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut Yves,
    Citation Envoyé par tourlourou Voir le message
    Quid de tester la condition dans le Form.OnActivate et attribuer la visibilité dans le TabSheet.OnShow ?
    Oui, pourquoi pas ? C'est un peu comme ma solution, mais tout ça contourne le pb de base, qui est (pour moi) un comportement farfelu dans la mesure où cet affichage incohérent dépend de l'onglet sélectionné à la compilation.
    Et c'est ça qui est strange !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 559
    Points : 3 951
    Points
    3 951
    Par défaut
    Salut,

    As-tu essayé d'initialiser la propriété GroupBox1.Visible à False en conception ?

    Le code suivant est à mon sens plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.FormActivate(Sender: TObject);
    begin
      FbTest := FileExists(ExtractFilePath(Application.ExeName)+'test');
      GroupBox1.Visible := FbTest;
    end;
    Cela peut signifier que l'initialisation des TTabSheets masqués se déroulent après l'exécution du gestionnaire Form.OnActivate

    La solution de Tourlourou est pertinente et sans doute plus logique, car c'est le meilleur moment pour décider de l'affichage de ta GroupBox.

    L'absence de certains composants du GroupBox estn franchement bizarre.
    As-tu du code qui manipule les dits objets ?

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 302
    Points
    11 302
    Billets dans le blog
    6
    Par défaut
    Il faudrait pê vérifier le .dfm, les parents des composants et leurs visibilités dans des ShowMessage (ou dans l'inspecteur de variables, en pas-à-pas).
    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 !

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par e-ric Voir le message
    (...) L'absence de certains composants du GroupBox est franchement bizarre.
    As-tu du code qui manipule les dits objets ?
    Je te le fais pas dire !

    Et sinon, non, aucun code dans le projet de test pour ce post, mis à part le test pour FbTest.

    Mais bon, tu as trouvé la solution :

    Citation Envoyé par e-ric Voir le message
    As-tu essayé d'initialiser la propriété GroupBox1.Visible à False en conception ? (...)
    Franchement, je n'y ai pas pensé lors de la première maquette (prog tout seul sans PageControl), et lors du copier/coller vers le projet final, le défaut n'est pas apparu tout de suite, donc j'ai zappé...

    Allez hop, un de plus

    Merci à tous,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

Discussions similaires

  1. Problème de réseau lors d'un compilation
    Par ysandral dans le forum Réseau
    Réponses: 1
    Dernier message: 08/04/2008, 12h03
  2. Affichage d'une Form selon l'option sélectionnée
    Par roura dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 04/08/2007, 16h21
  3. probléme d'execussion d'un code compiler
    Par evol29 dans le forum VC++ .NET
    Réponses: 8
    Dernier message: 21/05/2007, 14h40
  4. [AJAX] Accès selon le serveur
    Par cijez dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/05/2007, 11h19
  5. chaînes de caractères : problème selon l'OS
    Par loacast dans le forum C++
    Réponses: 10
    Dernier message: 16/03/2007, 16h20

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