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

Flash Pascal Discussion :

Mise en forme d'un texte


Sujet :

Flash Pascal

  1. #1
    Rédacteur/Modérateur

    Mise en forme d'un texte
    Bonjour !

    Je continue d'écrire de petits exemples Flash-Pascal.

    J'aimerais l'avoir suffisamment en main pour m'en servir comme d'un outil d'initiation à la programmation, à la place de Turbo Pascal. Gratuit, léger, fonctionnant sans installation, on ne peut plus simple dans sa présentation : dans un sens, c'est l'outil idéal. Je cherche donc à écrire les exemples classiques, dans un style de programmation aussi simple que possible.

    Aujourd'hui j'ai travaillé sur l'affichage de texte, à partir de l'exemple "stringopenarraydemo" de Flash-Pascal 0.8. Très intéressant !

    Voici ce que j'en ai tiré :

    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
     
    program Texte;
     
    // Exemple Flash-Pascal
     
    {$FRAME_WIDTH  600}
    {$FRAME_HEIGHT 400}
    {$BACKGROUND $eeeeee}
     
    uses
      Flash8, Strings;
     
    var
      f : TextFormat;
      t : TextField;
      s1: TString;
      s2: TString;
      s3: string;
      s4: array of string;
     
    procedure Ecrire(s: string);
    begin
      t.text:=t.text+s;
      t.text:=t.text+#13;
    end;
     
    begin
      f:=TextFormat.Create('Tahoma',14);
      f.color:=$111111;
      f.bold:=True;
     
      s1:=TString.Create('abc');
      s2:=TString.Create(s1.substring(1,s1.length_));
     
      s3:='bla';
      s3:=s3+s3;
     
      s4:=['Pierre','Paul','Jacques'];
     
      t:=TextField.Create(nil,'t',0,10,10,400,300);
     
      Ecrire('Exercice Flash-Pascal'+#13);
      Ecrire('s1.valueOf = '+s1.valueOf);
      Ecrire('s2.valueOf = '+s2.valueOf);
      Ecrire('s3 = '+s3);
      Ecrire('s4[0] = '+s4[0]);
     
      t.setTextFormat(f);
    end.


    Je ne connaissais le type array of string. Peut-on le redimensionner après l'avoir initialisé, je veux dire ajouter des éléments ?

    Ensuite j'ai réutilisé le même code pour faire la démonstration d'une fonction récursive basée sur un algorithme d'Euclide. Ça fonctionne.

    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
     
    program ExPGCD;
     
    // Exemple Flash-Pascal
     
    {$FRAME_WIDTH  600}
    {$FRAME_HEIGHT 400}
    {$BACKGROUND $eeeeee}
     
    uses
      Flash8;
     
    var
      f : TextFormat;
      t : TextField;
     
    procedure Ecrire(s: string);
    begin
      t.text:=t.text+s;
      t.text:=t.text+#13;
    end;
     
    function PGCD (a, b: Integer): Integer;
    begin
      Ecrire ('a='+IntToStr(a));
      Ecrire ('b='+IntToStr(b));
      if b = 0 then result := a
      else result := PGCD (b, a mod b);
    end;
     
    begin
      f:=TextFormat.Create('Tahoma',14);
      f.color:=$111111;
      f.bold:=True;
     
      t:=TextField.Create(nil,'t',0,10,10,400,300);
     
      PGCD(12,16);
     
      t.setTextFormat(f);
    end.


    Par contre, je n'ai pas réussi à afficher le résultat de ma fonction dans le programme principal. J'ai essayé de plusieurs façons, mais j'avais toujours le mot "undefined" à la place de mon résultat.


  2. #2
    Expert éminent sénior
    Concernant le array of string, encore une fois les dimensions n'ont aucune importance, et je n'ai pas encore mis en oeuvre de contrôle là dessus.

    attention cependant pour les tableaux à dimensions multiples, je ne suis pas certain que ça fonctionne (array of array of...)

    sinon voici une nouvelle version du compilateur qui corrige quelques bugs (dont le undefined ci-dessus), j'ai mis à jour SynEdit avec la dernière version et ajouter le Ctrl+F pour faire des recherche

    au niveau compilation une belle nouveauté aussi

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {$BITMAP nom 'Fichier.BMP'}
     
    function loadBitmap(id: string): BitmapData external BitmapData.loadBitmap;
     
    var
      bmp : BitmapData;
    begin
      bmp := loadBitmap('nom');
    end;



    voir les méthodes MovieClip.attachBitmap et beginFillBitmap() pour en faire usage.

    NB: le bitmap doit être en 8 ou 32bits uniquement, et il est gzipé dans le SWF.
    faudra que j'ajoute le support JPEG un de ces jours

    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    Citation Envoyé par Paul TOTH Voir le message
    voici une nouvelle version du compilateur
    Génial !


    Voici mon exemple complété:

    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
     
    program PGCD;
     
    { Recherche du plus grand commun dénominateur de deux nombres entiers
      par la méthode d'Euclide.
    }
     
    {$FRAME_WIDTH    320}
    {$FRAME_HEIGHT   320}
    {$BACKGROUND $ffffff}
     
    uses Flash8;
     
    var
      f:TextFormat;
      t:TextField;
      c,d:Integer;
     
    procedure Ecrire(s:string);
    begin
      t.text:=t.text+s;
      t.text:=t.text+#13;
    end;
     
    function PGCD(a,b:Integer):Integer;
    begin
     
      Ecrire('a='+IntToStr(a));
      Ecrire('b='+IntToStr(b)+#13);
     
      if b = 0 then result := a
      else result := PGCD (b, a mod b);
     
    end;
     
    begin
      f:=TextFormat.Create('Tahoma',14);
      f.color:=$111111;
      f.bold:=True;
     
      t:=TextField.Create(nil,'t',0,10,10,300,300);
     
      c:=12;
      d:=16;
     
      Ecrire('PGCD('+IntToStr(c)+','+IntToStr(d)+')='+IntToStr(PGCD(c,d)));
     
      t.setTextFormat(f);
    end.



    Citation Envoyé par Paul TOTH Voir le message
    Concernant le array of string, encore une fois les dimensions n'ont aucune importance, et je n'ai pas encore mis en oeuvre de contrôle là dessus.
    Je me demandais comment on pouvait ajouter des éléments. Tout simplement comme ça :

    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
    program ArrayOfString;
     
    {$FRAME_WIDTH    320}
    {$FRAME_HEIGHT   320}
    {$BACKGROUND $ffffff}
     
    uses Flash8, Strings;
     
    var
      f:TextFormat;
      t:TextField;
      a:array of string;
     
    procedure Ecrire(s:string);
    begin
      t.text:=t.text+s;
      t.text:=t.text+#13;
    end;
     
    begin
      f:=TextFormat.Create('Tahoma',14);
      f.color:=$111111;
      f.bold:=True;
     
      t:=TextField.Create(nil,'t',0,10,10,300,300);
     
      a:=['Pierre','Paul'];
     
      a[2]:='Jacques'; // On ajoute un élément
     
      Ecrire(a[0]);
      Ecrire(a[1]);
      Ecrire(a[2]);
     
      t.setTextFormat(f);
    end.


    Autrement y a-t-il quand même un moyen de connaître le nombre actuel d'éléments ? Peut-on écrire quelque chose comme

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    if a[n]=undefined then position_dernier_element:=n-1




    Citation Envoyé par Paul TOTH Voir le message

    au niveau compilation une belle nouveauté aussi

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {$BITMAP nom 'Fichier.BMP'}
     
    function loadBitmap(id: string): BitmapData external BitmapData.loadBitmap;
     
    var
      bmp : BitmapData;
    begin
      bmp := loadBitmap('nom');
    end;



    voir les méthodes MovieClip.attachBitmap et beginFillBitmap() pour en faire usage.
    Je vais regarder ça !

  4. #4
    Expert éminent sénior
    tu peux utiliser Low(a), High(a) et Length(a) pour connaitre respectivement le premier, le dernier et le nombre d'éléments d'un tableau a

    faudrait vraiment que j'intègre une système d'aide en ligne...mais j'aimerai bien un truc léger façon aide en ligne de Turbo Pascal, car les HLP ne sont plus supportés et les CHM sont trop lourds à mon goût.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Rédacteur/Modérateur

    Citation Envoyé par Paul TOTH Voir le message
    tu peux utiliser Low(a), High(a) et Length(a) pour connaitre respectivement le premier, le dernier et le nombre d'éléments d'un tableau a
    Merci.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      a:=['Pierre','Paul'];
     
      a[2]:='Jacques';
     
      Ecrire(a[0]);
      Ecrire(a[1]);
      Ecrire(a[2]);
     
      Ecrire('Low(a)='+IntToStr(Low(a)));
      Ecrire('High(a)='+IntToStr(High(a)));
      Ecrire('Length(a)='+IntToStr(Length(a)));



    Citation Envoyé par Paul TOTH Voir le message
    faudrait vraiment que j'intègre un système d'aide en ligne...
    C'est vrai que le manuel actuel est fort court. Heureusement qu'il y a le forum.

    Si je peux donner un coup de main d'une façon ou d'une autre pour la documentation, ça me fera plaisir.

    En attendant je vais continuer mes petites recherches. Je commence à me retrouver et j'ai pas mal d'idées de choses à faire.

    [EDIT]
    Je viens de tomber sur quelque chose qui a un rapport avec le titre de cette discussion. L'unité Flash8Ext permet de se servir de balises HTML:

    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
    program ex190512A;
    uses Flash8Ext;
     
    {$FRAME_WIDTH 200}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND $eeeeee}
     
    var
      t:TextField;
     
    begin
      t:=TextField.Create(nil,'t',0,0,0,200,200);
      t.html:=True;
      t.htmlText:=
      'Ceci est un objet de type <b>TextField</b>'+#13+
      'utilisant une balise HTML.';
    end.


    Bonne idée !

  6. #6
    Membre expérimenté
    , génial !

    Je débarque et je viens de découvrir la dernière version...
    Super pour l'intégration de BMP.

    Je regarde ça de près....

    @+

  7. #7
    Membre expérimenté

    Je viens de tomber sur quelque chose qui a un rapport avec le titre de cette discussion. L'unité Flash8Ext permet de se servir de balises HTML:
    Sympa pour les balises html...

    merci pour l'info...

    @+

  8. #8
    Rédacteur/Modérateur

    Citation Envoyé par Archimède Voir le message
    Sympa pour les balises html...

    merci pour l'info...
    De rien. C'est dans l'exemple "menutextfieldsoundemo.pas". Les deux balises utilisées dans l'exemple sont le gras et l'italique. Je ne sais pas si d'autres sont disponibles.

  9. #9
    Membre expérimenté
    archimède
    Oui, j'ai essayé
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <Br>
    , ça ne marche pas.

    merci

    @+

  10. #10
    Membre expérimenté
    Quand on veut changer la police ponctuellement, ça peut être sympa :
    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
     
    program ex190512A;
    uses Flash8Ext;
     
    {$FRAME_WIDTH 200}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND $eeeeee}
     
    var
      t:TextField;
     
    begin
      t:=TextField.Create(nil,'t',0,0,0,200,200);
      t.wordWrap:=True;
      t.html:=True;
      t.htmlText:=
      'Ceci est un objet de type <font face="Arial" size="40">TextField</Font>'+#13 +
      'utilisant une balise HTML.';
    end.


    et la couleur :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    'Ceci est un objet de type <font face="Arial" size="40" color="#ffff00">TextField</Font>'+#13 +
      'utilisant une balise HTML.';


    @+

  11. #11
    Membre expérimenté
    ce qui est intéressant aussi, c'est l'utilisation de la police symbol :
    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
     
    program ex190512A;
    uses Flash8Ext;
     
    {$FRAME_WIDTH 200}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND $eeeeee}
     
    var
      t:TextField;
     
    begin
      t:=TextField.Create(nil,'t',0,0,0,200,200);
      t.wordWrap:=True;
      t.html:=True;
      t.htmlText:=
       'la taille d''un cheveu peut faire 80 <font face="Symbol" size="14">m</Font>'+'m';
    end.


    c'est important !

    c'est bien...

  12. #12
    Rédacteur/Modérateur

    Génial ! J'avais essayé mais je n'avais pas su l'écrire comme il faut.
    Ça ouvre pas mal de possibilités, surtout qu'il s'agit d'une variable !

  13. #13
    Expert éminent sénior
    Pour ma part je n'ai travaillé que sur l'unité Flash8, toutes les autres viennent de Peter Gabor....et en fait je continue à faire évoluer uniquement Flash8

    pour la mise en forme du texte, il suffit en effet d'ajouter les propriétés html et htmlText, mais j'ai découvert il y a peu trois choses intéressantes...mais je fais un nouveau thread à ce sujet avec une nouvelle version du compilateur
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Membre expérimenté
    , on attend ça avec impatience...

    Bonne soirée

    @+

###raw>template_hook.ano_emploi###