FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Clavier virtuel entièrement en Panoramic Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Clavier virtuel entièrement en Panoramic Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Clavier virtuel entièrement en Panoramic Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Clavier virtuel entièrement en Panoramic Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Clavier virtuel entièrement en Panoramic Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Clavier virtuel entièrement en Panoramic Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Clavier virtuel entièrement en Panoramic Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Clavier virtuel entièrement en Panoramic Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Clavier virtuel entièrement en Panoramic Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Clavier virtuel entièrement en Panoramic Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Clavier virtuel entièrement en Panoramic Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Clavier virtuel entièrement en Panoramic Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Clavier virtuel entièrement en Panoramic Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Clavier virtuel entièrement en Panoramic Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Clavier virtuel entièrement en Panoramic Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
Boutique Nike : -25% dès 50€ sur TOUT le site Nike avec le code ...
Voir le deal

 

 Clavier virtuel entièrement en Panoramic

Aller en bas 
4 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Clavier virtuel entièrement en Panoramic Empty
MessageSujet: Clavier virtuel entièrement en Panoramic   Clavier virtuel entièrement en Panoramic EmptyDim 29 Jan 2012 - 18:44

Pour me distraire, j'ai fait un clavier virtuel réalisé entièrement en Panoramic. Afin d'économiser des objets, j'ai dessiné mon clavier sur un PICTURE. Le programme retourne les variables ID_TOUCHE% et ID_TOUCHE$. La première reçoit un code numérique pour la touche frappée, la seconde reçoit le libellé de la touche. Les touches "Verr." et "Maj." sont gérées de façon interne, et l'image du clavier change selon qu'il est en majuscules ou miniscules. Le titre de la fenêtre sert de ligne d'état avec des indications sur les toucher Verr. et Maj. Une petite fenêtre auxiliaire affiche un mémo dans lequel apparaissent les touches frappées, avec code numérique et libellé.
Voici le code:
Code:
label clic, dessiner_touche, dessiner_le_clavier
label libeller_le_clavier, libeller_le_clavier_bis

' touches sans shift
data "²","&","é",chr$(34),"'","(","-","è","_","ç","à",")","=","<=","Home"
data "Tab","a","z","e","r","t","y","u","i","o","p","^","$","Entrée","Psuiv"
data "Verr.","q","s","d","f","g","h","j","k","l","m","ù","*"," ","Ppréc"
data "Maj.","<","w","x","c","v","b","n",",",";",":","!","Maj.","Fin"
data "Ctrl","Fb","Win","Alt"," ","Alt","Win","Ctrl","€","^","$","<","v",">"
' touches avec shift
data "²","1","1","3","4","5","6","7","8","9","0","°","+","<=","Home"
data "Tab","A","Z","E","R","T","Y","U","I","O","P","¨","£","Entrée","Psuiv"
data "Verr.","Q","S","D","F","G","H","J","K","L","M","%","µ"," ","Ppréc"
data "Maj.","<","W","X","C","V","B","N","?",".","/","§","Maj.","Fin"
data "Ctrl","Fb","Win","Alt"," ","Alt","Win","Ctrl","€","^","$","<","v",">"


dim largeur_clavier% : largeur_clavier% = 600
dim hauteur_clavier% : hauteur_clavier% = 200

dim x%, y%, i%, j%, n%, posx%, posy%, wtab%(5,2), xsauve%
dim hauteur_rang%, largeur_touche%, largeur%, hauteur%, shift1$(1),shift1%
dim n_touches%, zones%(90,6), col%, lig%, s$, ht%, lt%, shift$(1), shift%
dim id_touche%, id_col%, id_lig%, id_touche$, libelles$(200)

shift$(0) = "Minuscules"
shift$(1) = "Majuscules"
shift1$(0) = ""
shift1$(1) = "Maj."

form 99 : left 99,300 : top 99,400
width 99,largeur_clavier%
height 99,hauteur_clavier%

form 1000 : left 1000,700 : top 1000,50
memo 1001 : parent 1001,1000 : top 1001,10 : left 1001,10

picture 100 : parent 100,99 : full_space 100
on_click 100,clic
2D_target_is 100
print_target_is 100
image 101

