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 :

Comportement erratique du TPageControl selon l'O.S. et l'avancement du projet [Lazarus]


Sujet :

Lazarus Pascal

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 719
    Points : 15 105
    Points
    15 105
    Par défaut Comportement erratique du TPageControl selon l'O.S. et l'avancement du projet
    Bonjour,

    Ce qui m'a mis sur la piste de cette découverte ("encore une !" allez-vous dire. "Ben oui" je vais répondre...), c'est lorsque j'ai passé mon projet en cours de développement sous Linux vers Windows pour que mon fils puisse tester l'avancement (car c'est pour lui ce truc).

    Le projet s'appuie sur un TPageControl posé sur une fiche et dont la propriété d'alignement est alClient, un truc très basique, quoi. Il présente trois TTabSheets dont le premier comprend un TPanel alClient et dont la couleur est la même (gris très foncé) que celle de la fiche.

    Normalement le TPageControl n'a pas de propriété ParentColor et malheureusement, sur une maquette avec rien à part un TPageControl, ses 3 onglets et une couleur bleu clair à la fiche, déjà ça part mal sous Linux, mais ça n'est pas là et ça le vrai problème (en haut le design, dessous le runtime) :
    Nom : projetvide_linux.png
Affichages : 180
Taille : 10,5 Ko Sous Windows c'est correct : Nom : projetvide_sous_win.png
Affichages : 175
Taille : 3,1 Ko

    C'est correct, disais-je, mais avec cette maquette vide ! Car avec mon projet en cours de dév', c'est lorsque je l'ai passé sous Windows que j'ai découvert la catastrophe :
    Nom : proj_en_dév.png
Affichages : 180
Taille : 2,5 Ko
    On dirait que ces gros traits moches sous les titres des onglets sont une recopie de la couleur de la fiche. En tout cas c'est ce que me dit un color picker, et c'est ce qu'on constate sur les trois onglets, qui sont intégralement de la couleur de la fiche alors que, je le rappelle le TPageControl n'a pas de propriété ParentColor et qu'en mode design il est de la couleur "rien", juste avec les petits points...

    Je suis un peu désespéré sur ce coup-là, car il s'agit du même projet avec un seul .lpi, un seul .pas, un seul .lfm, etc., tout ça ouvert un coup dans un O.S. et un coup dans l'autre.

    Si quelqu'un a une idée...
    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
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 375
    Points : 9 709
    Points
    9 709
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Si quelqu'un a une idée...
    Abandonne Linux !
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 719
    Points : 15 105
    Points
    15 105
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    Abandonne Linux !
    T'as pas compris ! Le problème est dans Windows

    Ah, tiens, j'ai eu l'idée de rajouter un fin panel alTop sur les TabSheets et que croyez-vous qu'il arrivât ? Toujours la même pagaille moche :
    Nom : ajoutpanel.png
Affichages : 165
Taille : 1,3 Ko

    Et si pas de solution, une fois le truc complètement terminé (sous Linux, Jon), je récupère les fichiers, je démarre la machine virtuelle 2000, je lance mon vieux Delphi7 perso et hop !, ça le fera comme ça.
    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
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 856
    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 856
    Points : 11 290
    Points
    11 290
    Billets dans le blog
    6
    Par défaut
    N'oublie pas l'offre promotionnelle Starter d'Embarcadero pour rajeunir par rapport à Delphi 7 !
    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
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 719
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 719
    Points : 15 105
    Points
    15 105
    Par défaut
    Salut, Y.
    Citation Envoyé par tourlourou Voir le message
    N'oublie pas l'offre promotionnelle Starter d'Embarcadero pour rajeunir par rapport à Delphi 7 !
    Oui, j'y ai pensé quand j'ai vu venir l'offre (je traîne toujours un peu sur le forum Delphi), mais d'abord, mauvais point pour embarcadero, je n'ai pas trouvé les pré-requis hard et soft pour cette version, et ensuite je me suis dit "mais à quoi bon" ? Toutes ces nouveautés, FMX, toutes ces choses ne m'intéressent pas plus, alors bof, j'ai un D7 que je réveille une fois tous les 3 mois, c'est amplement suffisant.

    Mais c'est gentil d'y avoir pensé et ça me donne l'occasion de te faire un ch'tit


    PS : et en suivant des liens sur leur site pour essayer de trouver une FAQ, me suis pris une erreur 404 ! Sont pas sérieux, ces gens. Comme partout, tu me diras : on fonce en avant en laissant des trucs derrière pas finis. Un exemple ? le ComCtrls de FreePascal, dont la différence entre 2.6 et 3.0 c'est le nombre de lignes, mais pas le n° de version au début du fichier, qui remonte à... 1999 !
    Et quand dans des .pas tu vois des commentaires marqués "new" sans date, ben tu sais pas de quand date ce "new" qui remonte peut-être à la 0.1, et là j'hésite entre mort de rire et furax !

    C'est comme les TODO qu'on retrouve de version en version, oubliés là où ils sont...
    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

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    il existe plusieurs solution

    soit dans le formcreate
    tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       MonPageCtrl.Brush.Color := clBtnFace;
    un peu plus sioux tu modifie ton ttabsheet

    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
     
     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 default clBtnFace;
      end;
    ....
     
    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 and (Brush.Color =clBtnFace) then
         inherited
      else
      begin
         Brush.Color := FColor;
         Windows.FillRect(Msg.dc, ClientRect, Brush.Handle);
         Msg.Result := 1;
      end;
    end;
    sinon regarde du cote de ondrawtab de ton TpageControl
    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
     
    Type
      TAckPC = Class(TPageControl)
      end; 
     
    ....
    var
      TabText: string;
      P: TPageControl;
      OutRect : TRect;
    begin
     
      p := Control as TPageControl ;
      p.Canvas.Brush.Color := clYellow;//clBtnFace;
      ...
     
      if Active then
      begin
        { get our pagecontrol display area using our  typecast to our TCustomTabControl class }
       OutRect := TAckPC(P).DisplayRect;
      { resize our rect area to go closer to the borders because the displayrect is the area of the
        tabsheet which is a few pixels within the border of the pagecontrol }
       InflateRect(OutRect,2,2);
       OffsetRect(OutRect,-1,-1);
      { since we do not have direct access to the  pagecontrol canvas we will be using the WIN32 API
        call to color the rect over the pagecontrol. to get the handle to the canvas area we will use the
        WIN32 API call GetWindowDc() }
        Windows.FillRect(GetWindowDc(P.Handle),OutRect,P.Canvas.Brush.Handle);
      end;
    end;
    mais bon la dernière solution n'est pas top problème de rafraîchissement lors du premier affichage
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 719
    Points : 15 105
    Points
    15 105
    Par défaut
    Yep !

    Merci de ton retour !

    Grâce à toi je vais pouvoir cliquer sur , ça fait plaisir, surtout à la veille du week-end

    Et pas besoin d'aller chercher midi à quatorze heures, avec juste cette ligne ça le fait :
    Citation Envoyé par anapurna Voir le message
    soit dans le formcreate
    tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       MonPageCtrl.Brush.Color := clBtnFace;
    Je garde les autres solutions sous le coude pour les étudier plus tard.

    Juste un bémol, mais franchement on s'en fout, donc on ne va pas se prendre la tête avec : sous Windows les onglets ont bien la couleur clBtnFace et sous Linux ils restent avec la couleur du fond (voir l'image du premier post), mais tant que les 2 progs ne tournent pas côte à côte, personne ne le verra !
    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

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 719
    Points : 15 105
    Points
    15 105
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Je garde les autres solutions sous le coude pour les étudier plus tard.
    J'ai étudié mais j'ai dû me faire des nœuds car je n'ai jamais vu de changement de couleur, même en forçant dans tous les sens à clYellow...
    Sauf sous... Linux ! Jon,

    Mais bon, comme dit plus haut, la première solution faisant disparaître ces horribles traits me convient, j'ai déjà cliqué sur , je peux continuer, ouf !
    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

  9. #9
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 375
    Points : 9 709
    Points
    9 709
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Sauf sous... Linux ! Jon,
    Bah ! On ne peut pas attendre qu'un logiciel fait par des linuxiens pour Linux et porté sous windows à contre cœur fonctionne bien sous windows.
    Bon week-end
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

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

Discussions similaires

  1. [PC fixe] Comportement erratique non lié à l'OS
    Par Arom77 dans le forum Ordinateurs
    Réponses: 4
    Dernier message: 06/01/2012, 16h36
  2. Comportement erratique en héritage
    Par esteban dans le forum C++
    Réponses: 11
    Dernier message: 03/07/2011, 09h25
  3. [Lazarus] [Linux] Comportement étrange du TPageControl
    Par Gouyon dans le forum Lazarus
    Réponses: 2
    Dernier message: 29/04/2011, 19h09
  4. Comportement différent de cos() selon contexte de l'appel
    Par dreydrey dans le forum Bibliothèque standard
    Réponses: 3
    Dernier message: 10/01/2011, 17h01
  5. Comportements erratiques avec tp_attr : Effets de bord de Py_FindMethod ?
    Par Elenaher dans le forum Interfaçage autre langage
    Réponses: 0
    Dernier message: 23/06/2010, 14h59

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