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
» KGF_dll - nouvelles versions
par bignono Aujourd'hui à 20:14

» Compilateur FBPano
par jean_debord Aujourd'hui à 11:07

» Documentation de KGF
par Klaus Hier à 22:52

» Zoom sur une portion d'écran
par JL35 Hier à 21:51

» double guillemets "" dans un EDIT
par pascal10000 Hier à 21:08

» Recherche d'une expression dans un source
par Marc 37 Hier à 13:08

» Tracer une grille n'importe où sur l'écran
par JL35 Dim 19 Nov 2017 - 22:14

» TourD Version 2
par Klaus Sam 18 Nov 2017 - 23:58

» La métamatière et le peuple
par JL35 Ven 17 Nov 2017 - 21:18

» Capture d'une zone de l'écran total
par JL35 Ven 17 Nov 2017 - 18:41

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 17 Nov 2017 - 11:49

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

» Bizzarerie dans Edge
par Marc 37 Mer 15 Nov 2017 - 17:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
27282930   
CalendrierCalendrier

Partagez | 
 

 Conversion ascii alphabet

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2
AuteurMessage
Fhoest



Nombre de messages : 34
Age : 41
Localisation : Nord
Date d'inscription : 04/01/2015

MessageSujet: Re: Conversion ascii alphabet   Jeu 8 Jan 2015 - 20:17

ygeronimi a écrit:
La dll de Klaus pourrait réduire ton programme de quelques lignes
avec l' appel pour connaitre l etat du clavier ( caps lock )...