hauteur_rang% = int((height(100)-20)/5+0.5)
largeur_touche% = int((width(100)-80)/17+0.5)
wtab%(1,1) = int(largeur_touche%*1.5)
wtab%(2,1) = int(largeur_touche%*2.0)
wtab%(3,1) = int(largeur_touche%*2.3)
wtab%(4,1) = int(largeur_touche%*1.7)
wtab%(5,1) = int(largeur_touche%*1.75)

wtab%(1,2) = int(largeur_touche%*2.0)
wtab%(2,2) = int(largeur_touche%*1.5)
wtab%(3,2) = int(largeur_touche%*1.2)
wtab%(4,2) = int(largeur_touche%*3.0)
wtab%(5,2) = int(largeur_touche%*1.7)
' item_add 1001,"Hauteur picture="+str$(height(100))
' item_add 1001,"Hauteur rang="+str$(hauteur_rang%)
' item_add 1001,"Largeur touche="+str$(largeur_touche%)

shift% = 0
shift1% = 0

gosub dessiner_le_clavier
gosub libeller_le_clavier

end

dessiner_le_clavier:
n_touches% = 0
hauteur% = hauteur_rang%
for i%=1 to 5
    lig% = i%
    col% = 0
    posx% = 5
    posy% = 5 + (i%-1)*hauteur%
    largeur% = wtab%(i%,1)
    gosub dessiner_touche
    n% = 12
    if i%=4 then n% = 11
    if i%=5 then n% = 3
    largeur% = largeur_touche%
    for j%=1 to n%
        gosub dessiner_touche
    next j%
    if i%=5
        largeur% = largeur_touche%*5 + 18
        gosub dessiner_touche
        largeur% = largeur_touche%
        gosub dessiner_touche
        gosub dessiner_touche
    end_if
    largeur% = wtab%(i%,2)
    gosub dessiner_touche
    if i%<>5
        largeur% = int(largeur_touche%*1.2+0.5)
        gosub dessiner_touche
    end_if
next i%
hauteur% = int(hauteur_rang%*0.7+0.5)
largeur% = int(largeur_touche%*1.1+0.5)
xsauve% = posx%
for i%=1 to 2
    posx% = xsauve%
    for j%=1 to 3
        gosub dessiner_touche
    next j%
    posy% = posy% + hauteur%
next i%
2d_flood 1,1,200,200,255
2d_image_copy 101,0,0,width(100),height(100)
for i%=1 to n_touches%
    read libelles$(i%+n_touches%)
next i%
return

clic:
    x% = mouse_x_left_down(100)
    y% = mouse_y_left_down(100)
'    item_add 1001,"Clic à ("+str$(x%)+","+str$(y%)+")"
    for i%=1 to n_touches%
        if x%>zones%(i%,1)
            if x%<zones%(i%,3)
                if y%>zones%(i%,2)
                    if y%<zones%(i%,4)
                        id_lig% = zones%(i%,5)
                        id_col% = zones%(i%,6)
                        id_touche% = i%  + bin_xor(shift%,shift1%)*n_touches%
                        id_touche$ = libelles$(id_touche%)
                        if id_touche$="Verr."
                            shift% = 1 - shift%
                            hide 100
                            gosub libeller_le_clavier_bis
                            show 100
                            return
                        end_if
                        if id_touche$="Maj."
                            shift1% = 1 - shift1%
                            caption 99,"Clavier virtuel                "+shift$(shift%)+"  "+shift1$(shift1%)
                            return
                        else
                            if shift1%=1
                                shift1% = 0
                                caption 99,"Clavier virtuel                "+shift$(shift%)+"  "+shift1$(shift1%)
                            end_if
                        end_if
'                        item_add 1001,"Ligne "+str$(id_lig%)+"  Colonne "+str$(id_col%)
                        item_add 1001,"Touche "+str$(id_touche%)+" = ["+id_touche$+"]"
                        exit_for
                    end_if
                end_if
            end_if
        end_if
    next i%
    return

dessiner_touche:
    col% = col% + 1
    n_touches% = n_touches% + 1
    zones%(n_touches%,1) = posx%
    zones%(n_touches%,2) = posy%
    zones%(n_touches%,3) = posx%+largeur%-1
    zones%(n_touches%,4) = posy%+hauteur%-1
    zones%(n_touches%,5) = lig%
    zones%(n_touches%,6) = col%
    2d_rectangle posx%,posy%,posx%+largeur%-1,posy%+hauteur%-1
    posx% = posx% + largeur%+5
    read libelles$(n_touches%)
    return

