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 :

Comment accéder à une propriété publique mais inaccessible ? [Lazarus]


Sujet :

Lazarus Pascal

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 876
    Points : 15 307
    Points
    15 307
    Par défaut Comment accéder à une propriété publique mais inaccessible ?
    Bonjour,

    Inaccessible car la complétion tout comme le compilateur n'en veulent pas et pourtant, dans le code de l'unité, la propriété est bien présente et publique.

    Ça se passe dans l'unité fpTTF.pas (/usr/share/fpcsrc/3.2.2/packages/fcl-pdf/src/fpttf.pp -- Lazarus v3.4), où l'on peut lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      TFPFontCacheList = class(TObject)
      ...
      public
        ...
        property    Items[AIndex: Integer]: TFPFontCacheItem read GetItem write SetItem; default;
    mais quand je commence par fcl : TFPFontCacheList; puis
    je n'ai ni GetItem ni SetItem, et quand je tente
    je n'ai toujours ni GetItem ni SetItem,
    Que me reste-t-il comme options ?

    Je dois mal m'y prendre, certes, mais je ne vois pas comment bien m'y prendre, alors un petit coup de pouce sera le bienvenu.
    Merci,

    EDIT : une précision (tst est une string) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      tst := gTTFontCache.Items[0].FileName;   showMessage(tst); // ok
      gTTFontCache.Items[0].FileName := tst; // Error: No member is provided to access property
    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 éprouvé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 432
    Points : 1 128
    Points
    1 128
    Par défaut
    Bonjour,

    Et en changeant fcl par autre chose? Je crois que fcl est une unité Pascal...

    Cordialement

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 876
    Points : 15 307
    Points
    15 307
    Par défaut
    Citation Envoyé par acaumes Voir le message
    Et en changeant fcl par autre chose? Je crois que fcl est une unité Pascal...
    Tout à fait, mais le compilateur n'a pas crié.

    Ce mot "fcl" y a même pas besoin de le mettre (elle est bizarre cette unité fpTTF ! Elle est utilisée par l'exemple Laz/version/examples/fpreport, c'est à voir ! [exemple qui me crashe violemment au primer accès au contrôle up-down -- mais je en suis pas là pour débogger ce truc]).

    Je l'avais mis pour rendre plus lisible le point dans ma ligne "fcl.", on peut mettre n'importe quoi !

    Mais pour des tests, tu peux te baser là-dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      gTTFontCache.SearchPath.Add('un_dossier_de_polices'); // 26 OK
      gTTFontCache.BuildFontCache;
      tst := gTTFontCache.Items[0].FileName;   showMessage(tst);  // ok
      gTTFontCache.Items[0].FileName := tst; // Error: No member is provided to access property
    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
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 442
    Points : 4 602
    Points
    4 602
    Par défaut
    Bonjour,

    Je ne suis pas sûr que ce soit la bonne explication, si la propriété est certes publique, en général, ses setter et getter ne le sont pas. Au contraire, ils sont cachés afin de donner l'impression d'un accès simple (entendre comme à un type de base) tout en assurant contrôle et sécurité.

    Aussi, il n'est guère surprenant que ces fonctions ne soient pas proposée par la complétude de code.

    SetItem(AIndex, MyPFontCacheItem) remplacera automatiquement Items[AIndex] := MyPFontCacheItem.

    De même MyPFontCacheItem := GetItem(AIndex) remplacera automatiquement MyPFontCacheItem := Items[AIndex].

    Entre autres, cela permet de traiter les index hors jeu. Si un getter ou un setter n'a pas de plus-value, on peut le remplacer par FItems où FItems est la version normalement cachée de la propriété. Bien sûr, on ne remplacera pas les deux, auquel cas il est plus simple et logique de rendre FItems public (FR ou EN ?).

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 876
    Points : 15 307
    Points
    15 307
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Aussi, il n'est guère surprenant que ces fonctions ne soient pas proposée par la complétude de code.
    Admettons, admettons, mais alors, comment je fais, moi, pour remplir ces zones qui, pour une raison qui m'échappe (mais je ne suis pas dans la tête des designers de fontes), sont vides en ce qui concerne certaines fontes, très peu Dieu merci, mais ça met quand même la pagaille...

    Exemple de problème : lorsque je liste un certain dossier, je sais qu'il s'y trouve une fonte incomplète, démo :
    Pour lister les fontes avec fpTTF.pp, je récupère tous les champs ligne par ligne dans le cache créé au préalable, et les champs sont bien identifiés par le protocole (j'ai rajouté des "|" pour les séparer, et des "=" pour aligner *ici*) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HumanFriendlyName|PostScriptName|FamilyName  |FileName                                                               | Fin2ligne
    =====Rockwell ...|==Rockwell ...|Rockwell ...|/usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/ROCK.TTF====| ***
    =====VTCorona ...|==VTCorona ...|VTCorona ...|/usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/VTCORONA.TTF| ***
    ============= ...|========== ...|======== ...|/usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/Linedraw.ttf| ***
    On voit sur la 3e ligne que les 3 premiers champs sont vides (fin d'un champ notée " ..." et j'ai forcé des espaces sur les 2 lignes entières pour avoir des alignement sympathiques en phase avec l'entête des colonnes, sinon on y laisse ses yeux !)

    Le plus rigolo, c'est que cette police hors-normes vient de chez MS, hé ouais !
    Mais ça doit remonter aux origines des polices truetype, ceci doit expliquer cela.

    En attendant ça me complique la vie !
    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 éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 876
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 876
    Points : 15 307
    Points
    15 307
    Par défaut
    Ah, tu as rajouté des trucs pendant que je te répondais, donc je continue ici :

    Citation Envoyé par Guesset Voir le message
    SetItem(AIndex, MyPFontCacheItem) remplacera automatiquement Items[AIndex] := MyPFontCacheItem;
    J'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CacheItem : TFPFontCacheItem;
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gTTFontCache.Items[0] := CacheItem;
    mais je ne vois pas à quoi ça va servir,

    Mon idée était de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if gTTFontCache.Items[i].HumanFriendlyName = '' then MyFontCacheList.SetItem(i, s as string(gTTFontCache.Items[i].HumanFriendlyName));
    mais ça ne compile pas, bien sûr...
    Impossible de faire passer une string,
    Et je comptais répéter le test sur HumanFriendlyName et sur PostScriptName


    Citation Envoyé par Guesset Voir le message
    Entre autres, cela permet de traiter les index hors jeu. Si un getter ou un setter n'a pas de plus value, on peut le remplacer par FItems où FItems est la version normalement cachée de la propriété. Bien sûr, on ne remplacera pas les deux, auquel cas il est plus simple et logique de rendre FItems public (FR ou EN ?).
    Tu m'as perdu, là,
    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

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 876
    Points : 15 307
    Points
    15 307
    Par défaut
    Bon, halte au feu !

    S'il n'y a pas moyen de changer les données des items, alors, puisque de toute façon tous ces items vont se retrouver dans une stringlist, je vais la mettre à jour, elle, par un second passage une fois qu'elle a fini d'être remplie.

    Et ça ira bien 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

  8. #8
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 442
    Points : 4 602
    Points
    4 602
    Par défaut
    Bonjour,

    Les affectations n'étaient que des exemples pour illustrer comment les setter entraient en scène automatiquement.

    Pour l'utilisation directe d'un membre caché sans getter, l'exemple classique est de donner un accès en lecture seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       ...
       FVal : integer;            // Membre caché
    public
       Val : integer read FVal;   // En lecture seulement
    Même si je ne suis pas sûr de ce que tu veux faire, tu ne peux utiliser directement setItem. Ce sera plutôt un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if gTTFontCache.Items[i].HumanFriendlyName = '' then MyFontCacheList.Items[i].HumanFriendlyName := gTTFontCache.Items[i].HumanFriendlyName);
    L'écriture est correcte sous réserve que le membre HumanFriendlyName existe. Ceci étant, fonctionnellement, cela n'a pas beaucoup de sens d'affecter une valeur qu'on vient de tester vide. Je doute d'avoir compris l'objectif. Ce qui est important dans mon mauvais exemple est que les accesseurs n'ont pas à être explicités.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 876
    Points : 15 307
    Points
    15 307
    Par défaut
    Allez tiens, cadeau (avec les commentaires de prise de tête) :

    Bien sûr, tout cela est très personnel, mais facilement adaptable
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    procedure TfrmMain.FormActivate(Sender: TObject);
    var
      i: integer;
      s: string;
      aLine, field1, field2, field3: string;
    begin
      //load fonts
    //// absent de l'exemple fpreport  CacheList := TFPFontCacheList.Create; // pas besoin de create pour ces choses fpTTF !
    //gTTFontCache.SearchPath.Add('/usr/share/fonts'); // CacheList.Count = 1116 --> Stream Read Error (on travaille là-dessus sur le fofo freepascal)
    //gTTFontCache.SearchPath.Add('/usr/share/fonts/truetype/dejavu'); // CacheList.Count = 22 OK
      gTTFontCache.SearchPath.Add('/usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine'); // 26 OK
      gTTFontCache.BuildFontCache;
      ledCacheCount.Text := inttostr(gTTFontCache.Count); // 1116 ou 22 ou 26
     
      for i:= 0 to gTTFontCache.Count-1 do
      try
        with gTTFontCache do begin
          // 2 fonts n'ont ni HumanFriendlyName ni PostScriptName ni FamilyName :
          // .../usr/share/fonts/fonts_shared/divers_W/ean13.ttf
          // .../usr/share/fonts/fonts_shared/divers_W/webdings.ttf
          // une autre là :
          // .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/Linedraw.ttf
     
          s := Copy(ExtractFileName(Items[i].FileName), 1, length(ExtractFileName(Items[i].FileName))-4);
          if Items[i].HumanFriendlyName = '' then field1 := s else field1 := Items[i].HumanFriendlyName;
          if Items[i].PostScriptName    = '' then field2 := s else field2 := Items[i].PostScriptName;
          if Items[i].FamilyName        = '' then field3 := s else field3 := Items[i].FamilyName;
          aLine := field1 +' ...'+  field2 +' ...'+  field3 +' ...'+ Items[i].FileName +' ***'; // marqueur de fin de ligne
          memoFontList.Lines.Add(aLine);
    {v1      memoFontList.Lines.Add(
                     Items[i].HumanFriendlyName
            +' ...'+ Items[i].PostScriptName
            +' ...'+ Items[i].FamilyName
            +' ...'+ Items[i].FileName
      //    +' ...'+ ExtractFileName(Items[i].FileName)
            +' ***'); // marqueur de fin de ligne          }
        end;
    {les 26 lignes d'origine du dossier "Machine" :
    American Typewriter Bold BT ...AmerTypewriterITCbyBT-Bold ...AmerType Md BT .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/amrtypeb.ttf ***
    Andale Mono ...AndaleMono ...Andale Mono .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/ANDALEMO.TTF ***
    Code Morse ...CodeMorse ...Code Morse .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/CodeMorse.ttf ***
    Dark Courier Bold ...CourierHP-Bold ...Dark Courier .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/DOUR65W.TTF ***
    Dark Courier Bold Italic ...CourierHP-BoldItalic ...Dark Courier .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/DOUR66W.TTF ***
    Dark Courier ...CourierHP ...Dark Courier .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/DOUR45W.TTF ***
    Dark Courier Italic ...CourierHP-Italic ...Dark Courier .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/DOUR46W.TTF ***
    Geometric Slabserif 703 Bold Condensed BT ...GeometricSlab703BT-BoldCond ...GeoSlab703 MdCn BT .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/geo703bc.ttf ***
    LetterGothic ...LetterGothic ...LetterGothic .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/LETTERGO.TTF ***
    Lucida Console ...LucidaConsole ...Lucida Console .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/LUCON.TTF ***
    Lucida Sans Typewriter Bold ...LucidaSans-TypewriterBold ...Lucida Sans Typewriter .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/LTYPEB.TTF ***
    Lucida Sans Typewriter Bold Oblique ...LucidaSans-TypewriterBoldOblique ...Lucida Sans Typewriter .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/LTYPEBO.TTF ***
    Lucida Sans Typewriter Oblique ...LucidaSans-TypewriterOblique ...Lucida Sans Typewriter .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/LTYPEO.TTF ***
    Lucida Sans Typewriter Regular ...LucidaSans-Typewriter ...Lucida Sans Typewriter .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/LTYPE.TTF ***
    OCR A Extended ...OCRAExtended ...OCR A Extended .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/OCRAEXT.TTF ***
    Rockwell Bold Italic ...Rockwell-BoldItalic ...Rockwell .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/ROCKBI.TTF ***
    Rockwell Bold ...Rockwell-Bold ...Rockwell .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/ROCKB.TTF ***
    Rockwell Condensed Bold ...Rockwell-CondensedBold ...Rockwell Condensed .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/ROCCB___.TTF ***
    Rockwell Condensed ...Rockwell-Condensed ...Rockwell Condensed .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/ROCC____.TTF ***
    Rockwell Extra Bold ...Rockwell-ExtraBold ...Rockwell Extra Bold .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/ROCKEB.TTF ***
    Rockwell Italic ...Rockwell-Italic ...Rockwell .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/ROCKI.TTF ***
    Rockwell ...Rockwell ...Rockwell .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/ROCK.TTF ***
    Secret Service Typewriter ...SecretServiceTypewriter ...Secret Service Typewriter .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/SecretST.TTF ***
     ... ... .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/Linedraw.ttf ***
    VTCorona ...VTCorona ...VTCorona .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/VTCORONA.TTF ***
    VTSmithUpright ...VTSmithUpright ...VTSmithUpright .../usr/share/fonts/fonts_shared/from_Win2000/Polices/Machine/VTSMU___.TTF ***}
        // et manque les garamond 08
      except
        memoFontList.Lines.Add('ERROR in '+ TFPFontCacheItem(gTTFontCache.Items[i]).FileName)
      end;
     
      SortLines(memoFontList.Lines);
    end;
    œuf corse,
    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

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 876
    Points : 15 307
    Points
    15 307
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Je doute d'avoir compris l'objectif.
    Je voulais éviter d'avoir des lignes vides dans les ListBoxes qui donnent la liste des fontes, ça fait mauvais genre et pas sérieux,

    Bon, je réalise après coup que je me suis beaucoup pris la tête pour pas grand chose, suffisait de faire comme j'ai fait il y a un quart d'heure et zou !, plutôt que de me perdre dans les arcanes effroyables de fpTTF.pp,
    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. Réponses: 0
    Dernier message: 03/03/2024, 22h53
  2. Comment utiliser une variable Publique/Externe
    Par SoyonsPositifs dans le forum Débuter
    Réponses: 4
    Dernier message: 04/11/2016, 09h59
  3. [Lazarus] Comment déclarer une fonction publique ?
    Par FOCUS77 dans le forum Lazarus
    Réponses: 11
    Dernier message: 21/03/2015, 08h58
  4. [AC-2007] Comment déclarer une variable publique à partir d'un formulaire ?
    Par Dr Rodney Mckay dans le forum IHM
    Réponses: 2
    Dernier message: 27/07/2009, 21h30

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