...moi je dis ça...mais je dis rien. Laughing
Merci,
voici le code avec la dll.
en plus cela me permet de voir et comprendre le fonctionnement d'appel dll, qui est plutôt simple.
très bon boulot (pas si débile que ça après réflexion n'est ce pas ?)
sunny
Code:
REM définition et instanciation variables
DIM X%,min$,maj$,MODE$,TEMP%
min$ = "abcdefghijklmnopqrstuvwxyz"
maj$ =upper$(min$)
' ----------------------------------
' ----------------------------------
REM définition des LABELS
LABEL OPT_CHOIX,LBL_CONVERSION,EVENT_RAFRAICHIR, LBL_FINDCAPSLOCK,EVENT_FINDCAPSLOCK

' ----------------------------------
' ----------------------------------
REM code et propriété CONTAINER
CONTAINER 27
WIDTH 27, 610
HEIGHT 27 , 112
COLOR 27, 25,255,150
' ----------------------------------
' ----------------------------------
REM CASE à cochez minuscule ou majuscule
OPTION 28 : CAPTION 28, "Minuscule" : TOP 28 , 90 : LEFT 28, 200 : MARK_ON 28
MODE$ = min$
ON_CLICK 28, OPT_CHOIX
OPTION 29 : CAPTION 29, "Majuscule" :TOP 29 , 90 : LEFT 29, 300
ON_CLICK 29, OPT_CHOIX
' ----------------------------------
' ----------------------------------
REM création bouton alphabet
' ----------------------------------
FOR X% = 1 to 26
    BUTTON X%
    CAPTION X%, MID$(MODE$,X%,1) : ON_CLICK X%,LBL_CONVERSION
    IF X% >= 1 and X% =< 8 then LEFT X%, X% *75 - 70 : TOP X%,10
    IF X% >= 9 and X% =< 16
      LEFT X%, ((X%-8) *75) - 70
      TOP  X%, 35
    END_IF
    IF X% >= 17 and X% =< 24
      LEFT X%, ((X%-16)*75) - 70
      TOP X%,60
    END_IF
    IF X% => 25
      LEFT X%, ((X%-24)*75) - 70
      TOP X%,85
    END_IF
NEXT X%
' ----------------------------------
BUTTON 30 : TOP 30,85 : LEFT 30, 530 : ON_CLICK 30,EVENT_RAFRAICHIR : CAPTION 30, "RAFRAICHIR"
BUTTON 32 : TOP 32,85 : LEFT 32, 455 : CAPTION 32 , "CapsLock_Off" : ON_CLICK 32,EVENT_FINDCAPSLOCK
' ----------------------------------
' ----------------------------------
REM hauteur & largeur de la FORM
' ----------------------------------
WIDTH 0,626 : HEIGHT 0,155
CAPTION 0 ,"Convertisseur ASCII"
ON_KEY_UP 0 , LBL_FINDCAPSLOCK

' ----------------------------------
' -----------------------------------
REM INIT PROPRIETE CAPSLOCK AVEC DLL DE KLAUS ET CONSEIL DE YGERONIMI
DLL_ON "KGF.dll"
    IF dll_call1("GetKeyboardState",20 )=2
    MARK_ON 29
    CAPTION 32, "CapsLock_On"
    ELSE
    MARK_ON 28
    CAPTION 32, "CapsLock_Off"
    END_IF
DLL_OFF
' ----------------------------------
' ----------------------------------
SET_FOCUS 0
END
' ----------------------------------
' ----------------------------------
' LABELS . & EVENT_BTN..............
' ----------------------------------
OPT_CHOIX:
  X% = NUMBER_CLICK
  SELECT X%
      CASE 28 : MODE$ = min$:REMPLISSAGE()
      CASE 29 : MODE$ = maj$:REMPLISSAGE()
      CASE 30: ' Ne rien faire , laisser MODE$ telle quelle
  END_SELECT
  RETURN
' ----------------------------------
LBL_FINDCAPSLOCK:
    IF SCANCODE = 20
      IF MODE$ = min$
          MODE$ = maj$
          REMPLISSAGE()
          CAPTION 32 , "CapsLock_On"
          MARK_ON 29
      ELSE
          MODE$ = min$
          REMPLISSAGE()
          CAPTION 32 , "CapsLock_Off"
          MARK_ON 28
      END_IF
    END_IF
    SET_FOCUS 0
RETURN
' ----------------------------------
LBL_CONVERSION:
    X% = NUMBER_CLICK
    IF NUMERIC(CAPTION$(X%)) < 1
      CAPTION X%, (ASC(CAPTION$(X%))) : SET_FOCUS 0
    ELSE
      TEMP% = VAL(CAPTION$(X%))
      CAPTION X%, CHR$(TEMP%) : SET_FOCUS 0
    END_IF
RETURN
REM ============================================================================
EVENT_RAFRAICHIR:
      REMPLISSAGE()
RETURN
' ----------------------------------
EVENT_FINDCAPSLOCK:
  IF CAPTION$(32)= "CapsLock_Off"
      MODE$ = maj$
      REMPLISSAGE()
      CAPTION 32 , "CapsLock_On"
      MARK_ON 29
  ELSE
      MODE$ = min$
      REMPLISSAGE()
      CAPTION 32 , "CapsLock_Off"
      MARK_ON 28
  END_IF
RETURN

' ----------------------------------
' ----------------------------------
' Routines ..........................
' ----------------------------------
SUB REMPLISSAGE()
    FOR X% = 1 to 26
        CAPTION X%, MID$(MODE$,X%,1) : ON_CLICK X%,LBL_CONVERSION
    NEXT X%
    SET_FOCUS 0
END_SUB
' ----------------------------------
@+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://programmer-en-vb.forumactif.org/
Yannick

avatar

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

MessageSujet: re   Jeu 8 Jan 2015 - 21:25

Je me suis posé la question de l' utilité de "caps lock" dans ton utilitaire... scratch

En fait, l' utilisateur s' en fou royalement puisque le but est de connaître le code ASCII d' une lettre
en minuscule ou en majuscule. Que le clavier soit verrouillé en majuscule ou pas, peu importe... Wink
Ou bien alors, j' ai raté quelque chose dans ma réflexion... Embarassed

Bref j' ai continué à jouer avec ton programme et revu à ma façon la deuxième partie.
Celle ou on entre un code et on a le caractère. Cela donne ça :
Code:
Dim no%        :' variable pour l' incrémentation des objets
Dim B%(26)    :' variables numéros des boutons
Dim B27%      :' variable numero button refresh
Dim CO%        :' variable numero container option
Dim O1%,O2%    :' variables numéros des options
Dim x%        :' la variable passe partout
Dim mode%      :' variable du mode (Minuscule ou Majuscule)
Dim etat%(26)  :' variables d' etat des boutons
Dim E1%        :' variable numero edit
Dim A1%,A2%    :' variable numero alpha
Label clic,change    :' événement click et change

' Form 0
height 0,170 : width 0,26+(13*21)
top 0,(screen_y-height(0))/2 : left 0,(screen_x-width(0))/2
font_name 0,"arial"
Caption 0,"ASCII"

' container_option
no%=no%+1 : CO%=no%
container_option no%
height no%,35 : width no%,width(0)-26
top no%,0 : left no%,5
caption no%,"  Mode  "

' option 1
no%=no%+1 : O1%=no%
Option no%
parent no%,CO% : top no%,15 : left no%,5
cursor_point no%
caption no%,"Minuscule"
mark_on no%
mode%=1
on_click no%,clic

' option 2
no%=no%+1 : O2%=no%
Option no%
parent no%,CO% : top no%,15 : left no%,120
cursor_point no%
caption no%,"Majuscule"
on_click no%,clic

' Buttons
for x%=1 to 26
  no%=no%+1 : B%(x%)=no%
  button no%
  width no%,21: height no%,21
  if x%<14
      top no%,35  : left no%,(21*x%)-16
  else
      top no%,57 : left no%,(21*(x%-13))-16
  end_if
  caption no%,chr$(x%+96) :font_bold no%
  cursor_point no%
  on_click no%,clic
next x%

' Button Refresh
no%=no%+1 : B27%=no%
Button no%
height no%,21 : width no%,100
top no%,79 : left no%,width(0)-(width(no%)+21)
caption no%,"Refresh"
cursor_point no%
on_click no%,clic

' Edit
no%=no%+1 : E1%=no%
Edit no%
width no%,30 : top no%,105 : left no%,80
hint no%,"Entrez un code ASCI, 0 à 255"
On_change no%,change

' Alpha1
no%=no%+1 : A1%=no%
Alpha no%
width no%,30 : top no%,108 : left no%,120
caption no%,"= Caractère =>"
font_color no%,255,0,0 : font_bold no%

' Alpha2
no%=no%+1 : A2%=no%
Alpha no%
width no%,30 : top no%,104 : left no%,200
caption no%,""
font_bold no% : font_size no%,14 : font_color no%,0,0,230

end

clic:
  if number_click=O1%
      mode%=1
      Maj_mode()
  end_if
  if number_click=O2%
      mode%=2
      Maj_mode()
  end_if
  if number_click<>O1% and number_click<>O2%
      for x%=1 to 26
        if B%(x%)=number_click
            Convert(x%)
        end_if
      next x%
  end_if
  if number_click=B27%
      Refresh()
  end_if
return

Sub Maj_mode()
  dim_local i%
  if mode%=1
      for i%=1 to 26
        caption B%(i%),chr$(96+i%)
      next i%
  else
      for i%=1 to 26
        caption B%(i%),chr$(64+i%)
      next i%
  end_if
End_sub

Sub Convert(z%)
  if etat%(z%)=0
      etat%(z%)=1
      if mode%=1
        caption B%(z%),Str$(asc(chr$(96+z%)))
      else
        caption B%(z%),Str$(asc(chr$(64+z%)))
      end_if
  else
      etat%(z%)=0
      if mode%=1
        caption B%(z%),Chr$(96+z%)
      else
        caption B%(z%),Chr$(64+z%)
      end_if
  end_if
End_sub

Sub Refresh()
  dim_local i%
  for i%=1 to 26
      Caption B%(i%),chr$(96+i%)
  next i%
  text E1%,""
  Mark_on O1%
End_sub

change:
  off_change E1%
  if len(text$(E1%))<4 and len(text$(E1%))>0
      if val(text$(E1%))<256
        caption A2%,chr$(val(text$(E1%)))
      else
        message "Code erroné !!!..."+chr$(13)+"0 à 255"
        text E1%,""
      end_if
  end_if
  if len(text$(E1%))=4 or len(text$(E1%))>4
      message "Code erroné !!!..."+chr$(13)+"0 à 255"
      text E1%,""
  end_if
  if len(text$(E1%))=0
      Caption A2%,""
  end_if
  on_change E1%,change
return


Dernière édition par ygeronimi le Jeu 8 Jan 2015 - 21:59, édité 3 fois (Raison : Ajout du bouton refresh)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Jeu 8 Jan 2015 - 21:36

Modif du code dans le post au dessus, petit bug... Embarassed
J' ai rajouté le bouton "refresh"... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Fhoest



Nombre de messages : 34
Age : 41
Localisation : Nord
Date d'inscription : 04/01/2015

MessageSujet: Re: Conversion ascii alphabet   Jeu 8 Jan 2015 - 23:04

ygeronimi a écrit:
Je me suis posé la question de l' utilité de "caps lock" dans ton utilitaire... scratch

En fait, l' utilisateur s' en fou royalement puisque le but est de connaître le code ASCII d' une lettre
en minuscule ou en majuscule. Que le clavier soit verrouillé en majuscule ou pas, peu importe... Wink
Ou bien alors, j' ai raté quelque chose dans ma réflexion... Embarassed
Oui et Non
Si tu appuis sur la touche du capslock ça permet de mettre les majuscules ou min.
mais c'est intéressant pour la rapidité de travail d'être en relation réel avec le clavier de l'utilisateur et non d'être en position inverse.
Si par exemple l'utilisateur écrit dans un document (exemple word) il a besoin du programme mais doit passer du programme à sa feuille word,
Si son capslock est inversé par rapport à ce qu'il voit sur le clavier du programme, lorsqu'il continuera de taper il sera en maj alors que le programme est en min (si on est pas en // avec le réel)
comprends tu ce que je veux dire (pas facile à expliquer)
Par contre si c'est simplement pour consulter je suis d'accord que l'on s'en fou.
mais je préfère que se soit en relation avec le réel.(vu que c'est transparent)
A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://programmer-en-vb.forumactif.org/
Yannick

avatar

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

MessageSujet: re   Ven 9 Jan 2015 - 10:47

Si je suis ta réflexion. 
Il faut, non seulement, détecter l' état du clavier à l' ouverture du programme
mais aussi à chaque fois que l' utilisateur revient au programme.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Fhoest



Nombre de messages : 34
Age : 41
Localisation : Nord
Date d'inscription : 04/01/2015

MessageSujet: Re: Conversion ascii alphabet   Ven 9 Jan 2015 - 17:42

Bonjour
ygeronimi a écrit:
mais aussi à chaque fois que l' utilisateur revient au programme.
c'est juste je n'y avait pas penser.
merci, je vais essayer de corriger cela.
A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://programmer-en-vb.forumactif.org/
Yannick

avatar

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

MessageSujet: re   Dim 11 Jan 2015 - 10:10

Comme je l' ai noté dans un autre sujet, tu peux te servir d' un timer
mais adieu le mode manuel sans ajouter un bouton qui coupe le mode de détection auto. 
En plus, l' affichage devra se faire ailleurs que sur le bouton cliqué, 
la Maj auto initialisera ce bouton parfois plus vite que ce que celui ci pourra être lu... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: RE   Dim 11 Jan 2015 - 15:44

Voilà à quoi j' en suis arrivé :
Code:
Dim no%,Cont%,ContO%,Trk%,A%(3),Opt%(2),B%(27),Edi%,Tim%
Dim x%,Bval%(26),Mode%
Dim Kgf$ : Kgf$="P:\Dlls\KGF.dll"
Label Clic,Change,Maj

dll_on Kgf$

' ******************************************************************************
'                                    INTERFACE
' ******************************************************************************

' Form 0
height 0,150 : width 0,26+(13*21)
top 0,(screen_y-height(0))/2 : left 0,(screen_x-width(0))/2
font_name 0,"arial"
Caption 0,"ASCII"

' container mode
no%=no%+1 : Cont%=no%
container no%
height no%,35 : width no%,95
top no%,0 : left no%,5
Caption no%," Mode "

' track_bar
no%=no%+1 : Trk%=no%
Track_bar no%
Parent no%,Cont% : top no%,13 : left no%,10 : width no%,30 : height no%,15
Cursor_point no%
min no%,0 : max no%,1 : Position no%,1

' Alpha mode
no%=no%+1 : A%(1)=no%
Alpha no% : parent no%,cont% : top no%,15 : left no%,45
Caption no%,"Auto"


' container_option
no%=no%+1 : ContO%=no%
container_option no%
height no%,35 : width no%,width(0)-120
top no%,0 : left no%,100
caption no%,"  Etat du clavier  "

' option 1
no%=no%+1 : Opt%(1)=no%
Option no%
parent no%,ContO% : top no%,15 : left no%,5
cursor_point no%
caption no%,"Minuscule"
on_click no%,clic

' option 2
no%=no%+1 : Opt%(2)=no%
Option no%
parent no%,ContO% : top no%,15 : left no%,80 :width no%,80
cursor_point no%
caption no%,"Majuscule"
on_click no%,clic

' Buttons
for x%=1 to 26
  no%=no%+1 : B%(x%)=no%
  button no%
  width no%,21: height no%,21
  if x%<14
      top no%,35  : left no%,(21*x%)-16
  else
      top no%,57 : left no%,(21*(x%-13))-16
  end_if
  cursor_point no%
  on_click no%,clic
next x%

' Edit
no%=no%+1 : Edi%=no%
Edit no%
width no%,30 : top no%,85 : left no%,80
hint no%,"Entrez un code ASCI, 0 à 255"
On_change no%,change

' Alpha1
no%=no%+1 : A%(2)=no%
Alpha no%
width no%,30 : top no%,88 : left no%,120
caption no%,"= Caractère =>"
font_color no%,255,0,0 : font_bold no%

' Alpha2
no%=no%+1 : A%(3)=no%
Alpha no%
width no%,30 : top no%,84 : left no%,200
caption no%,""
font_bold no% : font_size no%,14 : font_color no%,0,0,230

' Timer
no%=no%+1 : Tim%=no%
Timer no% : Timer_interval no%,250 : On_timer no%,Maj
end


' ******************************************************************************
'                                    LABELS
' ******************************************************************************

Clic:
  if number_click=Opt%(1)
      mode%=1
      Maj_mode()
  end_if
  if number_click=Opt%(2)
      mode%=2
      Maj_mode()
  end_if
  if number_click<>Opt%(1) and number_click<>Opt%(2)
      for x%=1 to 26
        if B%(x%)=number_click
            Affich(x%)
        end_if
      next x%
  end_if
return

Change:
  off_change Edi%
  if len(text$(Edi%))<4 and len(text$(Edi%))>0
      if val(text$(Edi%))<256
        caption A%(3),chr$(val(text$(Edi%)))
      else
        message "Code erroné !!!..."+chr$(13)+"0 à 255"
        text Edi%,""
      end_if
  end_if
  if len(text$(Edi%))=4 or len(text$(Edi%))>4
      message "Code erroné !!!..."+chr$(13)+"0 à 255"
      text Edi%,""
  end_if
  if len(text$(Edi%))=0
      Caption A%(3),""
  end_if
  on_change Edi%,change
return

Maj:
  Refresh()
return

' ******************************************************************************
'                                  PROCEDURES
' ******************************************************************************

Sub Refresh()
  if position(Trk%)=0
      Caption A%(1),"Manuel" : Font_color A%(1),0,0,200
      Exit_sub
  else
      Caption A%(1),"Auto"  : Font_color A%(1),200,0,0
  end_if
  Timer_off Tim%
  dim_local i%,res%,vk%
  vk%=20
  res% = dll_call1("GetKeyboardState",vk%)
  if res%=2
      for i%=1 to 26
        Caption B%(i%),chr$(64+i%)
        Bval%(i%)=64+i%
      next i%
      Mark_on Opt%(2)
      mode%=1
  else
      for i%=1 to 26
        Caption B%(i%),chr$(96+i%)
        Bval%(i%)=96+i%
      next i%
      Mark_on Opt%(1)
      mode%=2
  end_if
  Timer_on Tim%
End_sub

Sub Maj_mode()
  dim_local i%
  if mode%=1
      for i%=1 to 26
        caption B%(i%),chr$(96+i%)
        Bval%(i%)=96+i%
      next i%
  else
      for i%=1 to 26
        caption B%(i%),chr$(64+i%)
        Bval%(i%)=64+i%
      next i%
  end_if
End_sub

Sub Affich(z%)
      text Edi%,str$(Bval%(z%))
End_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Conversion ascii alphabet   Dim 11 Jan 2015 - 16:12

Problem:
Impossible to choose capital letter

Heu ... I cannot choose the option capital letter
How do I have to make?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

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

MessageSujet: re   Dim 11 Jan 2015 - 17:02

Quel est le problème ?... scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Conversion ascii alphabet   Dim 11 Jan 2015 - 17:39

Il ne m'est pas possible de choisir les majuscules Embarassed
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

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

MessageSujet: re   Dim 11 Jan 2015 - 18:34

Est ce bien mon code que tu utilises ?
Code:
Dim no%,Cont%,ContO%,Trk%,A%(3),Opt%(2),B%(27),Edi%,Tim%
Dim x%,Bval%(26),Mode%
Dim Kgf$ : Kgf$="P:\Dlls\KGF.dll"
Label Clic,Change,Maj

dll_on Kgf$

' ******************************************************************************
'                                    INTERFACE
' ******************************************************************************

' Form 0
height 0,150 : width 0,26+(13*21)
top 0,(screen_y-height(0))/2 : left 0,(screen_x-width(0))/2
font_name 0,"arial"
Caption 0,"ASCII"

' container mode
no%=no%+1 : Cont%=no%
container no%
height no%,35 : width no%,95
top no%,0 : left no%,5
Caption no%," Mode "

' track_bar
no%=no%+1 : Trk%=no%
Track_bar no%
Parent no%,Cont% : top no%,13 : left no%,10 : width no%,30 : height no%,15
Cursor_point no%
min no%,0 : max no%,1 : Position no%,1

' Alpha mode
no%=no%+1 : A%(1)=no%
Alpha no% : parent no%,cont% : top no%,15 : left no%,45
Caption no%,"Auto"


' container_option
no%=no%+1 : ContO%=no%
container_option no%
height no%,35 : width no%,width(0)-120
top no%,0 : left no%,100
caption no%,"  Etat du clavier  "

' option 1
no%=no%+1 : Opt%(1)=no%
Option no%
parent no%,ContO% : top no%,15 : left no%,5
cursor_point no%
caption no%,"Minuscule"
on_click no%,clic

' option 2
no%=no%+1 : Opt%(2)=no%
Option no%
parent no%,ContO% : top no%,15 : left no%,80 :width no%,80
cursor_point no%
caption no%,"Majuscule"
on_click no%,clic

' Buttons
for x%=1 to 26
   no%=no%+1 : B%(x%)=no%
   button no%
   width no%,21: height no%,21
   if x%<14
      top no%,35  : left no%,(21*x%)-16
   else
      top no%,57 : left no%,(21*(x%-13))-16
   end_if
   cursor_point no%
   on_click no%,clic
next x%

' Edit
no%=no%+1 : Edi%=no%
Edit no%
width no%,30 : top no%,85 : left no%,80  :color no%,250,250,0:font_bold no%
hint no%,"Entrez un code ASCI, 0 à 255"
On_change no%,change

' Alpha
no%=no%+1 : A%(2)=no%
Alpha no%
width no%,30 : top no%,88 : left no%,120
caption no%,"= Caractère =>"
font_color no%,255,0,0 : font_bold no%

' Alpha
no%=no%+1 : A%(3)=no%
Alpha no%
width no%,30 : top no%,84 : left no%,205
caption no%,""
font_bold no% : font_size no%,14 : font_color no%,0,0,230

' Timer
no%=no%+1 : Tim%=no%
Timer no% : Timer_interval no%,250 : On_timer no%,Maj
end


' ******************************************************************************
'                                    LABELS
' ******************************************************************************

Clic:
   if number_click=Opt%(1)
      mode%=1
      Maj_mode()
   end_if
   if number_click=Opt%(2)
      mode%=2
      Maj_mode()
   end_if
   if number_click<>Opt%(1) and number_click<>Opt%(2)
      for x%=1 to 26
         if B%(x%)=number_click
            Affich(x%)
         end_if
      next x%
   end_if
return

Change:
   off_change Edi%
   if len(text$(Edi%))<4 and len(text$(Edi%))>0
      if val(text$(Edi%))<256
         caption A%(3),chr$(val(text$(Edi%)))
      else
         message "Code erroné !!!..."+chr$(13)+"0 à 255"
         text Edi%,""
      end_if
   end_if
   if len(text$(Edi%))=4 or len(text$(Edi%))>4
      message "Code erroné !!!..."+chr$(13)+"0 à 255"
      text Edi%,""
   end_if
   if len(text$(Edi%))=0
      Caption A%(3),""
   end_if
   on_change Edi%,change
return

Maj:
   Refresh()
return

' ******************************************************************************
'                                  PROCEDURES
' ******************************************************************************

Sub Refresh()
   if position(Trk%)=0
      Caption A%(1),"Manuel" : Font_color A%(1),0,0,200
      Exit_sub
   else
      Caption A%(1),"Auto"   : Font_color A%(1),200,0,0
   end_if
   Timer_off Tim%
   dim_local i%,res%,vk%
   vk%=20
   res% = dll_call1("GetKeyboardState",vk%)
   if res%=2
      for i%=1 to 26
         Caption B%(i%),chr$(64+i%)
         Bval%(i%)=64+i%
      next i%
      Mark_on Opt%(2)
      mode%=1
   else
      for i%=1 to 26
         Caption B%(i%),chr$(96+i%)
         Bval%(i%)=96+i%
      next i%
      Mark_on Opt%(1)
      mode%=2
   end_if
   Timer_on Tim%
End_sub

Sub Maj_mode()
   dim_local i%
   if mode%=1
      for i%=1 to 26
         caption B%(i%),chr$(96+i%)
         Bval%(i%)=96+i%
      next i%
   else
      for i%=1 to 26
         caption B%(i%),chr$(64+i%)
         Bval%(i%)=64+i%
      next i%
   end_if
End_sub

Sub Affich(z%)
      text Edi%,str$(Bval%(z%))
End_sub

Perso, je n' ai pas de souci.
Le mode de départ est auto
( l' état est celui du clavier et si tu essaies de changer manuellement, il revient dans l' état du clavier en 250 millièmes de secondes)
Si tu veux choisir toi même entre majuscule et minuscule, il te faut passer en mode manuel.
Le mode se change en modifiant la track_bar du container "mode".
( je cherchais à simuler un interupteur et j' ai pas trouvé mieux que la track_bar avec un height inférieur à sa dimension de base Laughing )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Conversion ascii alphabet   Dim 11 Jan 2015 - 20:40

Ok !
Ça marche
Je suis plus vieux d’un jour qu’hier !  silent
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Fhoest



Nombre de messages : 34
Age : 41
Localisation : Nord
Date d'inscription : 04/01/2015

MessageSujet: Re: Conversion ascii alphabet   Dim 11 Jan 2015 - 20:41

Bonjour à tous,
voici le code avec le timer conseil de ygeronimi:
Code:

REM définition et instanciation variables
' =======================================
DIM MIN$,MAJ$,MODE$,X%
MIN$ = "abcdefghijklmnopqrstuvwxyz"
MAJ$ =upper$(min$)
' ----------------------------------
' ----------------------------------
REM définition des LABELS
' ======================================
LABEL LBL_CONVERSION,EVENT_RAFRAICHIR, LBL_FINDCAPSLOCK,LBL_INIT
' ----------------------------------
' ----------------------------------
REM code et propriété CONTAINER
' ======================================
CONTAINER 27
WIDTH 27, 610
HEIGHT 27 , 112
COLOR 27, 25,255,150
' ----------------------------------
' ----------------------------------
REM CASE à cochez minuscule ou majuscule
' ======================================
OPTION 28 : CAPTION 28, "Minuscule" : TOP 28 , 90 : LEFT 28, 200 : MARK_ON 28
MODE$ = min$
INACTIVE 28
OPTION 29 : CAPTION 29, "Majuscule" :TOP 29 , 90 : LEFT 29, 300
INACTIVE 29
' ----------------------------------
' ----------------------------------
REM création bouton alphabet
' ======================================
FOR X% = 1 to 26
    BUTTON X%
    CAPTION X%, MID$(MODE$,X%,1) : ON_CLICK X%,LBL_CONVERSION
    IF X% >= 1 and X% =< 8 then LEFT X%, X% *75 - 70 : TOP X%,10
    IF X% >= 9 and X% =< 16
      LEFT X%, ((X%-8) *75) - 70
      TOP  X%, 35
    END_IF
    IF X% >= 17 and X% =< 24
      LEFT X%, ((X%-16)*75) - 70
      TOP X%,60
    END_IF
    IF X% => 25
      LEFT X%, ((X%-24)*75) - 70
      TOP X%,85
    END_IF
NEXT X%
' ----------------------------------
BUTTON 30 : TOP 30,85 : LEFT 30, 530 : ON_CLICK 30,EVENT_RAFRAICHIR : CAPTION 30, "RAFRAICHIR"
BUTTON 32 : TOP 32,85 : LEFT 32, 455 : CAPTION 32 , "CapsLock_Off" : ON_CLICK 32,LBL_FINDCAPSLOCK
' ----------------------------------
' ----------------------------------
REM hauteur & largeur de la FORM
' ====================================
WIDTH 0,626 : HEIGHT 0,155
CAPTION 0 ,"Convertisseur ASCII"
ON_KEY_UP 0 , LBL_FINDCAPSLOCK

' ----------------------------------
' -----------------------------------
REM création du timer avec interval de 500ms
' ----------------------------------
TIMER 100
TIMER_INTERVAL 100,500
ON_TIMER 100,LBL_INIT
END
' ----------------------------------
' ----------------------------------
' LABELS . & EVENT_BTN..............
' ----------------------------------
'------------------------------------
LBL_INIT:
INIT()
RETURN

' ----------------------------------
LBL_FINDCAPSLOCK:
      ' prochainement un sendkey vers la touche capslock.
      SET_FOCUS 0
RETURN
' ----------------------------------
LBL_CONVERSION:
    X% = NUMBER_CLICK
    IF NUMERIC(CAPTION$(X%)) < 1
      CAPTION X%, (ASC(CAPTION$(X%))) : SET_FOCUS 0
    ELSE
      TEMP% = VAL(CAPTION$(X%))
      CAPTION X%, CHR$(TEMP%) : SET_FOCUS 0
    END_IF
RETURN
REM ============================================================================
EVENT_RAFRAICHIR:
      REMPLISSAGE()
RETURN
' ----------------------------------
' ----------------------------------
' ----------------------------------
' Routines ..........................
' ----------------------------------
SUB REMPLISSAGE()
    FOR X% = 1 to 26
        CAPTION X%, MID$(MODE$,X%,1) : ON_CLICK X%,LBL_CONVERSION
    NEXT X%
SET_FOCUS 0
END_SUB
' ----------------------------------
SUB INIT()
REM INIT PROPRIETE CAPSLOCK AVEC DLL DE KLAUS ET CONSEIL DE YGERONIMI
DLL_ON "KGF.dll"
IF dll_call1("GetKeyboardState",20 )=2
    MARK_ON 29
    CAPTION 32, "CapsLock_On"
    MODE$ = MAJ$:REMPLISSAGE()
    ELSE
    MARK_ON 28
    CAPTION 32, "CapsLock_Off"
    MODE$ = MIN$:REMPLISSAGE()
    END_IF
DLL_OFF
END_SUB
' ----------------------------------
A bientôt et merci pour l'aide.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://programmer-en-vb.forumactif.org/
papydall

avatar

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

MessageSujet: Re: Conversion ascii alphabet   Dim 11 Jan 2015 - 21:19

Salut Fhoest
Panoramic dispose de la fort utile l’instruction  HINT.
Je te laisse te documenter à son propos en consultant l’aide.
Pour voir son effet, ajoute cette ligne à ton code après la ligne 34
Code:
 HINT x%, ASC(MID$(MODE$,X%,1))

Lance ton programme et pointe une lettre quelconque avec le curseur de la souris sans cliquer, et attends un tout petit peu : une info-bulle affichera le code ascii de la lettre.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Fhoest



Nombre de messages : 34
Age : 41
Localisation : Nord
Date d'inscription : 04/01/2015

MessageSujet: Re: Conversion ascii alphabet   Dim 11 Jan 2015 - 21:42

Génial Papydall,
c'est en fait comme le ControlTipText en VB que j'utilise beaucoup.
Je l'ai d'office intégrer au code.
ce qui donne:
Code:

REM définition et instanciation variables
' =======================================
DIM MIN$,MAJ$,MODE$,X%
MIN$ = "abcdefghijklmnopqrstuvwxyz"
MAJ$ =upper$(min$)
' ----------------------------------
' ----------------------------------
REM définition des LABELS
' ======================================
LABEL  LBL_FINDCAPSLOCK,LBL_INIT
' ----------------------------------
' ----------------------------------
REM code et propriété CONTAINER
' ======================================
CONTAINER 27
WIDTH 27, 610
HEIGHT 27 , 112
COLOR 27, 25,255,150
' ----------------------------------
' ----------------------------------
REM CASE à cochez minuscule ou majuscule
' ======================================
OPTION 28 : CAPTION 28, "Minuscule" : TOP 28 , 90 : LEFT 28, 200 : MARK_ON 28
MODE$ = min$
INACTIVE 28
OPTION 29 : CAPTION 29, "Majuscule" :TOP 29 , 90 : LEFT 29, 300
INACTIVE 29
' ----------------------------------
' ----------------------------------
REM création bouton alphabet
' ======================================
FOR X% = 1 to 26
    BUTTON X%
    HINT X%, ASC(MID$(MODE$,X%,1))
    CAPTION X%, MID$(MODE$,X%,1)
    IF X% >= 1 and X% =< 8 then LEFT X%, X% *75 - 70 : TOP X%,10
    IF X% >= 9 and X% =< 16
      LEFT X%, ((X%-8) *75) - 70
      TOP  X%, 35
    END_IF
    IF X% >= 17 and X% =< 24
      LEFT X%, ((X%-16)*75) - 70
      TOP X%,60
    END_IF
    IF X% => 25
      LEFT X%, ((X%-24)*75) - 70
      TOP X%,85
    END_IF
NEXT X%
' ----------------------------------

BUTTON 32 : TOP 32,85 : LEFT 32, 455 : CAPTION 32 , "CapsLock_Off" : ON_CLICK 32,LBL_FINDCAPSLOCK
' ----------------------------------
' ----------------------------------
REM hauteur & largeur de la FORM
' ====================================
WIDTH 0,626 : HEIGHT 0,155
CAPTION 0 ,"Convertisseur ASCII"
ON_KEY_UP 0 , LBL_FINDCAPSLOCK

' ----------------------------------
' -----------------------------------
REM création du timer avec interval de 500ms
' ----------------------------------
TIMER 100
TIMER_INTERVAL 100,500
ON_TIMER 100,LBL_INIT
END
' ----------------------------------
' ----------------------------------
' LABELS . & EVENT_BTN..............
' ----------------------------------
'------------------------------------
LBL_INIT:
INIT()
RETURN

' ----------------------------------
LBL_FINDCAPSLOCK:
      ' prochainement un sendkey vers la touche capslock.
      SET_FOCUS 0
RETURN
' ----------------------------------
' ----------------------------------
' Routines ..........................
' ----------------------------------
SUB REMPLISSAGE()
    FOR X% = 1 to 26
        CAPTION X%, MID$(MODE$,X%,1)
    NEXT X%
SET_FOCUS 0
END_SUB
' ----------------------------------
SUB INIT()
REM INIT PROPRIETE CAPSLOCK AVEC DLL DE KLAUS ET CONSEIL DE YGERONIMI
DLL_ON "KGF.dll"
IF dll_call1("GetKeyboardState",20 )=2
    MARK_ON 29
    CAPTION 32, "CapsLock_On"
    MODE$ = MAJ$:REMPLISSAGE()
    ELSE
    MARK_ON 28
    CAPTION 32, "CapsLock_Off"
    MODE$ = MIN$:REMPLISSAGE()
    END_IF
DLL_OFF
END_SUB
' ----------------------------------
@+
j'ai commencer à intégrer le sendkey mais j'ai un peu de mal avec le Timer mis en place.
ça viendra la solution existe.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://programmer-en-vb.forumactif.org/
Yannick

avatar

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

MessageSujet: RE   Dim 11 Jan 2015 - 22:17

Les bouton s' actualise selon la situation du clavier mais pas les hint.... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Fhoest



Nombre de messages : 34
Age : 41
Localisation : Nord
Date d'inscription : 04/01/2015

MessageSujet: Re: Conversion ascii alphabet   Dim 11 Jan 2015 - 23:19

ok MERCI Ygeronimi
il faut changer le code:
Code:
SUB REMPLISSAGE()
    FOR X% = 1 to 26
        CAPTION X%, MID$(MODE$,X%,1)
        HINT X%, ASC(MID$(MODE$,X%,1))
    NEXT X%
SET_FOCUS 0
END_SUB
A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://programmer-en-vb.forumactif.org/
Contenu sponsorisé




MessageSujet: Re: Conversion ascii alphabet   

Revenir en haut Aller en bas
 
Conversion ascii alphabet
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Conversion ascii alphabet
» Conversion fichier MVK
» Conversion 25p/24p
» [Résolu] Problème conversion mpeg2-DVD
» conversion gdb en gpx ?

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: