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

Free Pascal Discussion :

[Free Pascal] Intégrer des valeurs dans un menu dynamique


Sujet :

Free Pascal

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    Points : 34
    Points
    34
    Par défaut [Free Pascal] Intégrer des valeurs dans un menu dynamique
    Salut,

    j'ai toujours un petit probleme avec mon menu dynamique.

    J'utilise l'unité graph;

    On peut afficher du texte dans une nouvelle fenetre avec la commande out text(X,Y,'bonjour').
    mais peut on récupérer du texte saisit par l'utilisateur grace à une commande InText par exemple?

    Pour l'instant j'arrive juste à récupérer les valeurs saisie par l'utilisateur dans la fenetre MS-dos et c'est un peu galère de gérer les deux fenetres.

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Ca marche très bien avec readln et readkey.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    avec readln et readkey on récupère des valeurs tapées dans la fenetre msdos. C'est à dire que dès que l'on veut entrer quelquechose au clavier, on est obligé de sélectionner la fenetre msdos alors que la fenetre active est celle qui comporte le menu.

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Tu utilises quel compilateur ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    freepascal pour windows

  6. #6
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Et ca marche pas readln et readkey ??

    Sinon tu peux aller faire un tour dans l'aide de ton compilateur, ca mange pas de pain...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    Si sa marche avec readln et readkey mais le probleme c'est que quand j'execute mon programme j'ai une fenetre qui s'ouvre et qui affiche mon menu dynamique. C'est donc cette fenetre qui est active et la fenetre msdos est elle inactive.
    Quand on veut récupérer des valeurs avec readln et readkey il faut que ce soit la fenetre msdos soit active. Pour l'activer je suis obliger de cliquer dessus avec ma souris. J'aimerais pouvoir rendre active cette fenetre automatiquement.

  8. #8
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 946
    Points : 59 446
    Points
    59 446
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Pourquoi ne lances-tu pas ton application directement, sans passer par la ligne de commande ?

  9. #9
    Membre habitué
    Avatar de Stormy_Ordos
    Profil pro
    Expert sécurité informatique
    Inscrit en
    Mars 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 91
    Points : 166
    Points
    166
    Par défaut
    Bonjour!

    Voila, je ne sais pas si ça peut t'aider, mais j'avais il y a un bout de temps développé une procédure assez lourde en Graph pour faire une sorte de Readln :

    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
     
    uses newdelay, crt, graph;
     
    function Input(X, Y : integer) : String; {A noter que les valeurs en X et
                                              Y employées sont à modifier selon
                                              la fonte.}
    var Nini  : string;
        Key   : char;
     
    begin
         Nini:='';
         Moveto(X,Y);
         Outtext('Entrez le N initial : ');
         OuttextXY(X+120,Y,'_');
         i:=0;
         Repeat
               Key:=readkey;
               If ((key<>#13) and (Key<>#27)) then
               begin
                    Bar(X+120,Y-2,X+180,Y+10);
                    inc(i);
                    Nini:=Nini+Key;
                    OuttextXY(X+120,Y,Nini);
                    OuttextXY(X+120+(i*6),Y,'_');
               end;
               If (key=#27) then Nini:='';
         Until ((key=#27) or (key=#13));
         Input:=Nini;
    end;
    Bon. Vu qu'il a fallu que je l'extraie d'un programme sur des calculs de courbes, ya peut-être des erreurs, mais sinon tout est là. Tu noteras que tu ne peut pas revenir sur une erreur, mais tu pourras facilement modifier cela .

    a++

  10. #10
    Membre habitué
    Avatar de Stormy_Ordos
    Profil pro
    Expert sécurité informatique
    Inscrit en
    Mars 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 91
    Points : 166
    Points
    166
    Par défaut
    Ah oui, je viens d'y penser, tu auras peut-être à renommer la fonction (Input ça fait pas très catholique et ça va poser problème avec Big Brother la console).

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    Merci pour vos réponses.

    Pour répondre à Alcatîz, j'ai quand meme besoin de ma fenetre ms dos pour récupérer certaines valeurs entrées par l'utilisateur.

    Pour Stormy_Ordos je pense que je vais rester avec mes deux fenetres meme si sa fait pas tres pro de cliquer à chaque fois sur ma fenetre ms-dos pour saisir les valeurs désirées.

  12. #12
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Citation Envoyé par boullery
    Pour répondre à Alcatîz, j'ai quand meme besoin de ma fenetre ms dos pour récupérer certaines valeurs entrées par l'utilisateur.
    Pourquoi tu ne fais pas tout en mode graphique ? Ca serait plus simple, et plus "pro"...

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    On revient au probleme de depart. J'ai besoin de ma fenetre ms dos pour récupérer les valeurs que l'utilisateur entre au clavier

  14. #14
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Oui mais tu peux récupérer des valeurs de la même façon en mode graphique, ca marche...

  15. #15
    Membre habitué
    Avatar de Stormy_Ordos
    Profil pro
    Expert sécurité informatique
    Inscrit en
    Mars 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 91
    Points : 166
    Points
    166
    Par défaut
    Le blème c'est que Readln ne fonctionne qu'en mode Texte, donc ça fait un peu "sale" quand tu l'utilises dans un mode graph. Du coup, la question est : Est-ce que, dans ton prog, l'utilisateur peut entrer des Chars sans revenir à ta fenêtre DOS parallèle ? Si oui, je te renvoies à la procédure que j'ai écrite (simule un Readln en mode Graph). Si non, à moins de comprendre un minimum l'assembleur, ça va être compliqué.

    a++

  16. #16
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    L'utilisateur n'entre que des char au clavier. Dans ta procedure tu définis une zone de la fenetre pour que l'utilisateur entre ses données?

  17. #17
    Membre habitué
    Avatar de Stormy_Ordos
    Profil pro
    Expert sécurité informatique
    Inscrit en
    Mars 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 91
    Points : 166
    Points
    166
    Par défaut
    Voila!

    J'ai remis la fonction à jour (finalement l'adaptation ne s'était pas faite sans un bon nombre d'erreurs ). Tu devrais pouvoir la faire tourner directement (sous Turbo ça tourne rond!). Pour répondre à ta question, tu passes à la fonction (joliment renommée InLn ) comme paramètres l'abscisse et l'ordonnée de la fenêtre active où tu veux que la saisie s'effectue. Les espaces et la casse sont gérés, mais pas la suppression(pour annuler la saisie, appuie sur ESC; pour confirmer, appuie sur ENTER).
    Ex:
    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
     
    uses newdelay, crt, graph;
     
    var GraphDrv,GraphMd : integer;
    const Path : string = 'c:\tp\bgi';
     
    function InLn(X, Y : integer) : String; {A noter que les valeurs en X et
                                             Y employées sont à modifier selon
                                             la fonte.}
    const PoliceSize = 8;                   {la taille de la police .CHR employée
                                             est importante car elle permet
                                             d'aligner le curseur sur le caractère
                                             actif. Par défaut un caractère BGI
                                             est une matrice de 8x8 pixels mais
                                             ça peut varier(TriplexFont,Smallfont
                                             etc...)}
     
    var Nini  : string;
        Key   : char;
        i     : integer;
     
    begin
         Setcolor(15);
         Nini:='';
         Moveto(X,Y);
         Outtext('Entrez le N initial : ');   {la phrase est un résidu}
         OuttextXY(X+180,Y,'_');
         i:=0;
         Setfillstyle(solidfill,0);
         Repeat
               Key:=readkey;
               If ((key<>#13) and (Key<>#27)) then
               begin
                    Bar(X+180,Y-10,GetmaxX,Y+15);   {Note : cette ligne est a modifier
                                                     selon tes besoins évidemment}
                    inc(i);
                    Nini:=Nini+Key;
                    OuttextXY(X+180,Y,Nini);
                    OuttextXY(X+180+(i*PoliceSize),Y,'_');
               end;
               If (key=#27) then Nini:='';
         Until ((key=#27) or (key=#13));
         InLn:=Nini;
    end;
     
    begin
         Initgraph(GraphDrv,GraphMd,Path);
         Cleardevice;
         InLn(5,5);
    end.
    vu qu'elle est toute fraiche émoulue de mon compilo, n'hésite pas à signaler si ya quelque chose qui tourne pas sur le tien.

    a++

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

Discussions similaires

  1. [XL-2003] Récupérer des valeurs dans une colonne dynamique
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/11/2013, 12h03
  2. Réponses: 1
    Dernier message: 05/10/2009, 09h56
  3. Survol des liens dans un menu dynamique
    Par leejunfan dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/04/2008, 17h28
  4. Réponses: 5
    Dernier message: 15/06/2007, 11h58
  5. Comment intégrer des onglets, sur un menu dynamique Javascript
    Par kervano dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 04/04/2007, 13h14

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