libeller_le_clavier_bis:
    2d_image_paste 101,0,0
libeller_le_clavier:
    caption 99,"Clavier virtuel                "+shift$(shift%)+"  "+shift1$(shift1%)
    2d_fill_color 255,255,255
    for i%=1 to n_touches%
        s$ = libelles$(i%+shift%*n_touches%)
        lt% = text_width(s$,100)
        ht% = text_height(s$,100)
        x% = int(zones%(i%,1)+(zones%(i%,3)-zones%(i%,1)-lt%)/2+0.5)
        y% = int(zones%(i%,2)+(zones%(i%,4)-zones%(i%,2)-ht%)/2+0.5)
        print_locate x%,y%
        print s$
    next i%
    return

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Clavier virtuel entièrement en Panoramic Empty
MessageSujet: Re: Clavier virtuel entièrement en Panoramic   Clavier virtuel entièrement en Panoramic EmptyDim 29 Jan 2012 - 19:14

C'est bien Klaus.
Reste plus que les touches de fonctions, et peut-être pourquoi pas des touches pré-défines pour y mettre, pourquoi pas les lettres allemandes Very Happy
Revenir en haut Aller en bas
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Clavier virtuel entièrement en Panoramic Empty
MessageSujet: Re: Clavier virtuel entièrement en Panoramic   Clavier virtuel entièrement en Panoramic EmptyDim 29 Jan 2012 - 21:37

Super bien fait! Tu pourrais peut-être afficher aussi le code ascii de la touche cliquée. Cosmos dit qu'il manque les touches de fonction et moi le pavé numérique. On pourrais prévoir aussi un mémo qui affiche le texte cliqué avec la souris sur le clavier virtuel. Il doit y avoir pas mal d'application avec le clavier virtuel... Wink
Revenir en haut Aller en bas
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Clavier virtuel entièrement en Panoramic Empty
MessageSujet: Re: Clavier virtuel entièrement en Panoramic   Clavier virtuel entièrement en Panoramic EmptyDim 29 Jan 2012 - 22:03

Il est génial ton piano ^^

Tu devrais cacher le form non ?

Dire que tu fais ça pour te distraire^^
Un jour il va faire un programme d'intelligence artificielle plus intelligent que l'humain juste pour se distraire Wink
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Clavier virtuel entièrement en Panoramic Empty
MessageSujet: Re: Clavier virtuel entièrement en Panoramic   Clavier virtuel entièrement en Panoramic EmptyVen 3 Fév 2012 - 1:20

Pour reprendre, après les digressions, le fil initial de mon post:

Voici une nouvelle version de mon clavier virtuel. J'ai procédé aux modifications suivantes:
- les libellés des touches ont été ajustées pour retourner une identification unique, quelque soit la touche choisie
- j'ai réorganisé et structuré l'ensemble du pogramme selon une méthode d'écriture propre', facilement lisible
- j'ai documenté le programme de façon exhaustive
- j'ai ajouté un pavé numérique (!)
- le programme affiche un numéro d'identifiant et un code alpha pour chaque touche (identique au libellé de la touche). Pour le pavé numérique, l'identifiant est négatif, pour le clavier alpha il est positif
- j'ai changé l'interface avec la possibilité d'afficher et de cacher le clavier alpha, le pavé numérique et la trace

Voici le code:
Code:
' clavier_virtuel.bas
' les labels xxx_clavier concernent le clavier alpha normal
' les labels xxx_pave concernent le pavé numérique
' le clavier alpha normal renvoie des codes touche positifs
' le pavé numérique renvoie des codes touche négatifs
' une même touche des deux claviers donne le même résultat en string
'    exemple: la touche "9" renvoie toujours 9 venant des deux claviers,
'            mais on peut les distinguer par le code touche
'            qui est négatif pour le pavé numérique
' les variables suivantes contiennent des numéros d'objet Panoramic
' recevant le résultat des touches sélectionnées (leur nom indique
' exactement leur usage):
'    numero_edit_pour_id_touche%    = 15
'    numero_edit_pour_texte_touche%  = 13
' on peut attacher un évènement on_change à ces objets, et ainsi traiter
' chaque touche réçue.

