FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Problème de math
par papydall Aujourd'hui à 1:53

» A propos des attributs de fichier
par papydall Hier à 14:33

» Problème de math
par Marc37 Sam 21 Oct 2017 - 23:04

» I Love You
par papydall Sam 21 Oct 2017 - 19:22

» Un petit "coucou" à tous les Panoramiciens !
par mindstorm Sam 21 Oct 2017 - 17:06

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Msgbox/Inputbox

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Msgbox/Inputbox   Jeu 15 Jan 2015 - 1:15

Il existe déjà en Panoramic des fonctions Message qui permettent d'afficher un certain nombre d'infos ou de proposer certains choix.
Malheureusement ces choix sont en langue anglaise (Yes, No, Cancel etc.)
Voici une sub qui utilise un script vbs et qui permet d'utiliser la fonction Msgbox avec plus de possibilités (choix du titre, du texte, et les boutons sont en langue française).
L'essentiel de la sub est le mode d'emploi en tête, avec les paramètres à fournir, notamment le 'code' composé de 4 paramètres combinables (à additionner), le code en retour (action de l'utilisateur) est dans le presse-papier:
Code:
DIM tit$,txt$,code
tit$ = "Ceci est le titre"
txt$ = "Et ceci est le texte"
code = 51: ' (= 3 + 48 + 0 + 0: boutons Oui,Non,Annuler et icône warning)
Msgbox(tit$,txt$,code)
print clipboard_string_paste$: ' code retour: action de l'utilisateur
END
" ==============================================================================
SUB Msgbox(Tit$,Txt$,code)
' Affichage d'une msgbox de titre Tit$ et de texte Txt$
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' PARAMÈTRES (code) 4 valeurs combinables (additionables):
' boutons affichés:
'   0= bouton OK seul
'   1= boutons OK, Annuler
'   2= boutons Abandonner, Recommencer, Ignorer
'   3= boutons Oui, Non, Annuler
'   4= boutons Oui, Non
'   5= boutons Recommencer, Annuler
' icône du message:
'   16= icône message critique
'   32= icône point d'interrogation
'   48= icône message warning
'   64= icône message d'information
' bouton par défaut:
'   0=   1er bouton est le bouton par défaut
'   256= 2ème bouton est le bouton par défaut
'   512= 3ème bouton est le bouton par défaut
'   768= 4ème bouton est le bouton par défaut
' comportement:
'   0=    Bloque l'application courante en attente de réponse de l'utilisateur
'   4096= Bloque toutes les applications en attente de réponse
' CODE RETOUR:
'   1 OK cliqué
'   2 Annuler cliqué
'   3 Abandonner cliqué
'   4 Recommencer cliqué
'   5 Ignorer cliqué
'   6 Oui cliqué
'   7 Non cliqué
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DIM_LOCAL fvb$,scr$,p$,q$: q$ = CHR$(34)
fvb$ = "C:\Temp\Msgb.vbs"
scr$ = "C:\Temp\Vbscript.vbs"
FILE_OPEN_WRITE 9,fvb$
    FILE_WRITELN 9,"x=msgbox("+q$+Txt$+q$+","+STR$(code)+","+q$+Tit$+q$+")"
    FILE_WRITELN 9,"WScript.Echo x"
FILE_CLOSE 9
p$ = "Cmd.exe /C Cscript.exe "+fvb$+" | clip"
FILE_OPEN_WRITE 9, scr$: ' ===== Création du script .vbs =====
    FILE_WRITELN 9, "CreateObject("+q$+"Wscript.Shell"+q$+").Run "+q$+p$+q$+",0,True"
FILE_CLOSE 9
EXECUTE_WAIT "Wscript.exe "+scr$: ' ===== Exécution du script =====
FILE_DELETE scr$: FILE_DELETE fvb$
END_SUB
' ==============================================================================


Dernière édition par JL35 le Jeu 15 Jan 2015 - 23:01, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 1:45

Salut JL35

Merci pour le patage.

Deux choses à dire :
1 – Ligne 4
Code:
 code = 51:  ( = 3 + 48: boutons Oui,Non,Annuler et icône warning)
Remplacer la parenthèse ouvrante par REM (‘)

2 – Tu utilises , ligne 50

Code:
 p$ = "Cmd.exe /C cscript.exe "+fvb$+" | clip"

Ceci va afficher   Microsoft ® Windows Script Host Version 5.8 Copyright © …. puis le code retour.

Pour éviter ce message de copyright (que j'aime pas !!!) , il vaut mieux exécuter le script en mode Wscript et non en Cscript (bof! ce n'est qu'un détail)
Donc, la ligne 50 devient
Code:
 p$ = "Cmd.exe /C Wscript.exe "+fvb$+" | clip"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 1:58

Bonsoir papydall,

Tu as évidemment raison pour le 1er point, commentaire rajouté en dernière minute ... il faut bien lire:
Code:
code = 51: '  (= 3 + 48: boutons Oui,Non,Annuler et icône warning)

Par contre je ne suis pas d'accord sur le 2ème point, c'est justement si je fais p$ = ... Wscript.exe que j'ai l'affichage de la fenêtre résultat
'Windows Script Host' (tel quel) avec le code retour et un bouton 'OK' à cliquer, ce que je ne veux pas !
Avec p$ = ...Cscript.exe je n'ai pas d'affichage par le script, seulement le résultat dans le presse-papier.
Et jusqu'à preuve du contraire, je maintiens ma ligne 49 (et non 50)
Code:
p$ = "Cmd.exe /C cscript.exe "+fvb$+" | clip"

Bizarre ce fonctionnement inversé entre nous deux ???  scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 2:07

Voici ce que ça donne chez moi avec Cscript
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 2:15

Et ce que ça donne chez moi avec wscript:


Je suis sous W7
Alors peut-être que le comportement est différent suivant l'os ??? bizarre quand même...


Dernière édition par JL35 le Jeu 15 Jan 2015 - 2:18, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 2:18

Je suis également sous W7.

Je pense que c’est une question de l’environnement d’exécution de script par défaut.
Chez moi j’exécute (par défaut) mes script en mode WScript.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 2:21

Je ne saurais pas te dire tout de suite, et à cette heure-ci, sous quel environnement j'exécute mes scripts...
Autrement dit il faut essayer les deux solutions pour ne pas avoir l'affichage du code retour par le script...

Sans doute des éléments de réponse ici: http://tahe.developpez.com/web/vbscript/?page=page_2 mais on verra demain !

PS on dirait bien pourtant que wscript affiche les résultats dans une fenêtre, et cscript sur la console, et c'est bien la console que je veux intercepter.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 2:33

Merci pour le lien.
Je ne manquerai pas d’y jeter un œil.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 2:55

J’ai trouvé le pourquoi du comment.

Sous l’invite de commande, taper Wscript puis <ENTREE>
Sur la fenêtre windows qui s’affiche, décocher Afficher le logo lorsque le script est exécuté dans la console de commande

On ne finit jamais d’apprendre !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 10:00

Merci pour cette nouvelle astuce
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 12:20

Bravo papydall, tu as mis le doigt dessus ! et effectivement c'est bien décoché chez moi ce qui est normal si on veut l'utiliser depuis panoramic en format ligne de commande et intercepter le résultat de manière transparente.
Ça doit être coché implicitement, et j'ai dû le décocher... autrefois...
En tout cas, merci à toi pour la participation, efficace comme toujours.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 12:28

C’est en échangeant des propos (même hors sujet parfois) qu’on avance !
Vive Le Forum !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 15 Jan 2015 - 13:59

J' ai un petit souci...
J' ai effectué la manip de Papydall mais lorsque je clique sur un des boutons du message, j' ai un chiffre qui doit correspondre à la valeur renvoyée qui apparait sur le Form 0 comme si il y avait un Print.
A noté qu' avant la manip, j' avais une fenêtre qui s' ouvrait et m' affichait cette valeur.
scratch

Quel couillon ! j' avais zappé la ligne du Print... Embarassed
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Msgbox/Inputbox   Jeu 15 Jan 2015 - 23:00

Poursuivons nos investigations...
Voici maintenant une Inputbox (boîte de saisie). (je modifie le titre du post pour l'ajouter)
Certes, la fonction existe en panoramic (Message_Input), mais cette sub-ci a l'avantage d'avoir ses boutons en français (!), et surtout de pouvoir être positionnée où on veut sur l'écran.
Je ne sais pas dans quelle unités sont définies les coordonnées, mais j'ai remarqué empiriquement qu'il faut multiplier les valeurs par 15 pour avoir la bonne position en pixels (c'est fait dans la sub).
Code:
DIM Tit$,Txt$,Def$,x,y
Tit$="Demande d'âge"
Txt$="Quel est votre âge ?"
Def$ = "20": ' valeur par défaut
x = 300: y = 150
Inputbox(Tit$,Txt$,Def$,x,y)
PRINT CLIPBOARD_STRING_PASTE$
END
' ==============================
SUB Inputbox(Tit$,Txt$,Def$,x,y)
' Affichage d'une boîte de saisie de titre Tit$, texte Txt$, par défaut Def$
' Position de la boîte en x,y pixels, résultat dans le presse-papier
' Si on clique 'Annuler', la chaîne rendue est vide.
DIM_LOCAL fvb$,scr$,p$,a$,q$: q$ = CHR$(34)
fvb$ = "C:\Temp\Msgb.vbs"
scr$ = "C:\Temp\Vbscript.vbs"
FILE_OPEN_WRITE 9,fvb$
    a$ = q$+Txt$+q$+","+q$+Tit$+q$+","+q$+Def$+q$+","+STR$(x*15)+","+STR$(y*15)
    FILE_WRITELN 9,"x=inputbox("+a$+")"
    FILE_WRITELN 9,"WScript.Echo x"
FILE_CLOSE 9
p$ = "Cmd.exe /C Cscript.exe "+fvb$+" | clip"
FILE_OPEN_WRITE 9, scr$: ' ===== Création du script .vbs =====
    FILE_WRITELN 9, "CreateObject("+q$+"Wscript.Shell"+q$+").Run "+q$+p$+q$+",0,True"
FILE_CLOSE 9
EXECUTE_WAIT "Wscript.exe "+scr$: ' ===== Exécution du script =====
FILE_DELETE scr$: FILE_DELETE fvb$
END_SUB
@ygeronimi
Tu remarqueras que j'ai mis un print après l'exemple d'appel à la sub, pour afficher le résultat dans Form 0 Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Msgbox/Inputbox   Ven 16 Jan 2015 - 0:07

Tant de peine pour échanger un Cancel par un Annuler et garder en commun le OK !
Code:
 print message_input$("Demande d'âge", "Quel est votre âge ?" , "20")

Mais bon : ce n’est  que la poursuite des nos investigations… puisque tu t'adresses à des gens âgés de 20 ans. Tu en fais partie, toi ?

Quand j’étais plus jeune d’une demi-année ( Laughing  ), j’ai posté le code d’un message dont la fenêtre est autorefermable  qui n’a suscité aucune réaction.
En voici un rappel :

Code:

rem ============================================================================
'                  Message autorefermable
' Afficher un message d'information qui se ferme automatiquement après n secondes
'          Appel : message_Auto_Close(msg$, duree)
rem ============================================================================
message_Auto_Close("Cette fenêtre va se fermer toute seule !!!",5)
end
rem ============================================================================
' Script VBS pour afficher un message d'information qui se ferme automatiquement
' apès une durée de duree secondes si l'utilisateur ne ferme pas lui-même la
' fenêtre du message
SUB message_Auto_Close(msg$,duree)
    dim_local f$,g$,d$
    f$ = "c:\temp\Msg_Auto_Close.vbs" : ' Fichier temporaire contenant le script
    g$ = chr$(34) : ' guillemets
    d$ = str$(duree)
    FILE_OPEN_WRITE 9999, f$
    file_writeln 9999,"Set WshShell = WScript.CreateObject("+g$+"Wscript.Shell"+g$+")"
    file_writeln 9999,"ret = WshShell.popup("+g$+msg$+g$+" & vbcrlf &" +g$+"     Autofermeture dans : "+d$+" secondes"+g$+","+d$+","+g$+"Information"+g$+")"
    FILE_CLOSE 9999 : ' Fin de l'enregistrement
    EXECUTE_WAIT f$ : ' Exécution du script
    FILE_DELETE f$  : ' supprimer le fichier du script
END_SUB
rem ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Msgbox/Inputbox   Ven 16 Jan 2015 - 0:36

Ouh là ! je suis bien loin de mes 20 ans (en avant, pas en arrière ! Very Happy )
Certes, il y a le Message_Input, mais en british, et surtout tu ne peux pas le positionner où tu veux, il est automatiquement centré.
Par contre pour le Msgbox il n'y a apparemment aucun moyen de le positionner, c'est centré d'office.
J'ai simplifié les deux subs, il n'y a plus création que d'un seul fichier provisoire d'exécution:
Code:
' ==============================
SUB Inputbox(Tit$,Txt$,Def$,x,y)
' Affichage d'une boîte de saisie de titre Tit$, texte Txt$, par défaut Def$
' Position de la boîte en x,y pixels, résultat dans le presse-papier
' Si on clique 'Annuler', la chaîne rendue est vide.
DIM_LOCAL scr$,a$,q$: q$ = CHR$(34)
scr$ = "C:\Temp\Vbscript.vbs"
FILE_OPEN_WRITE 9,scr$
    a$ = q$+Txt$+q$+","+q$+Tit$+q$+","+q$+Def$+q$+","+STR$(x*15)+","+STR$(y*15)
    FILE_WRITELN 9,"res=inputbox("+a$+")"
    FILE_WRITELN 9,"Set WshShell = WScript.CreateObject("+q$+"WScript.Shell"+q$+")"
    FILE_WRITELN 9,"WshShell.Run "+q$+"cmd.exe /c echo "+q$+" & res & "+q$+" | clip"+q$+", 0, TRUE"
FILE_CLOSE 9
EXECUTE_WAIT "Wscript.exe "+scr$: ' ===== Exécution du script =====
FILE_DELETE scr$
END_SUB
' ==============================================================================
SUB Msgbox(Tit$,Txt$,code)
' Affichage d'une msgbox de titre Tit$ et de texte Txt$
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' PARAMÈTRES (code) 4 valeurs combinables (additionables):
'   boutons affichés:
'       0= 'OK' seul
'       1= 'OK', 'Annuler'
'       2= 'Abandonner', 'Recommencer', 'Ignorer'
'       3= 'Oui', 'Non', 'Annuler'
'       4= 'Oui', 'Non'
'       5= 'Recommencer', 'Annuler'
'   icône du message:
'       16= message critique
'       32= point d'interrogation
'       48= message d'alerte
'       64= message d'information
'   bouton par défaut:
'       0=   1er bouton
'       256= 2ème bouton
'       512= 3ème bouton
'       768= 4ème bouton
'   comportement:
'       0=    Bloque l'application courante en attente de réponse de l'utilisateur
'       4096= Bloque toutes les applications en attente de réponse
' CODE RETOUR (bouton cliqué):
' -----------
'       1 'OK'
'       2 'Annuler'
'       3 'Abandonner'
'       4 'Recommencer'
'       5 'Ignorer'
'       6 'Oui'
'       7 'Non'
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DIM_LOCAL scr$,q$: q$ = CHR$(34)
scr$ = "C:\Temp\Vbscript.vbs"
FILE_OPEN_WRITE 9,scr$
    FILE_WRITELN 9,"res=msgbox("+q$+Txt$+q$+","+STR$(code)+","+q$+Tit$+q$+")"
    FILE_WRITELN 9,"Set WshShell = WScript.CreateObject("+q$+"WScript.Shell"+q$+")"
    FILE_WRITELN 9,"WshShell.Run "+q$+"cmd.exe /c echo "+q$+" & res & "+q$+" | clip"+q$+", 0, TRUE"
FILE_CLOSE 9
EXECUTE_WAIT "Wscript.exe "+scr$: ' ===== Exécution du script =====
FILE_DELETE scr$
END_SUB
' ==============================================================================
Pour l'affichage d'un message non bloquant, il y a eu aussi ceci: http://panoramic.free-boards.net/t3686-message-passant?highlight=message+temporaire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Msgbox/Inputbox   Ven 16 Jan 2015 - 0:48

Bon.
Un cadeau rien que pour à toi.
Ne dis rien à personne !

Spoiler:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Msgbox/Inputbox   Ven 16 Jan 2015 - 0:52

Eh bien merci mon cher papydall pour ce joli cadeau, je ne vais pas manquer de l'accrocher au-dessus de mon bureau pour l'avoir en permanence sous les yeux ! Wink
Les autres ne savent pas ce qu'ils ratent !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Msgbox/Inputbox   

Revenir en haut Aller en bas
 
Msgbox/Inputbox
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Msgbox/Inputbox
» InputBox Engine V2.1 - Master47

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: