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 :

Directive de détection de la version de Lazarus et de sa LCL lors de la compilation [Lazarus]


Sujet :

Lazarus Pascal

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Directive de détection de la version de Lazarus et de sa LCL lors de la compilation
    Bonjour,

    Sans trop rentrer dans les détails, pour calculer la largeur de certaines colonnes d'une StringGrid, je dois appliquer un correctif pour un rendu visuel correct... sinon il existe un décalage 'visuel' d'environ un caractère... Je ne sais pas si le décalage est lié spécifiquement à la StringGrid ou au Canvas... Peu importe : actuellement le correctif est évalué dans la première ligne du code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FixedWidth := 2* Grids.constCellPadding;
      { la valeur minimale est 6
        Explication 1 : grids [line ~145] ~probable
        const
        constRubberSpace: byte = 2;
        constCellPadding: byte = 3;
      ou
        Explication 2 : ... (genre dbgrid : /lcl/dbgrid.pas  [line ~625] mais pas ds Grids)
                                 aCharWidth := Canvas.TextWidth(ATitle)+6;}
    Mon problème est donc d'écrire avec les "bonnes" directives de compilation en Free Pascal. En 0.9.29, le code ci-dessus passe sans problème. Mais en 0.9.28, la variable constCellPadding n'existe pas dans le /lcl/grids.pas. A la compilation, j'obtiens unit1.pas(507,38) Error: Identifier not found "constCellPadding".

    Donc, une première approche est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.Button1Click(Sender: TObject);
    //Uses Grids
    var
     FixedWidth : integer;
    begin
     FixedWidth := 8;
     {$IF FPC_FULlVERSION> 20402}
     //{$IF defined(VER2_4_2) or defined(VER2_4_3)}
       FixedWidth := 2* Grids.constCellPadding;
     {$ENDIF}
     ShowMessage(IntToStr(FixedWidth));end;
    Mais cette "approche" est en réalité peu satisfaisante. Avec {$IF je ne sais pas si on peut "référencer" le N° de version de Lazarus dans les directives de compilation. Car ici, le problème n'est pas en réalité directement la version de FP mais la modification des codes de la LCL (/lcl/grids.pas)... et la LCL est directement liée à Lazarus (et pas directement à FP) : La LCL est la Bibliothèque de Composants Lazarus. Si le code de la LCL est compatible avec le FP utilisé, on peut compiler la LCL avec des versions de FP différentes. Ainsi actuellement on peut télécharger sur le SnapShot, Lazarus 0.9.29 + fpc 2.4.2 ou Lazarus 0.9.29 + fpc 2.4.3. Or, la dernière Lazarus 0.9.28.3 est livrée avec FP 2.4.0... et la Lazarus 0.9.29 que j'ai installée utilise FP 2.4.3. Cette coïncidence arrange mes affaires et autorise le traitement ci_dessus purement opportuniste.

    Une nouvelle fois, j'ai eu un peu de mal avec la documentation. Le FPC_FULLVERSION n'étant pas indiqué dans celle-ci, peut-être existe-t-il une directive permettant de résoudre mon problème car même si Free Pascal est indépendant, ses développeurs ne doivent pas ignorer que son principal "client" est Lazarus. (cf FPC_FULLVERSION et sub. trouvées ici pages 51 et suivantes, document de 172 pages dans lequel le mot Lazarus ne figure pas...)

    Une idée... ou faut-il demander aux programmeurs de FP et Lazarus d'inclure une constante LAZ_FULLVERSION ou LCL_FULLVERSION ? A moins que cela ne soit déjà implémenté ? Mais je n'ai rien vu...

    Merci. Joyeux Noël.
    Cordialement. Gilles
    Dernière modification par Alcatîz ; 26/12/2010 à 10h17. Motif: préfixe + déplacement du sujet

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

Discussions similaires

  1. Nouvelle version de Lazarus 0.9.24
    Par Clandestino dans le forum Lazarus
    Réponses: 1
    Dernier message: 12/12/2007, 13h05
  2. Nouvelle version de Lazarus 0.9.22
    Par Clandestino dans le forum Lazarus
    Réponses: 0
    Dernier message: 01/04/2007, 10h50
  3. [FLASH 8] Détection de la version du player
    Par Destiny dans le forum Flash
    Réponses: 3
    Dernier message: 02/03/2006, 13h17

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