' seules lignes labels nécessaires en début de programme
label labels_form0
label labels_clavier
label labels_pave
label labels_commun

' on définit les variables communes
gosub labels_commun
gosub dim_commun

' on décrit le clavier alpha normal
gosub labels_clavier
gosub data_clavier
gosub dim_clavier
gosub creer_objets_clavier
gosub creer_objets_trace
gosub calculer_dimensions_clavier
gosub dessiner_le_clavier
gosub libeller_le_clavier

' on décrit le pavé numérique
gosub labels_pave
gosub data_pave
gosub dim_pave
gosub creer_objets_pave
gosub calculer_dimensions_pave
gosub dessiner_le_pave
gosub libeller_le_pave

' on établit la form 0
gosub labels_form0
gosub creer_objets_form0

shift% = 0
shift1% = 0

end

' ===================== parties communes
labels_commun:
label dim_commun
return

dim_commun:
dim id_col%, id_lig%, id_touche%, id_touche$, col%, lig%, s$, ht%, lt%
dim x%, y%, i%, j%, n%, posx%, posy%, largeur%, hauteur%
dim numero_edit_pour_id_touche%, numero_edit_pour_texte_touche%
return

' ===================== pavé numérique
labels_pave:
label data_pave, dim_pave, creer_objets_pave, calculer_dimensions_pave
label clic_pave, dessiner_le_pave, dessiner_touche_pave, libeller_le_pave
return

data_pave:
data "*pavé*"
data "7","8","9","/","4","5","6","*","1","2","3","-"," ","0",".","+"
return

dim_pave:
dim largeur_pave% : largeur_pave% = 160
dim hauteur_pave% : hauteur_pave% = 160
dim hauteur_rang_pave%, largeur_touche_pave%, n_touches_pave%
dim zones_pave%(16,6), libelles_pave$(16)
return

creer_objets_pave:
form 199 : hide 199 : left 199,700 : top 199,400
width 199,largeur_pave% +10
height 199,hauteur_pave%
picture 200 : parent 200,199 : full_space 200
on_click 200,clic_pave
2D_target_is 200
image 201
return

calculer_dimensions_pave:
hauteur_rang_pave% = int((height(200)-10)/4+0.5)
largeur_touche_pave% = int((width(200)-30)/4+0.5)
return

clic_pave:
    x% = mouse_x_left_down(200)
    y% = mouse_y_left_down(200)
'    item_add 1001,"Clic pavé à ("+str$(x%)+","+str$(y%)+")"
    for i%=1 to n_touches_pave%
        if x%>zones_pave%(i%,1)
            if x%<zones_pave%(i%,3)
                if y%>zones_pave%(i%,2)
                    if y%<zones_pave%(i%,4)
                        id_lig% = zones_pave%(i%,5)
                        id_col% = zones_pave%(i%,6)
                        id_touche% = 0-i%
                        id_touche$ = libelles_pave$(i%)
'                        item_add 1001,"Ligne pavé "+str$(id_lig%)+"  Colonne "+str$(id_col%)
                        item_add 1001,"Touche pavé "+str$(id_touche%)+" = ["+id_touche$+"]"
                        if object_exists(13)=1 then text 13,id_touche$
                        if object_exists(15)=1 then text 15,id_touche%
                        exit_for
                    end_if
                end_if
            end_if
        end_if
    next i%
return

dessiner_le_pave:
restore
repeat
    read libelles$(0)
until libelles$(0)="*pavé*"
n_touches_pave% = 0
hauteur% = hauteur_rang_pave%
for i%=1 to 4
    lig% = i%
    col% = 0
    posx% = 5
    posy% = 5 + (i%-1)*hauteur%
    largeur% = largeur_touche_pave%
    for j%=1 to 4
        gosub dessiner_touche_pave
    next j%
next i%
2d_flood 1,1,200,200,255
2d_image_copy 201,0,0,width(200),height(200)
return

