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
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    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 : 40

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

  3. #3
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    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 : 40

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

  5. #5
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    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 : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    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
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    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 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 996
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Pourquoi ne lances-tu pas ton application directement, sans passer par la ligne de commande ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  9. #9
    Membre éprouvé
    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
    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 éprouvé
    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
    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
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    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 : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    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
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    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 : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    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 éprouvé
    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
    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
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    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 éprouvé
    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
    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