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 :

Equivalent de Read


Sujet :

Flash Pascal

  1. #1
    Rédacteur/Modérateur

    Equivalent de Read
    Bonjour !

    J'aimerais savoir comment je peux faire entrer un mot à l'utilisateur et attribuer ce mot comme valeur à une variable : bref l'équivalent de ce que fait l'instruction "Read".

    Dans l'exemple Hello, on voit comment l'utilisateur peut saisir du texte :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    edit1.type_:='input';
    edit1.text:='Hello!';


    Que faudrait-il ajouter pour que l'utilisateur puisse valider sa réponse en appuyant sur Entrée, et que cette réponse reçoive un nom de variable ? Faut-il écrire la procédure de A à Z ou existe-t-elle déjà ? (Et comment faire apparaître le curseur sans que l'utilisateur ait à cliquer sur le bouton comme c'est le cas dans l'exemple ?)

    En général il suffit de demander à Google un "code example" ou un "code Beispiel" pour trouver ce genre de choses. Mais avec Flash Pascal la recherche ne donne rien : on ne trouve pas de ces petits exemples qui vous mettent le pied à l'étrier.


  2. #2
    Expert éminent sénior
    Bonjour,

    tu trouveras plus facilement des réponses en cherchant sur ActionScript vu que FlashPascal utilise les objets ActionsScript 2.

    il faut utiliser key.addListener() pour indiquer que ton objet répond au évènements clavier et c'est onKeyDown qui est invoqué.

    tu trouveras en pièce jointe une version récente du compilateur avec un début d'IDE en beta et un exemple d'utilisation du TextField comme zone de saisie

    .

    NB: Peter Gabor a introduit dans FlashPascal 0.8 les alias sur les méthodes et propriétés d'objet...dans la version attachée le compilateur est capable de différencier le mot clé Pascal "type" et la propriété "type" d'une classe Flash, l'alias n'est donc plus nécessaire.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    Merci m'sieur !

    Je crois bien qu'aujourd'hui je vais écrire mon premier programme en Flash Pascal !

  4. #4
    Rédacteur/Modérateur

    Bonjour !

    Suite de mes efforts pour apprendre à utiliser Flash Pascal.

    J'ai travaillé avec les outils proposés par Paul Toth (voir plus haut dans cette discussion). Je voulais transcrire le petit programme que j'ai écrit pour le calcul de la date de Pâques.

    Voici ce que j'ai pu faire :

    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
    program BrouillonDateDePaques;
     
    {$FRAME_WIDTH  320}
    {$FRAME_HEIGHT 200}
     
    uses
      Flash8;
     
    type
      TEditBox = class(TextField)
        procedure onKeyDown;
      end;
     
    var
      e: TEditBox;
      t: TextField;
     
      A,G,C,C4,E_,H,K,P,Q,I,B,J1,J2,R: Integer;
     
    procedure TEditBox.onKeyDown;
    begin
      if Key.getAscii = 13 then
      begin
        //t.Text := e.Text;
     
        A:=0;
        A:=A+1*(Ord(e.Text[4])-48);
        A:=A+10*(Ord(e.Text[3])-48);
        A:=A+100*(Ord(e.Text[2])-48);
        A:=A+1000*(Ord(e.Text[1])-48);
     
        G:=A mod 19;
        C:=A div 100;
        C4:=C div 4;
        E_:=(8*C+13) div 25;
        H:=(19*G+C-C4-E_+15) mod 30;
        K:=H div 28;
        P:=29 div (H+1);
        Q:=(21-G) div 11;
        I:=(K*P*Q-1)*K+H;
        B:=A+(A div 4);
        J1:=B+I+2+C4-C;
        J2:=J1 mod 7;
        R:=28+I-J2;
     
        t.Text := 'Pour A='+IntToStr(A)+', R='+IntToStr(R)+'.';
      end;
    end;
     
    begin
      e := TEditBox.Create(nil, 'input', 0, 10, 10, 150, 21);
      e.type := 'input';
      Selection.setFocus(e);
      Key.addListener(e);
     
      t := TextField.Create(nil, 'output', 1, 10, 40, 150, 21);  
    end.


    J'espère trouver le moyen de l'améliorer.

    Si j'arrive à quelque chose de mieux, je voudrais en faire une page html avec l'exécutable et le code, sur le modèle des pages de démonstration de Flash Pascal : FlashMine


  5. #5
    Expert éminent sénior
    tu peux regarder aussi l'exemple Calc pour une saisie par boutons
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Rédacteur/Modérateur

    Merci du conseil. Très joli exemple, soit dit en passant !

  7. #7
    Rédacteur/Modérateur

    Objet Flash pour le calcul perpétuel de la date de Pâques
    J'ai fini mon exemple de code Flash Pascal. Finalement, à la place d'une entrée utilisateur, je me suis servi de l'unité Date pour obtenir l'année courante et faire automatiquement le calcul pour cette année-là.

    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
    program DateDePaques;
     
    {$FRAME_WIDTH 360}
    {$FRAME_HEIGHT 24}
     
    uses Flash8Ext, Date;
     
    var
      t:TextField;
      f:TextFormat;
     
      Jour:TDate;
      An:Integer;
     
      G,C,C4,E,H,K,P,Q,I,B,J1,J2,R: Integer;
     
    begin
      t:=TextField.Create(nil,'t',0,0,0,360,24);
      f:=TextFormat.Create('Tahoma',16);
     
      Jour:=TDate.Create;
      An:=Jour.getFullYear;
     
      G:=An mod 19;
      C:=An div 100;
      C4:=C div 4;
      E:=(8*C+13) div 25;
      H:=(19*G+C-C4-E+15) mod 30;
      K:=H div 28;
      P:=29 div (H+1);
      Q:=(21-G) div 11;
      I:=(K*P*Q-1)*K+H;
      B:=An+(An div 4);
      J1:=B+I+2+C4-C;
      J2:=J1 mod 7;
      R:=28+I-J2;
     
      t.text:='En '+IntToStr(An)+', le dimanche de Pâques est le ';
     
      if R<32 then
        t.text:=t.text+IntToStr(R)+' mars.'
      else
        t.text:=t.text+IntToStr(R-31)+' avril.';
     
      t.setTextFormat(f);
    end.


    Cela donne un objet Flash (.swf) qui se présente comme une simple ligne de texte, mais qui est bel et bien un programme s'exécutant à chaque ouverture de la page.