dessiner_touche_pave:
    col% = col% + 1
    n_touches_pave% = n_touches_pave% + 1
    zones_pave%(n_touches_pave%,1) = posx%
    zones_pave%(n_touches_pave%,2) = posy%
    zones_pave%(n_touches_pave%,3) = posx%+largeur%-1
    zones_pave%(n_touches_pave%,4) = posy%+hauteur%-1
    zones_pave%(n_touches_pave%,5) = lig%
    zones_pave%(n_touches_pave%,6) = col%
    2d_rectangle posx%,posy%,posx%+largeur%-1,posy%+hauteur%-1
    posx% = posx% + largeur%+5
    read libelles_pave$(n_touches_pave%)
return

libeller_le_pave:
    print_target_is 200
    2d_target_is 200
    caption 199,"Pavé num."
    2d_fill_color 255,255,255
    for i%=1 to n_touches_pave%
        s$ = libelles_pave$(i%)
        lt% = text_width(s$,100)
        ht% = text_height(s$,100)
        x% = int(zones_pave%(i%,1)+(zones_pave%(i%,3)-zones_pave%(i%,1)-lt%)/2+0.5)
        y% = int(zones_pave%(i%,2)+(zones_pave%(i%,4)-zones_pave%(i%,2)-ht%)/2+0.5)
        print_locate x%,y%
        print s$
    next i%
return

' ===================== form 0
labels_form0:
label creer_objets_form0, montrer_clavier, montrer_pave, montrer_trace
return

creer_objets_form0:
container 1 : top 1,10 : left 1,10 : caption 1,"Afficher:"
check 2 : parent 2,1 : top 2,20 : left 2,10 : width 2,120 : caption 2,"Clavier alpha normal"
on_click 2,montrer_clavier
check 3 : parent 3,1 : top 3,40 : left 3,10 : width 3,120 : caption 3,"Pavé numérique"
on_click 3,montrer_pave
check 4 : parent 4,1 : top 4,80 : left 4,10 : width 4,120 : caption 4,"Fenêtre de trace"
on_click 4,montrer_trace
container 11 : left 11,200 : top 11,10 : caption 11,"Réception"
alpha 12 : parent 12,11 : top 12,20 : left 12,10 : caption 12,"Touche:"
edit 13 : parent 13,11 : top 13,20 : left 13,80 : width 13,40
alpha 14 : parent 14,11 : top 14,50 : left 14,10 : caption 14,"Code:"
edit 15 : parent 15,11 : top 15,50 : left 15,80 : width 15,40
numero_edit_pour_id_touche%    = 15
numero_edit_pour_texte_touche%  = 13
width 0,400 : height 0,160
mark_on 2
return

montrer_clavier:
if checked(2)=1
'    show 99
else
'    hide 99
end_if
return

montrer_pave:
if checked(3)=1
    show 199
else
    hide 199
end_if
return

montrer_trace:
if checked(4)=1
    show 1000
else
    hide 1000
end_if
return

' ===================== trace
creer_objets_trace:
form 1000 : hide 1000 : left 1000,700 : top 1000,50
memo 1001 : parent 1001,1000 : top 1001,10 : left 1001,10
return

' ===================== clavier alpha normal
labels_clavier:
label clic, dessiner_touche, dessiner_le_clavier
label libeller_le_clavier, libeller_le_clavier_bis
label data_clavier, dim_clavier, creer_objets_clavier
if label("creer_objets_trace")=0 then label creer_objets_trace
label calculer_dimensions_clavier
return

data_clavier:
' touches sans shift
data "*clavier*"
data "²","&","é",chr$(34),"'","(","-","è","_","ç","à",")","=","<xx","Home"
data "Tab","a","z","e","r","t","y","u","i","o","p","^","$","Entrée","Psuiv"
data "Verr.","q","s","d","f","g","h","j","k","l","m","ù","*","Entrée","Ppréc"
data "Maj.","<","w","x","c","v","b","n",",",";",":","!","Maj.","Fin"
data "Ctrl","Fb","Win","Alt"," ","Alt","Win","Ctrl","€","/^\","$","<=","\v/","=>"
' touches avec shift
data "²","1","1","3","4","5","6","7","8","9","0","°","+","<xx","Home"
data "Tab","A","Z","E","R","T","Y","U","I","O","P","¨","£","Entrée","Psuiv"
data "Verr.","Q","S","D","F","G","H","J","K","L","M","%","µ","Entrée","Ppréc"
data "Maj.","<","W","X","C","V","B","N","?",".","/","§","Maj.","Fin"
data "Ctrl","Fb","Win","Alt"," ","Alt","Win","Ctrl","€","/^\","$","<=","\v/","=>"
return

dim_clavier:
dim largeur_clavier% : largeur_clavier% = 600
dim hauteur_clavier% : hauteur_clavier% = 200

dim wtab%(5,2), xsauve%, hauteur_rang%, largeur_touche%
dim shift1$(1), shift1%, shift$(1), shift%
dim n_touches%, zones%(90,6), libelles$(200)

shift$(0) = "Minuscules"
shift$(1) = "Majuscules"
shift1$(0) = ""
shift1$(1) = "Maj."
return

creer_objets_clavier:
form 99 : left 99,50 : top 99,400
width 99,largeur_clavier%
height 99,hauteur_clavier%
picture 100 : parent 100,99 : full_space 100
on_click 100,clic
2D_target_is 100
image 101
return

calculer_dimensions_clavier:
hauteur_rang% = int((height(100)-20)/5+0.5)
largeur_touche% = int((width(100)-80)/17+0.5)
wtab%(1,1) = int(largeur_touche%*1.5)
wtab%(2,1) = int(largeur_touche%*2.0)
wtab%(3,1) = int(largeur_touche%*2.3)
wtab%(4,1) = int(largeur_touche%*1.7)
wtab%(5,1) = int(largeur_touche%*1.75)

wtab%(1,2) = int(largeur_touche%*2.0)
wtab%(2,2) = int(largeur_touche%*1.5)
wtab%(3,2) = int(largeur_touche%*1.2)
wtab%(4,2) = int(largeur_touche%*3.0)
wtab%(5,2) = int(largeur_touche%*1.7)
return

dessiner_le_clavier:
restore
repeat
    read libelles$(0)
until libelles$(0)="*clavier*"
print_target_is 100
n_touches% = 0
hauteur% = hauteur_rang%
for i%=1 to 5
    lig% = i%
    col% = 0
    posx% = 5
    posy% = 5 + (i%-1)*hauteur%
    largeur% = wtab%(i%,1)
    gosub dessiner_touche
    n% = 12
    if i%=4 then n% = 11
    if i%=5 then n% = 3
    largeur% = largeur_touche%
    for j%=1 to n%
        gosub dessiner_touche
    next j%
    if i%=5
        largeur% = largeur_touche%*5 + 18
        gosub dessiner_touche
        largeur% = largeur_touche%
        gosub dessiner_touche
        gosub dessiner_touche
    end_if
    largeur% = wtab%(i%,2)
    gosub dessiner_touche
    if i%<>5
        largeur% = int(largeur_touche%*1.2+0.5)
        gosub dessiner_touche
    end_if
next i%
hauteur% = int(hauteur_rang%*0.7+0.5)
largeur% = int(largeur_touche%*1.1+0.5)
xsauve% = posx%
for i%=1 to 2
    posx% = xsauve%
    for j%=1 to 3
        gosub dessiner_touche
    next j%
    posy% = posy% + hauteur%
next i%
2d_flood 1,1,200,200,255
2d_image_copy 101,0,0,width(100),height(100)
for i%=1 to n_touches%
    read libelles$(i%+n_touches%)
next i%
return

clic:
    x% = mouse_x_left_down(100)
    y% = mouse_y_left_down(100)
'    item_add 1001,"Clic à ("+str$(x%)+","+str$(y%)+")"
    for i%=1 to n_touches%
        if x%>zones%(i%,1)
            if x%<zones%(i%,3)
                if y%>zones%(i%,2)
                    if y%<zones%(i%,4)
                        id_lig% = zones%(i%,5)
                        id_col% = zones%(i%,6)
                        id_touche% = i%  + bin_xor(shift%,shift1%)*n_touches%
                        id_touche$ = libelles$(id_touche%)
                        if id_touche$="Verr."
                            shift% = 1 - shift%
                            hide 100
                            gosub libeller_le_clavier_bis
                            show 100
                            return
                        end_if
                        if id_touche$="Maj."
                            shift1% = 1 - shift1%
                            caption 99,"Clavier virtuel                "+shift$(shift%)+"  "+shift1$(shift1%)
                            return
                        else
                            if shift1%=1
                                shift1% = 0
                                caption 99,"Clavier virtuel                "+shift$(shift%)+"  "+shift1$(shift1%)
                            end_if
                        end_if
'                        item_add 1001,"Ligne "+str$(id_lig%)+"  Colonne "+str$(id_col%)
                        item_add 1001,"Touche "+str$(id_touche%)+" = ["+id_touche$+"]"
                        if object_exists(13)=1 then text 13,id_touche$
                        if object_exists(15)=1 then text 15,id_touche%
                        exit_for
                    end_if
                end_if
            end_if
        end_if
    next i%
    return

dessiner_touche:
    col% = col% + 1
    n_touches% = n_touches% + 1
    zones%(n_touches%,1) = posx%
    zones%(n_touches%,2) = posy%
    zones%(n_touches%,3) = posx%+largeur%-1
    zones%(n_touches%,4) = posy%+hauteur%-1
    zones%(n_touches%,5) = lig%
    zones%(n_touches%,6) = col%
    2d_rectangle posx%,posy%,posx%+largeur%-1,posy%+hauteur%-1
    posx% = posx% + largeur%+5
    read libelles$(n_touches%)
    return

libeller_le_clavier_bis:
    2d_target_is 100
    2d_image_paste 101,0,0
libeller_le_clavier:
    2d_target_is 100
    print_target_is 100
    caption 99,"Clavier virtuel                "+shift$(shift%)+"  "+shift1$(shift1%)
    2d_fill_color 255,255,255
    for i%=1 to n_touches%
        s$ = libelles$(i%+shift%*n_touches%)
        lt% = text_width(s$,100)
        ht% = text_height(s$,100)
        x% = int(zones%(i%,1)+(zones%(i%,3)-zones%(i%,1)-lt%)/2+0.5)
        y% = int(zones%(i%,2)+(zones%(i%,4)-zones%(i%,2)-ht%)/2+0.5)
        print_locate x%,y%
        print s$
    next i%
    return

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Clavier virtuel entièrement en Panoramic Empty
MessageSujet: Re: Clavier virtuel entièrement en Panoramic   Clavier virtuel entièrement en Panoramic EmptyVen 3 Fév 2012 - 3:55

Tu vas en faire un piano midi bientôt ^^

Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Clavier virtuel entièrement en Panoramic Empty
MessageSujet: Re: Clavier virtuel entièrement en Panoramic   Clavier virtuel entièrement en Panoramic EmptySam 4 Fév 2012 - 20:45

Nickel, tu as juste oublié la partie touches de fonctions dont parlait cosmos70
Et pour mon information, pourquoi la touche fb ? c'est fn normalement ,non ? (C'est peut être lié à une version de clavier spécial ou alors, c'est mon clavier qui n'est pas standard .... Smile )
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Clavier virtuel entièrement en Panoramic Empty
MessageSujet: Re: Clavier virtuel entièrement en Panoramic   Clavier virtuel entièrement en Panoramic EmptySam 4 Fév 2012 - 20:48

La touche "Fb" est évidemment une faute de frappe - tu noteras que le "b" est juste à gauche du "n"...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Clavier virtuel entièrement en Panoramic Empty
MessageSujet: Re: Clavier virtuel entièrement en Panoramic   Clavier virtuel entièrement en Panoramic EmptySam 4 Fév 2012 - 21:15

Pas de problème Klaus, ça c'était juste une petite question annexe pour ma culture personnel, ça n'a aucune incidence sur le fonctionnement du programme Smile
Revenir en haut Aller en bas
Contenu sponsorisé





Clavier virtuel entièrement en Panoramic Empty
MessageSujet: Re: Clavier virtuel entièrement en Panoramic   Clavier virtuel entièrement en Panoramic Empty

Revenir en haut Aller en bas
 
Clavier virtuel entièrement en Panoramic
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Menu avec icones entièrement paramétrable
» EDI réalisé entièrement en Panoramic
» Nouveau IDE entièrement en Panoramic
» Nouveau EDI entièrement en Panoramic
» Déterminer le type de clavier

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: