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
» Button_picture
par pascal10000 Aujourd'hui à 11:41

» Pourquoi le compilateur stagne
par Minibug Aujourd'hui à 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Aujourd'hui à 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Aujourd'hui à 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Aujourd'hui à 10:00

» KGF_dll - nouvelles versions
par pascal10000 Hier à 17:27

» Mah-Jong européen new-look
par Minibug Mar 12 Déc 2017 - 22:31

» track_bar circulaire
par Klaus Mar 12 Déc 2017 - 13:54

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Fonction inkey$ inactive dans un form autre que form0

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

avatar

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

MessageSujet: re   Mer 29 Mai 2013 - 19:25

@ Champollion,

As tu un site qui regroupe tes créations ?
J' ai fait, vite fait, une recherche mais un nombre de liens incalculables
me sont apparus... scratch

Pour ton code, je ne vois pas pourquoi tu passes par dessus le form 0
qui est automatiquement créé en Panoramic.

Pour l' apprentissage du langage, il me semble que tu veuilles aller plus vite
que la musique ( et je parle en connaissance de cause... Laughing ).
Il serait plus judicieux d' apprendre, à force d' utilisation, à maitriser les commandes
les unes après les autres avec de petit programmes,
avant d'essayer de pondre un programme très complexe.
J' en ai fait l' amère expérience No .

Comme tu as déjà des bases solides en programmation, cela devrait aller très vite... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Mer 29 Mai 2013 - 19:34

@ Froggy one,

Réponse en plusieurs étapes :

1 /
Il n' y a pas d'oublis dans le code. Si tu regardes bien le label clic est déclaré dans la sub "declaration()"

2/
Pour m' être battu et débattu avec les procédures, en avoir plein mes programmes,
je peux te dire que tu peux en mettre plusieurs dizaines et même plus sans problème.

cf KGF_SUB.bas et autres....
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Mer 29 Mai 2013 - 19:41

Et même des centaines, voir des milliers... Je n'ai pas rencontré de limites.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

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

MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Mer 29 Mai 2013 - 20:02

Salut Froggy One

Pour le label Clic, Ygeronimi y a répondu : il n’y a pas d’omission donc.
A propos, je ne préfère pas utiliser LABEL, sauf si c’est incontournable (les ON_XXX exigent un LABEL)

Pour les 2 SUB qui se terminent par RETURN : tu as raison de relever cette étourderie de ma part.

Pour le nombre de SUB dans un programme, la réponse de Klaus est sans équivoque !

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



Nombre de messages : 14
Date d'inscription : 25/05/2013

MessageSujet: fonction inkey$ inactive   Mer 29 Mai 2013 - 20:29

Bonjour Igeronimi Je n'ai pas de site pour mes programmes mais seulement pour mes photos.(denischampollion.com) Sinon, le reste dec mes activités est dans face book.J'ai un stock d'anciens programmes éducatifs faits en basic. Ils m'ont servi d'exemples pour mon éditeur qui les a reprogrammés. Depuis je ne fais plus que des ossatures de programme vu que de toute façon, ils sont refaits bien mieux ( voir mes "lecthèmes et parcours mathématiques" dans le site Jocatop
mais je progresse un peu dans la programmation structurée. Dans deux jours, je vous envoie la suite du prog d'orthographe sur lequel je travaille. Bonne fin de soirée Denis Champollion
J'ai démarré en ZX 81 puis MO5 TO8 PC WIND et Linux et LOGO bien sur
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Mer 29 Mai 2013 - 20:41

champollion a écrit:
J'ai démarré en ZX 81 puis MO5 TO8 PC WIND et Linux et LOGO bien sur
C’était le bon vieux temps : un ZX81 avec 1Ko de mémoire vive extensible à 16Ko et une fréquence de 4MHz !
Que des bons souvenirs !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

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

MessageSujet: re   Mer 29 Mai 2013 - 20:52

Tiens, çà existe çà, des gens qui éditent les idées des autres... Laughing

( @ papydall, je ne parlais pas de ton antiquité... lol! )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Mer 29 Mai 2013 - 21:54

@Champollion,

Je pense qu'il est temps de te laisser souffler un peu, et tu verras, à l'utilisation, que Panoramic est un bon langage de programmation pour des habitué du basic.
Vu ce que tu as déjà fait le chemin ne devrait pas être trop long pour toi. Je te conseille fortement de lire les 4 sujets que Klaus avait fait et validés par Jack. Cà commence ici: http://panoramic.free-boards.net/t1498-structure-pour-un-programme-windows-1-4

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
champollion



Nombre de messages : 14
Date d'inscription : 25/05/2013

MessageSujet: fonction inkey$ inactive   Mer 29 Mai 2013 - 23:14

et ce zx fonctionne encore !
Mes premiers logiciels repris par les pros, je les ai faits avec le TO8 D et pc 386. J'ai beaucoup été influencé par l'esprit LOGO
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Jeu 30 Mai 2013 - 0:31

Tu t' es fait piquer tes idées par des pros.... bounce
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 395
Date d'inscription : 06/01/2012

MessageSujet: re   Jeu 30 Mai 2013 - 9:06

@ Champollion
Bravo en tous cas pour le travail effectué,
@ tous
Je persiste et signe sur l'erreur "(24) more SUBs then allowed number" qui apparaît, chez moi, au lancement.
Au fait j'aurais bien collé ici l'image mais entre les options HEBERGER et IMAGE je ne m'y retrouve pas...

sunny Bonne journée !!!

PS : je n'ai pas trouvé d'icône avec un nuage Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
papydall

avatar

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

MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Jeu 30 Mai 2013 - 12:41

Hello Froggy One.

Avec quel code tu as l’erreur (24) more SUBs then allowed number ?
Peux-tu poster le code incriminé ?
Je penche plutôt pour une erreur de logique dans le code et non que Panoramic ne digère pas des nombreuses SUBs !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Froggy One

avatar

Nombre de messages : 395
Date d'inscription : 06/01/2012

MessageSujet: Re   Jeu 30 Mai 2013 - 14:09

Cool Voili voilà :

Code:

 ******************************************************************************
'  Code modifié par Papydall d'apès une idée de Champollion
' ******************************************************************************

Declaration()
GUI()
end  : ' Ce end est essentiel pour que le programme aille pas exécuter la suite
' ******************************************************************************
' Ici on déclare les labels,les variables, les constantes etc..
SUB Declaration()
    label clic
    dim a$(4),e$(9)
    a$(1)= "DECOUVERTE"
    a$(2)= "APPRENTISSAGE"
    a$(3)= "EVALUATION"
    a$(4)= "QUITTER"
    e$(1)= "Copie à vue"
    e$(2)= "Copie de mémoire"
    e$(3)= "Ecriture texte entendu"
    e$(4)= "Ecriture sous dessin"
    e$(5)= "Homophones lexicaux"
    e$(6)= "Homophones grammaticaux"
    e$(7)= "Accords genre et nombre"
    e$(8)= "Conjugaison"
    e$(9)= "Dictée"

END_SUB
' ******************************************************************************
' Ici on définit tous les objets utilisés dans le programme : FORM, BUTTON,PICTURE, etc...
SUB GUI()
    dim_local n,l,h  : ' variables locales
' Définition de FORM 10 et des objets qu'il contient
    form 10 : width 10, 1280 : height 10, 800 : color 10,64,64,128
' On défini un ALPHA pour éviter d'utilser PRINT
    alpha 11 : parent 11,10 : top 11,15 : left 11,430
    font_color 11,255,0,0 : font_name 11,"comic sans MS": font_size 11,30
' On donne un texte a l'ALPHA
    caption 11, "Ecriture Orthographe"
' On défini un PICTURE qui recevra l'image
    picture 12 : parent 12,10 : top 12, 300 : left 12, 470 : height 12, 300 : width 12, 800
'    file_load 12,"Papillion.bmp"
    l =140
' Définition des boutons
    for n = 13 to 15
      button n : parent n,10 : top n, 140 : left n, l: l=l+ 350 : width n, 240:height n, 50
      caption n, a$(n-12) : font_size n, 22 :font_bold n : on_click n,clic
    next n
    button 16 : parent 16,10 :  top 16, 640 : left 16, 510 : font_size 16, 22 : font_bold 16
    width 16, 230:height 16, 50 : caption 16, a$(4) : on_click 16,clic

' ------------------------------------------------------------------------------
' Définition du FORM 20 et de ses objets
    form 20 : width 20, 1280 : height 20, 800 : color 20,64,24,128
    alpha 21 : parent 21,20 : top 21,15 : left 21,430 : font_color 21,255,0,0
    font_size 21,30 : font_name 21,"comic sans MS" : caption 21,"Liste des ecercices"

    l=450 :h=120
    for n = 22 to 30
        button n : parent n, 20 : top n, h : left n, l: h=h+ 60 : width n, 400 : height n, 50
        caption n, e$(n-21) : font_color n, 0,255,255 : font_size n, 20 :font_bold n
        on_click n,clic
    next n

    button 31 : parent 31,20 : top 31,700 : left 31,600
    caption 31, "Retour" : on_click 31,clic
    hide 20 : ' on cache ce FORM
' ------------------------------------------------------------------------------
' Définition du FORM 40 et des ses objets
    form 40 : width 40, 1280 : height 40, 800 : color 40,64,24,128
    alpha 41 : parent 41,40 : top 41,15 : left 41,430 : font_color 41,255,0,0
    font_size 41,40 : font_name 41,"comic sans MS" : caption 41,"COPIE SIMPLE"
    alpha 42 : parent 42,40 : top 42,160 : left 42,430 : color 42,0,255,0
    font_color 42,128,0,0 : font_size 42,40 : font_name 42,"comic sans MS"
    caption 42," P A P I L L O N "

    button 43 : parent 43,40 : top 43,700 : left 43,600
    caption 43,"Retour" : on_click 43,clic
    hide 40  : ' on cache ce FORM

END_SUB
' ******************************************************************************
' Ici on traite tous les clicks afin d'aiguiller le programme vers le sous-programme adéquat
clic:
 if clicked(13) > 0 then Decouverte() : return
 if clicked(14) > 0 then Apprentissage() : return
 if clicked(15) > 0 then Evaluation() : return
 if clicked(16) > 0 then Quitter()
 if clicked(22) > 0 then Copie_A_Vue() : return
 if clicked(23) > 0 then Copie_De_Memoire() : return
 if clicked(24) > 0 then Ecriture_Texte_Entendu() : return
 if clicked(25) > 0 then Ecriture_Sous_Dessin() : return
 if clicked(26) > 0 then Homophones_Lexicaux() : return
 if clicked(27) > 0 then Homophones_Grammaticaux() : return
 if clicked(28) > 0 then Accords_Genre_Et_Nombre() : return
 if clicked(29) > 0 then Conjugaison() : return
 if clicked(30) > 0 then Dictee() : return
 if clicked(31) > 0 then show 10 : hide 20
 if clicked(43) > 0 then show 20 :  hide 40

' ici on traite les éventuels clicks supplémentaires

 return
' ******************************************************************************
' A compléter ...
SUB Copie_A_Vue()
    show 40
    message "Copie à vue en cours ..."
END_SUB
' ******************************************************************************
' A compléter ...
SUB Copie_De_Memoire()
    message "Copie de mémoire en cours ..."
END_SUB
' ******************************************************************************
' A compléter ....
SUB Ecriture_Texte_Entendu()
    message " Ecriture texte entendu en cours ..."
END_SUB
' ******************************************************************************
' A compléter ...
SUB Ecriture_Sous_Dessin()
    message " Ecriture sous dessin en cours ..."
END_SUB
' ******************************************************************************
' A compléter ....
SUB Homophones_Lexicaux()
    message "Homophones lexicaux en cours ..."
END_SUB
' ******************************************************************************
' A compléter ...
SUB Homophones_Grammaticaux()
    message "Homophones grammaticaux en cours ..."
END_SUB
' ******************************************************************************
' A compléter ...
SUB Accords_Genre_Et_Nombre()
    message " Accords genre et nombre en cours ..."
END_SUB
' ******************************************************************************
' A compléter ....
SUB Conjugaison()
    message "Conjugaison en cours ..."
END_SUB
' ******************************************************************************
' A Compléter ....
SUB Dictee()
    message "Dictée en cours ..."
END_SUB
' ******************************************************************************
' A compléter ....
SUB Decouverte()
    show 20
END_SUB
' ******************************************************************************
' A compléter ....
SUB Apprentissage()
    message "Apprentissage en cours ..."
END_SUB
' ******************************************************************************
' A compléter ....
SUB Evaluation()
    message "Evaluation en cours ..."
END_SUB
' ******************************************************************************
SUB Quitter()
  if message_confirmation_yes_no("Vous Voulez vraiment quitter") = 1 then terminate
END_SUB
'
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
Yannick

avatar

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

MessageSujet: re   Jeu 30 Mai 2013 - 14:49

Ce code fonctionne très bien chez moi.
( à condition de rajouter l' apostrophe qui a du échapper au copier/coller ligne 1 )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 395
Date d'inscription : 06/01/2012

MessageSujet: Re   Jeu 30 Mai 2013 - 14:57

OK, merci ! Apparemment j'ai un problème extérieur à ce qui se passe dans la fenêtre, j'ai aussi un GRID déclaré out of range sur un autre programme. J'attends de récupérer mon PC récent quelque part sous les plastiques entre les rouleaux de papier peint... je ressors mon guide du C et rapproche d'un bon lit douillet...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
champollion



Nombre de messages : 14
Date d'inscription : 25/05/2013

MessageSujet: idées et édition   Jeu 30 Mai 2013 - 21:04

Bonjour ! J'ai pas bien saisi le sens des derniers messages. Je précise: Je suis concepteur et auteur de logiciels sur lesquels je suis rétribué en droits d'auteur et dont je possède la propriété intellectuelle. L'éditeur ne fait que programmer ce que je demande, il ne "pique " pas d'idées, c'est moi qui les lui donne ! Et tout cela fonctionne parfaitement. Un "piqueur d'idées" en infraction serait celui qui reprendrait mes travaux pour les éditer ailleurs et toucher des droits comme s'il était l'auteur. Je programme quelques exemples pour montrer ce que je veux et je compose tous les écrans en PPT, en liaison avec le script de mon cahier des charges. Je suis en ce moment sur un prgramme qui mixte orthographe et ecriture, avec contrat déposé. Cordialement, Denis Champollion
PS Ceci dit je continue à travailler sur une meilleure structuration de mes applications panoramic grâce aux précisions et tutoriels de certains d'entre vous, grand merci à eux
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Dim 6 Déc 2015 - 2:23

Je déterre ce sujet avec INKEY$ pour ne pas à avoir en ouvrir un autre.

J'ai un vrai problème avec cette fonction. Je l'utilise depuis quelque temps et j'ai d'ailleurs posté déjà un problème, mais que finalement cela venait de mon  ordi, qui une fois redémarré n'avait plus ce problème.

Je fais une sub de teste et de mise au point. Elle marche très bien, et fait ce que je lui demande:
Code:
' clavier picture

width 0,700: height 0,500
 dim pic_ , img_
 pic_ = 2 : img_ = 4
picture pic_ : full_space pic_:font_size pic_,10 : print_target_is pic_ : 2d_target_is pic_ : font_name pic_,"Consolas"
image img_
' tracage de la zone clavier
clavier_fonte(20,20,600,50)

end
' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
sub clavier_fonte(x,y,x1,y1)
   dim_local curseur,ga,larg , clavier$ , clav$, top_clavier
   ga = x+10 : top_clavier = y+2
  
   2d_pen_color 0,0,255:2d_pen_width pic_ : 2d_fill_color 255,255,255 :2d_fill_on
   font_size pic_,10 : font_name pic_,"Consolas" : font_bold pic_ :  ' 2d_rectangle x,y,x1,y1
   2d_image_copy img_  ,x,y,x1,y1
   font_color pic_,150,150,150

   print_locate ga,top_clavier : print "Entrez le nom"
   repeat :pause 100: until scancode > 31
   print_locate ga,top_clavier : print "             "
   2d_pen_color 255,0,0 : 2d_pen_width 1
   ' 2d_fill_color 240,240,240
  
   repeat
      2d_pen_color 255,255,255 : ' efface le curseur
      trace_curseur(ga,top_clavier,curseur)
      if clavier$ = "" then curseur =0
      clav$ = inkey$
      if scancode = 8 :' retour arrière
         if curseur > 1
            clavier$ = left$(clavier$,curseur-1) + right_pos$(clavier$,curseur+1)
            curseur = curseur-1
         else
            clavier$ = right_pos$(clavier$,2): curseur = 0
         end_if
      end_if

      if clav$ = ""
         if scancode = 37 and clav$ = "":' and curseur>0
            curseur = curseur - 1
         else
            if scancode = 39 and curseur < len(clavier$)
               curseur = curseur + 1
            else
               if scancode = 46 :' del
                  clavier$ = left$(clavier$,curseur) + right_pos$(clavier$,curseur+2)
               else
                  if scancode =38 or scancode = 36:' origine
                     curseur = 0
                  else
                     if scancode = 40 or scancode = 35: ' fin
                        curseur = len(clavier$)
                     end_if
                  end_if
               end_if
            end_if
         end_if
      end_if

      if clav$ <> ""
         if asc(clav$) > 31
            if curseur = len(clavier$)
               clavier$ = clavier$ + clav$ : curseur = curseur + 1
            else
               if curseur > 1
                  clavier$ = left$(clavier$,curseur) + clav$ + right_pos$(clavier$,curseur +1)
                  curseur = curseur +1
               else
                  if curseur = 1
                     2d_pen_color 0,0,255 : trace_curseur(ga,top_clavier,0)
                  ' @@@@@@
                     clavier$ = left$(clavier$,1) + clav$+right_pos$(clavier$,2) : curseur = 2
                  else
                     clavier$ = clav$ + clavier$ : curseur = 1
                  end_if

               end_if

            end_if
         end_if
      end_if

      print_locate ga,top_clavier : print clavier$+" "
      ' print curseur
      2d_pen_color 255,0,0 : 2d_pen_width 1 : trace_curseur(ga,top_clavier,curseur)
      repeat: wait 1 :until scancode = 0 or scancode = 27 : wait 1:repeat:until scancode <> 0 :caption 0,scancode
   until scancode = 13 or scancode = 27
   terminate
end_sub
========================
sub trace_curseur(ga,top_clavier,curseur)
      2d_line ga + curseur * 9 , top_clavier, ga + curseur * 9 , top_clavier+23         :' gauche
      2d_line ga + curseur * 9 , top_clavier, ga + curseur * 9 +10 , top_clavier        :' haut
      2d_line ga + curseur * 9 , top_clavier+22, ga + curseur * 9 +10 , top_clavier+22  :' bas
      2d_line ga + curseur * 9+9 , top_clavier, ga + curseur * 9+9 , top_clavier+22   :' droite
end_sub

J'y avais mis les N° que j'utilise dans le programme de destination.
Je recopie cette sub, et la reporte dans mon programme. Là INKEY$ NE FONCTIONNE PLUS

J'ai découpé des morceaux de mon programme pour pouvoir posté le problème, et je ne comprend pas ce qu'il se passe. Je pense qu'il y a un bien un bug. C'est pas la première fois que je constate cela. Pour le fonctionnement du programme, il faut charger le contenu d'un list, et le mettre dans le même dossier que le programme. Je vais le mettre sur mon Webdav Pas réussi à mettre mes fichiers.

Télécharger
Impossible de me servir du Webdaw, Harchive-host, maintenant il faut payer. J'ai trouvé:
hébergeur ZIP gratuit

Pour celui qui essaye le 2ème programme, après l'avoir lancer, on clique sur le deuxième bouton, puis on descends sur le deuxième bouton: nommée, et on essaye d'y mettre un nom.
Sortie par ESC et PAUSE

Je précise que si je reprends le premier programme, cela refonctionne.
Revenir en haut Aller en bas
Klaus

avatar

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

MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Dim 6 Déc 2015 - 2:56

Vers la fin de la sub clavier_fonte, je trouve la séquence suivante:
Citation :
    print_locate ga,top_clavier : print clavier$+" "
     2d_pen_color 255,0,0 : 2d_pen_width 1 : trace_curseur(ga,top_clavier,curseur)
     clavier$="+clavier$
La troisième ligne de cet extrait ne peut pas marcher. Et dans la première, je ne comprends pas bien ce que devrait imprimer print clavier$+" "...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Dim 6 Déc 2015 - 9:17

Est-ce ceci:
Code:
     print_locate ga,top_clavier : print clavier$+" "
      2d_pen_color 255,0,0 : 2d_pen_width 1 : trace_curseur(ga,top_clavier,curseur)
      item_add va_,"clavier$="+clavier$
va_ pour variable est un memo de contrôle. J'ai pas pensé à dire de le mettre en avant au départ. Il ne fait qu'afficher le contenu des variables qu'on lui demande. Il faut cliquer sur la droite pour le mettre en avant.

Le problème se situe à la ligne 848: clav$ = inkey$ Tu peux taper sur le clavier, clav$ est toujours vide.
A comparer avec le programme plus haut à la ligne 32 : Là inkey$ fonctionne.
C'est la même sub, seul des contrôles sont ajoutés - avec l'affichage par le système du double buffer sur un picture.
Revenir en haut Aller en bas
Klaus

avatar

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

MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Dim 6 Déc 2015 - 12:29

Effectivement, ce comportement en 848 me semble anormal. En 849, clav$ reste vide, alors que scancode a la bonne valeur. Et je ne comprends pas pourquoi.

Ma solution (pas élégante maie opérationnelle): insérer une ligne devant la ligne 881:
Code:
      end_if

      clav$ = chr$(scancode)  : ' inséré devant la ligne 881 "if clav$ <> .."
      if clav$ <> ""
        if asc(clav$) > 31
Brutal, mais opérationnel !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Dim 6 Déc 2015 - 15:38

Le problème avec scancode est que celui-ci à des code commun avec des lettres, comme les touches de direction. Normalement quand inkey$ est vide, je sais que ce sont des touches de manœuvre. Pour moi il y a un BUG. J'aurai pas voulu le mettre en avant, et c'est la raison pour laquelle j'ai choisi de déterrer un vieux topique. Mais si Jack ne se manifeste pas, je vais être obligé de le faire pour lui faire voir.
Revenir en haut Aller en bas
Klaus

avatar

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

MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Dim 6 Déc 2015 - 15:50

C'est bien mon impression, Cosmos70. Il est incompréhensible que, dans la même ligne, SCAN_CODE donne la bonne valeur, mais INKEY$ retourne la chaîne vide, lorsqu'il s'agit de caractères visibles, comme des lettres.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
silverman

avatar

Nombre de messages : 475
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Lun 7 Déc 2015 - 15:01

Bonjour à tous,

si je comprend bien le pb, c'est que la fonction 'inkey$' ne retourne rien si on est dans un form autre que le 0.
En fait j'ai remarqué pour que 'inkey$' soit pris en compte dans un autre form(ex.: le 1), il faut donner le focus au form 0(et le cacher si besoin)! l'autre form(le 1) devient inactif, mais 'inkey$' fonctionne.

Tapez des caractères en continu pour cette demo:
Code:

' PANORAMIC 0.9.27i2

dim t,a$

caption 0,"form 0"
form 1 :  caption 1,"form 1" : top 1,600 : print_target_is 1

' top 0,1000
set_focus 0


t=NUMBER_TICKS
repeat
   a$=inkey$
   if a$<>"" then print a$;
until NUMBER_TICKS-t>2000


print_target_is 0 : top 0,0

t=NUMBER_TICKS
repeat
   a$=inkey$
   if a$<>"" then print a$;
until NUMBER_TICKS-t>2000

wait 1000
terminate
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Lun 7 Déc 2015 - 16:53

<span class="sceditor-selection sceditor-ignore" style="line-height: 0; display: none;" id="sceditor-end-marker"></span><span class="sceditor-selection sceditor-ignore" style="line-height: 0; display: none;" id="sceditor-start-marker"></span>Bonjour,
Bien. Mais j'ai essayé de le rajouter dans le programme: set_focus ps_ (ps_ pour pseudo ... objet), le résultat est le même. inkey$ reste vide.

J'attends encore un jour pour laisser le temps à Jack de se manifester, si il voir ce poste (histoire de ne pas faire de vague inutile). Après je posterai le bug, si il ne le voit pas (à moins que la solution soit trouvée).

Edit: j'utilise la version précédente. La dernière version a un bug qui ne me convient pas.
Revenir en haut Aller en bas
silverman

avatar

Nombre de messages : 475
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    Lun 7 Déc 2015 - 19:05

Si si, ça marche. Essaye ça:

Code:

dim windowfocus%,null%
dll_on "user32"
' ligne ajoutée : 1,2,3,841,849,915

' problème avec INKEY$, voir à partir de la ligne 823
dim dos$ , projet$

dos$ = "C:\Documents and Settings\Utilisateur\Bureau\inkey\" :' dossier du programme
projet$ = dos$ + "TESTE\"
if dir_exists(projet$) = 0 then dir_make projet$

' -----------------------------------------------------------------------------
editeur() :' initialisation des forms et objets de travail, ainsi que le picture de pseudo-objets


' déclaration des pseudo-objets
parent% = 9000 :' n° du form de ce programme qui reçoit les objets
dim L_%,T_% , W_% , H_% , capt_$

' on place un bouton
PAGE = 1
L_% = 50 : T_% = 20 : W_% = 90 : H_% = 30 : capt_$ = "stop"
bouton("clic=1|parent=9011|left=50|top=20|width=90|height=30|caption$={stop}|font_name=menu|")
  liste_$(obj%,1) = "Sortie du programme|" :' <-- "|" obligatoire, si plusieurs, saut de ligne

bouton("clic=1|parent=9011|left=160|top=20|width=220|height=40|caption$={Créer attribut fonte}|font_name=menu|")
  liste_$(obj%,1) = "enrichir le choix|d'une fonte|"
                  ' parent est: pic_  soit 9011

rem "***************************************************************************
rem " Départ du programme en boucle comme si événementielle
2d_image_copy img_ , left(pic_) , top(pic_) , width(pic_),height(pic_)
file_save img_ , dos$+"image.bmp"
' sprite_image_load 1,img_
image_copy(ps_)
boucle_msg()
END : ' END : ' END : ' END : ' END : ' END : ' END : ' END : ' END : ' END
' =================================================================================

' début
sub editeur()
  form 9000 : left 9000,900 : width 9000,screen_x - left(9000) : height 9000,screen_y
  memo 9001 : parent 9001,9000: hint 9001,"trace des procédures" : width 9001,width(9000)-50 : height 9001,300
      color 9001,231,247,154:font_bold 9001 : font_name 9001,"Consolas":item_add 9001,"lig:12 sub editeur()"
  memo 9002 : parent 9002,9000: hint 9002,"variables":width 9002,width(9001):top 9002,height(9001)+10:height 9002,300
      color 9002,255,247,154:font_bold 9002 : font_name 9002,"Consolas":font_size 9002,10
  ' picture de controle

  ' ---------------------------------------------------------------------------
  ' form de travail qui est 0
  width 0,left(9000):top 0,20:height 0,screen_y - top(0)-25
  ' la form de départ 0 ne sera pas la forme des pseudo-objets, qui permettra d'avoir un travail normal, et la forme secondaire
  ' pour les pseudo-objets.
  dim ps_ , pic_ : ps_ = 9010 : pic_ = 9011 :' pic pour picture
  dim pr_ , va_ : pr_ = 9001 : va_ = 9002
  dim copi_ , img_ , img1_ : copi_ = pic_ +1 : img_ = copi_ + 1  : img1_ = img_ +1
  dim list_ : list_ = 9020
  dim pol_ , pol1_ :' police
  dim font% : ' n°de police choisit de chaque caractère
  dim fonte%(200,255) :' caractéristique de chaque caractère de chaque police
  dim police$(200) :' définition de chaque police: nom, attibut couleur
  dim retour$(5) , retour%(10,10) , rt$ , retour_$
  dim couleur%(20) , rgb(10,1) , msg% , temp , tempo , maxi% , pause% , parent% , ft% , flag_clic
  dim LISTE_$(200,2) , pos(10)
  dim temp_decompte% , timer_sortie% , t , return%
  pause% = 200
  dim PAGE , PAGE_mem , OBJ% , objet% , vignet
  vignet = 9003
  picture vignet:parent vignet,9000:width vignet,width(9001):top vignet,top(va_)+height(va_):height vignet,300
  ' provisoir:
  police$(1)="Arial|9|g|i|s|b}[menu]"
  item_add va_,police$(1)
  ' --------------------------------------------

  FORM ps_ : width ps_,width(9000) : top ps_,50:height ps_,height(0) :' hint ps_,"form ps_  pour PS_eudo"
  image img_  :  image img1_
  PICTURE pic_ : parent pic_,ps_  :full_space pic_: 2d_target_is pic_ : print_target_is pic_ :hide pic_:' hint pic_,"picture pic_"
  PICTURE copi_: parent copi_,ps_:width copi_,width(pic_) : height copi_,height(pic_) :' pour sauvegarde d'un écran

  ' on va faire une form suplémentaire pour y mettre des dlist qui seront avant des list pour controle.

  FORM list_ : left list_,left(9000)-300:width list_,600:height list_,screen_y:font_size list_,10:font_bold list_:font_name list_,"Consolas":hint list_,"form list_"

  pol_ = list_+1 : pol1_ = pol_+1  : objet% = pol1_ + 1
  list pol_:  parent pol_,list_: width pol_,width(list_)-40: height pol_,150:hint pol_,"pol_ :polices choisies"
  list pol1_: font_names_load pol1_: hint pol1_,"pol1_"
      parent pol1_,list_ : top pol1_,height(pol_)+5:width pol1_ , width(pol_) : height pol_,150

  memo objet% :parent objet%,list_ : top objet%,top(pol1_) + height(pol1_)+10:width objet%,width(pol1_):height objet%,200
      font_name objet%,"Consolas":font_size objet%,10:font_bold objet%:color objet%,250,183,4

  form 5:left 5,800:top 5,200:width 5,screen_x-450:height 5,screen_x-210  : hide 5
  picture 10
  parent 10,5:full_space 10
  ' sprite 1
  maxi% = 1
  init()

end_sub

' ==========================================================================
sub init()
s(number_current_line," sub init()")
'  pour garder que les polices importantes
  dim_local a$,b%,i%

  if count(pol1_) > 0
      repeat
        a$ = item_read$(pol1_,1)
        if left$(a$,1) = "@" then item_delete pol1_,1
      until left$(a$,1) <> "@" or scancode = 27
      item_delete pol1_,1 :' 8514eom
      for b% = 1 to count(pol1_) : police$(b%) = item_read$(pol1_,b%) : next b%

      b%=1
      if file_exists(dos$+"police_"+str$(b%)+".ini") = 1
      ' message dos$+"ADD\police_"+str$(b%)+".ini"
        repeat
            file_open_read 1,dos$+"police_"+str$(b%)+".ini"
            while file_eof(1) <> 1
              file_readln 1,police$(b%)
              for i% = 0 to 255
                  ' caption 0,"b%="+str$(b%)+"  i%="+str$(i%)
                  file_readln 1,fonte%(b%,i%)
              next i%
            end_while
            file_close 1
            b%=b%+1
        until file_exists("police_"+str$(b%)+".ini") = 0
      end_if
  end_if
end_sub
' ==========================================================================
sub s(n%,a$)
  item_add pr_ , "lig:" + str$(n%) + " " + a$
end_sub
' ==========================================================================

sub number()
  dim_local a
  for a = 1 to maxi%
      if liste_$(a,0) = "" then obj%= a : exit_for
  next a
  if a > maxi% then obj%=obj%+1 : maxi%=obj%
  caption 0,"numéro number= " + str$(obj%)
end_sub

' ==========================================================================

SUB boucle_msg()
s(number_current_line," boucle_msg()")
  IF maxi% > 0
      REPEAT
        FOR msg% = 1 to maxi%
            position_souris(msg%)
            cherche_objet()
        NEXT msg%
        pause pause%
      UNTIL SCANCODE = 19
  END_IF
  execute "C:\PANO\Pano_sans_événement\kill_pano.exe"
end_sub

' ==========================================================================

SUB position_souris(n)
  s(number_current_line," position_souris(n)")
  caption 0,"page="+str$(page)
  dim_local type,p,l,t,w,h,nom$,ecart,a$,b$ ,c , v ,clic , page% , x , y
  rem " on regarde en premier si on est sur le menu"
  ' pour l'instant pic_ et ensuite copi_
  x = mouse_x_position(copi_) : y = mouse_y_position(copi_)  :' caption 0,"x="+str$(x)+"  choix_menu%="+str$(choix_menu%)

  if y < 18 : ' menu
    if 1=2
      rem "ici regarder si x < 11 si oui, on affiche soit le menu, soit le menucouleur"
      rem "et il faut faire le choix de l'un deux pour cette partie
      if x < 21 and scancode = 0
        repeat : until scancode = 1 or mouse_x_position(3) > 20
      end_if
      if x < 21 and scancode = 1
        choix_menu% = 1-choix_menu%
        if choix_menu% = 0 then menu() : else :  MENUcouleur()
        repeat:until scancode = 0 and mouse_y_position(copi_) > 24
      else
        if choix_menu% = 0 :' menu classique
            for L = 1 to 19  :' 19 provisoir
              ' item_add 11,"L="+str$(l)+"  mnu%(L)="+str$(mnu%(L))
              if menu$(L)="" then exit_for

              if x > mnu%(L-1) and x < mnu%(L)
                  commander_un_menu(L)
                  repeat : wait 50
                    if Mnu%(L)=0 then exit_repeat
                    ' caption 0,str$(mouse_x_position(3)) + " mnu%(L-1)="+str$(mnu%(L-1)) + "mnu%(L)="+str$(mnu%(L))
                  until mouse_x_position(3) < mnu%(L-1) or mouse_x_position(3) > mnu%(L) or scancode = 1
                  if retour$ <> "" then evenements_menu(retour$)
              end_if
            next L
        else
            traitement_couleur()

        end_if
      end_if
    2d_image_paste 4,8,22
    image_copy(ps_)
    end_if
  ELSE
      rem "========================================================================
      rem "              LES OBJETS                                              "
      rem "======================================================================="

      ' ** OBJETS ***
      to_foreground ps_
      ' item_add 11,"msg%="+str$(msg%) + "  n="+str$(n)
      IF PAGE > 0

        if liste_$(n,0) <> ""
            ' if n=6 then message liste$(6,0) +chr$(13) + "181 <--  MEMO_(1,0,610,50,250,400,"
            a$ = liste_$(n,0) : if right$(a$,1) <> "/" then a$ = a$ + "/"
            ' item_add 11,"les objets n="+str$(n)+chr$(13)+chr$(10)+liste$(n,0)
            c=0
            repeat
              v= instr(a$,"/")
              if v > 0
                  b$ = left$(a$,v-1) : a$ = right_pos$(a$,v+1)
                  ' item_add 11,"186: b$="+b$:item_add 11,"a$="+a$
                  select c
                    case 0:clic=val(b$) : pos(0)=clic :' o= off 1=on_click
                    case 1:p=val(b$)    :' item_add 11," parent p="+b$
                    case 2:l=val(b$)    : pos(1)=L  :' item_add 11," pos1="+str$(pos(1))
                    case 3:t=val(b$)    : pos(2)=T  :' item_add 11," pos2="+str$(pos(2))
                    case 4:w=val(b$)    : pos(3)=L+W :' item_add 11," pos3="+str$(pos(3))
                    case 5:h=val(b$)    : pos(4)=T+H :' item_add 11," pos4="+str$(pos(4))
                    case 6:type=val(b$) : pos(5)=type
                    case 7:page%=val(b$): pos(6)=page%
                    case 8:if numeric(b$)=1 then ecart=val(b$): pos(7)=ecart
                  end_select
              end_if
              c=c+1
            until a$="" or c>8 :' le reste des paramètres n'interviennent pas pour le positionnement
            ' item_add 11,"sortie UNTIL les objets ligne=217"+chr$(13)+chr$(10)+ liste$(6,0) +chr$(13) + "MEMO_(1,0,610,50,250,400,"+chr$(13)+"L="+str$(l)+"  T="+str$(t)+"  W="+str$(w)+ "  H="+str$(h)
            item_add va_,"clic="+str$(pos(0))+ " L="+str$(pos(1))+ " T="+str$(pos(2))+ " W="+str$(pos(3))+ " H="+str$(pos(4))+ " type="+str$(pos(5))+" page="+str$(pos(6))

        end_if
      ELSE
        if page = 0 : ' enrichir_fonte()
            ' x et y selon les boutons
            position_ajoute_fonte(x,y)
        else
            ' pour d'autres fenêtres (en négatif)
        end_if

      END_IF
  ' end_if :' 1=2
  end_if

END_SUB

' ===========================================================================

sub cherche_objet()
  if liste_$(msg%,0) <> ""
      if pos(0) = 1 and flag_clic = 0 :' on_click
        dim_local x,y,x1,y1 , px,py

        ' position de la sourie par rapport au picture 2
        px=mouse_x_position(copi_)+5 : py=mouse_y_position(copi_)

        if pos(1)<px and pos(3)>px and pos(2)<py and pos(4)>py and pos(6) = page
            item_add va_,"cherche_obje() ok msg%:"+str$(msg%)
            on_signale()
            repeat
              if flag_clic = 0
                  px=mouse_x_position(copi_) +5
                  py=mouse_y_position(copi_)
              end_if
              wait 100 : if scancode = 27 then message "sortie exit" :exit_repeat
              ' control CLIC clic sur [bouton souris gauche] ou [return]
              if scancode = 1 or scancode = 13
                  if pos(0) = 1    :' si 1, alors ON_click (fictif) sinon off_click
                    flag_clic = 1
                  end_if
              end_if
              ' ..............
            until pos(1)>px or pos(3)<px or pos(2)>py or pos(4)<py or flag_clic=1

            on_retour()  :' efface la figure de l'objet survolé
            ' La feuille est remis dans son état initial, et on peut se branché si il y a un clic valide sur l'événement
            if flag_clic = 1
              px=screen_x
    rem ----- rem " ÉVÉNEMENT --------------------------------------------" ---------- rem
              ' On se branche à l'événement par rapport à l'objet reconnu avec msg%
              item_add va_, "go go evenements()"
              evenements()
    rem ----- rem " ------------------------------------------------------" ---------- rem
              flag_clic = 0
            end_if
        end_if
      end_if
  end_if
end_sub

' ============================================================================

sub on_signale()
s(number_current_line , " on_signale()")
  if flag_clic=0
      dim_local v,a$,y
      2d_target_is pic_
      ' 2d_image_copy img_,left(pic_),top(pic_),width(pic_)+left(pic_),height(pic_)+top(pic_)
      mettre_attribut(police$(1)) : mettre_font_couleur(police$(1))
      select pos(5) :' On réagit selon le type de l'objet. 1=bouton
        case 1 :' BOUTON
            2d_pen_width 1 : 2d_pen_color 255,0,0 : 2d_fill_off
            ' 2d_rectangle pos(1),pos(2),pos(3)-5,pos(4)-5
            flash(pos(1)-2,pos(2),pos(3)-pos(1),pos(4)-pos(2)-2)
      end_select
      image_copy(ps_)
  end_if
end_sub

' ============================================================================
sub flash(l,t,w,h)
  dim_local a$,v,y , x ,y0 , b
  2d_target_is pic_
  2d_fill_color 230,230,230 : font_color pic_,0,0,255
  x = pos(1)+10 : y0 = pos(2)
  y=(pos(4)) : if pos(5) = 3 then y = mouse_y_position(copi_) : y0 = y-35
  ' 2d_fill_color 255,255,200
  2d_pen_color 0,0,255
  2d_pen_width 3
  2d_fill_color 239,240,154 : b=1

  2d_image_copy img1_,l,t,w+l,h +t
  2d_target_is vignet
  2d_clear
  2d_image_paste img1_,0,0

  gamma vignet ,-10
  2d_image_copy img1_,0,0,w,h
  2d_target_is pic_
  2d_image_paste img1_,l,t

  print_locate x,y :font_bold_off pic_ : font_italic pic_
  a$ = liste_$(msg%,1) : font_color pic_,0,0,50:font_size pic_,10: font_name pic_,"Consolas"
  a$ = a$+"|"

  repeat
      v=instr(a$,"|")
      if v > 0
        print left$(a$,v-1) : a$ = right_pos$(a$,v+1)
        y = y+20 :  print_locate x,y
      end_if
  until v=0
  print a$
  image_copy(ps_)
end_sub

' ===========================================================================

sub on_retour()
s(number_current_line," on_retour()")
  select pos(5)
      case 1 :' BOUTON
        2d_pen_width 1
        2d_pen_color 0,0,0
        2d_fill_off
        2d_rectangle pos(1),pos(2),pos(3),pos(4)
  end_select
  2d_target_is pic_  :' voir ici pour récupérer l'image du sprite
  file_load img_ ,dos$+"image.bmp"
  2d_image_paste img_,left(pic_),top(pic_)
  image_copy(ps_)
end_sub

' ============================================================================

sub evenements()
s(number_current_line," evenements()")
  select page
      case 1 : page1()
      case 2 : page2()
  end_select
end_sub
' ============================================================================
'        @@@@@@@@@@@@ PARTIE A CODER POUR LES EVENEMENTS @@@@@@@@@@@@@
'                    selon la page où l'objet est déclaré

sub page1()
s(number_current_line," page1()")
  select msg%
      case 1 :' bouton "quitter"
        fin()
      case 2 :' bouton contrôle
        ajouter_font()
  end_select
end_sub

' -------------------------------------------------------------------

sub page2()
s(number_current_line," page2()")
  select msg%
  end_select
end_sub

' =============================================================================
' clic sur bouton 1 "Stop"
sub fin()
  execute "c:\PANO\Pano_sans_événement\kill_pano.exe"
  terminate :' pour le cas où kill_pano pas trouvé
end_sub
' ============================================================================
' Click sur bouton 2 "contrôle"
sub ajouter_font()
s(number_current_line," clic_sur_control()")
  enrichir_fonte()
end_sub

' ============================================================================
sub image_copy(p)
s(number_current_line," image_copy()")
  2d_target_is pic_
  2d_image_copy img_,left(pic_),top(pic_) , width(pic_) , height(pic_)
  2d_target_is ps_ :' la form du picture
  2d_image_paste img_,left(pic_),top(pic_)
  2d_target_is pic_
end_sub

' ============================================================================
sub file_lecture(fichier$)
  if file_exists(fichier$) = 1
      file_open_read 1,fichier$
      file_readln 1,retour_$
      ' item_add 11,retour$
      file_close 1
  end_if
end_sub

rem "calcul les paramètres d'une fonte
rem " ON A D2FINI AVANT LE NOM DE LA POLICE, SIZE, ITALIQUE, GRAS ... puis on calcul les paramètres.
' on va se servir du picture 9003, picture de controle, qu'il faudra récuper, si la form 9000 est retirée

sub format_fonte(fonte%)
s(number_current_line,"format_fonte()")
  dim_local a%,y,d%,c%,larg%,b%
end_sub

' ============================================================================
' il faut faire le programme de choix d'une police, avec ses attributs

sub mettre_attribut(a$)
s(number_current_line," mettre_attribut()")
  dim_local v,b$,c%
  c%=1
  repeat
      v = instr(a$,"|")
      if v > 0
        select c%
            case 1 : font_name pic_,left$(a$,v-1)
            case 2 : font_size pic_,val(left$(a$,v-1))
            case 3 : b$=left$(a$,v-1):if b$="G" then font_bold pic_ : else : font_bold_off pic_
            case 4 : b$=left$(a$,v-1):if b$="I" then font_italic pic_ : else : font_italic_off pic_
            case 5 : b$=left$(a$,v-1):if b$="S" then font_underline pic_ : else : font_underline_off pic_
            case 6 : b$=left$(a$,v-1):if b$="B" then font_strike pic_ : else : font_strike_off pic_
        end_select
        a$ = right_pos$(a$,v+1)
      end_if
      c%=c%+1
  until c% = 7
end_sub

-------------------------------------------------------------------
sub mettre_font_couleur(a$)
s(number_current_line, " mettre_font_couleur()")
  dim_local b$,r,g,b ,r1,g1,b1
  dim_local key$ , t$ :  t$=" | "
  item_add va_,"42:a$=->"+a$+"<-="
  if instr(a$,"}")> 0 then a$ = right_pos$(a$,instr(a$,"}")+1)
  item_add va_,"44: a$=->"+a$+"<-="
  if a$ = "" then exit_sub
  b$=left$(a$,instr(a$,"|")-1)
  a$ = right_pos$(a$,instr(a$,"|")+1)

  r = val(left$(b$,instr(b$,",")-1)) : b$ = right_pos$(b$,instr(b$,",")+1)
  g = val(left$(b$,instr(b$,",")-1)) : b$ = right_pos$(b$,instr(b$,",")+1)
  b = val(b$)  :  font_color pic_,r,g,b
  ' .................
  r1= val(left$(a$,instr(a$,",")-1)) : a$ = right_pos$(a$,instr(a$,",")+1)
  g1= val(left$(a$,instr(a$,",")-1)) : a$ = right_pos$(a$,instr(a$,",")+1)
  b1= val(a$)  :  2d_fill_color r1,g1,b1
  item_add va_,"59:->"+str$(r)+t$+str$(g)+t$+str$(b)+t$+t$+str$(r1)+t$+str$(g1)+t$+str$(b1)
end_sub
====================================================================

sub enrichir_fonte()
s(number_current_line, " enrichir_fonte()")
  2d_fill_on : 2d_fill_color 179,179,0
  2d_rectangle 5,5,650,500
  2d_fill_color 255,255,255
  2d_rectangle 15,35,630,480
  ' représenter un list avec les fontes
  ' //////////////////////////////////////////////
  2d_fill_color 253,255,255 : 2d_pen_color 253,255,255 : font_color pic_,0,0,0

  ' ici mettre les boutons de commandes
    PAGE_mem = PAGE : ' mémoire de la page en cours
    PAGE = 0 :' pour qu'il n'y ait que les éléments correspondant à cette procédure
  ' ------------------------
  dim_local a$,b$,c$ , h , x , y ,r  , i , j , le , lig
  mettre_attribut(police$(1)) :' arial size du 4
  h=0
  2d_pen_width 2 : 2d_pen_color 200,200,252 : 2d_fill_on : 2d_fill_color 180,180,0 : font_color pic_ , 255,255,255
  font_size pic_,10 : font_bold pic_
  2d_rectangle 18,35,218,480

  2d_fill_color 120,0,0
  2d_rectangle 25,62,160,87  :  print_locate 70,65 : print "Fonte"
  2d_rectangle 25,127,160,152 :  print_locate 60,130: print "Nommée"
  2d_rectangle 25,182,160,207 :  print_locate 60,185: print "font_size"
  2d_rectangle 25,217,160,242 :  print_locate 75,220: print "Gras"
  2d_rectangle 25,252,160,277 :  print_locate 75,255: print "Italic"
  2d_rectangle 25,287,160,312 :  print_locate 58,290: print "Souligné"
  2d_rectangle 25,322,160,347 :  print_locate 70,325: print "Barré"
  2d_rectangle 25,357,160,382 :  print_locate 35,360: print "Couleur encre"
  2d_rectangle 25,392,160,417 :  print_locate 37,395: print "Couleur Fond"

  2d_fill_color 255,0,0
  2d_rectangle 20 ,430,90 ,455  : print_locate 32,433 : print "Valide"
  2d_rectangle 100,430,170,455 : print_locate 107,433: print "Annule"
  image_copy(ps_)

  initialise_timer(number_current_line)
  repeat
    decompte(3,number_current_line) : if timer_sortie% = 1 then exit_repeat
  until scancode = 0 and mouse_y_position(copi_) >24
  2d_image_copy img_, 5,5  ,  650 , height(pic_)+top(pic_)
  file_save img_,dos$+"coin_fonte.bmp"
end_sub

' ===========================================================================
sub position_ajoute_fonte(x,y)
caption ps_,"x="+str$(x)+"  y="+str$(y)
s(number_current_line," position_ajoute_fonte()")
  dim_local tx$
 if scancode = 1
  if y > 430 and y < 455 :' valide et annule
      if x > 20 and x < 90 :' valide
      rem " VÉRIFIER QUE TOUT EST OK AVANT DE QUITTER"

      rem "..........................................."
        page = page_mem
        ' stocke
        ' puis
        file_load img_,dos$+"image.bmp"
        2d_image_paste img_,0,0
        image_copy(ps_)
      end_if
      ' ...
      if x > 100 and x < 170 :' annule
        page = page_mem
        file_load img_,dos$+"image.bmp"
        2d_image_paste img_,0,0
        image_copy(ps_)
      end_if
  else
      if x > 25 and x < 160
        ' .................................
        if y > 62 and y < 87  :' fonte_name
            fontes_et_attributs_installes()
            file_load img_,dos$+"coin_fonte.bmp"
            font_size pic_,9:font_bold pic_:font_color pic_,0,0,0 : 2d_fill_color 180,180,0 : font_name pic_,"Consolas"
            2d_pen_color 180,180,0 :  2d_image_paste img_,5,5 : 2d_rectangle 25,90,215,110
            if val(retour$(0)) > 0 then print_locate 25,90 : print police$(val(retour$(0)))
            2d_image_copy img_,5,5,650 , height(pic_)+top(pic_)
            file_save img_,dos$+"coin_fonte.bmp"  :  2d_image_paste img_ , 5,5 : 2d_pen_color 91,179,225
            image_copy(ps_)
        end_if
        '
        if y >127 and y < 152 :' nom
            ' tx$ = message_input$("Donnez un nom de repère pour l'ensemble des attributs","Entrez le nom:","")
            ' il faut vérifier que tx$ n'est pas déjà utilisé
            clavier_fonte(27,155,160,175)
            tx$ = retour$(1)
            ' ensuite on le reporte
            file_load img_,dos$+"coin_fonte.bmp"
            font_size pic_,9:font_bold pic_:font_color pic_,0,0,0 : 2d_fill_color 180,180,0 : font_name pic_,"Consolas"
            2d_pen_color 180,180,0 :  2d_image_paste img_,5,5 : 2d_rectangle 25,90,215,110
            print_locate 25,155 : print tx$ :' à récupérer ensuite
            2d_image_copy img_,5,5,650 , height(pic_)+top(pic_)
            file_save img_,dos$+"coin_fonte.bmp"  :  2d_image_paste img_ , 5,5 : 2d_pen_color 91,179,225
            image_copy(ps_)
        end_if
        '
        if y > 182 and y < 207 :' font_size
        end_if
        '
        if y > 217 and y < 242 :' Gras
        end_if
        '
        if y > 252 and y < 277 :' italic
        end_if
        '
        if y > 287 and y < 312 :' souligné
        end_if
        '
        if y > 322 and y < 347 :' barré
        end_if
        '
        if y > 357 and y < 382 :' couleur encre
        end_if
        '
        if y > 392 and y < 417 :' couleur papier
        end_if
      end_if
  end_if
 end_if
end_sub

' ===========================================================================

sub fontes_et_attributs_installes()
s(number_current_line," fontes_et_attributs_installes()")
  repeat : pause 100 : until scancode = 0
  dim_local long,a%,nb_line%,nb_print%,le,i,decalage_lig% , mousex, mousey, lig_clic% , copie_lig% , choix
  long = 0 :' len maxi caractères
  for a% = 1 to 200 : if police$(a%) = "" then exit_for
  next a%  : nb_line%= a%

  nb_print% = nb_line% -1
  if nb_print% * fonte%(1,3) > height(pic_)-60 then nb_print% = (height(pic_)-60)/ fonte%(1,3) -1

  for a% = 1 to 200
    if police$(a%) = ""
        exit_for
    else
        le = 0
        for i = 1 to len(police$(a%))
          le =le + fonte%(1,asc(mid$(police$(a%),i,1)))
        next i
        if long < le then long = le
    end_if
  next a%
  long = long + 30
          ' METTRE EN MEMOIRE
  rem "==============================================================="
  decalage_lig% = 0  :' zone liste des fontes
  2d_image_copy img_, 5,5  ,  650 , height(pic_)+top(pic_)
  file_save img_,dos$+"coin_fonte.bmp"


  2d_fill_color 255,255,255 : 2d_pen_color 0,255,0 : 2d_pen_width 2
  2d_rectangle 14,43,long + 14, nb_print% *fonte%(1,3) + 48
  retour%(0,0) = long+14 :retour%(1,0)=nb_print% * fonte%(1,3) +48: retour%(2,0)=nb_print% :retour%(3,0)=long
  retour%(4,0) = decalage_lig%
  rem "==============================================================="
                          ' ********************
  rem "==============================================================="
  ' bouton pour décalage
  2d_fill_color 246,221,150 : 2d_pen_color 0,0,0 :2d_pen_width 1: font_color pic_,0,0,0
  ' décalage -
  2d_rectangle long-8, 47 ,long+11, 67  : font_name pic_,"Wingdings":font_size pic_,9
  print_locate long-5,49 : print chr$(217)
  ' décalage +
  2d_rectangle long-8, 70 ,long+11, 90
  print_locate long-5,72 : print chr$(218) :image_copy(ps_)
  font_bold pic_ : font_color pic_,255,0,0
  2d_rectangle long-8,120 , long+11,140
  print_locate long-6,122: print chr$(76) :' pleure sortie
  font_bold_off pic_ : font_color pic_,0,0,0

  list_menu(nb_print%,decalage_lig%)
  image_copy(ps_)
  mettre_attribut(police$(1))
  rem "==============================================================="
  initialise_timer(number_current_line)

  repeat
      mouseX = mouse_x_position(copi_) : mouseY = mouse_Y_position(copi_)
      ' ................
    ' if mouseY < 24 and mouseX >206 and mouseX <260 then ACTION_MenuCouleur(lig_clic%,decalage_lig%)

      if mousey < 64 and mousex > 20 and mousex < 218 and scancode = 1 then choix = 1 :' CHOIX voir autre chose car inutile
      if mouseX >10 and mouseX < long-10
        if mouseY > 44
            lig_clic% = (mouseY - 44 - 5) / 17 + 1: ' si la liste dépasse la hauteur du liste
            if lig_clic% > nb_print% then lig_clic% = nb_print%
            if copie_lig% > 0
              if copie_lig% <> lig_clic%
                  font_color pic_,0,0,0 : 2d_fill_color 255,255,255
                  print_locate 17, (copie_lig% )* fonte%(1,3) +24: print string$(47," ")
                  print_locate 17, (copie_lig% )* fonte%(1,3) +24
                  print police$(copie_lig%+decalage_lig%)
                  image_copy(ps_)
                  initialise_timer(number_current_line)
              end_if
            end_if

            if lig_clic% <> copie_lig%    : ' on est sur la ligne
              font_color pic_,255,255,255 : 2d_fill_color 0,0,255
              print_locate 17,  (lig_clic% )* fonte%(1,3) +24: print string$(47," ")
              print_locate 17,  (lig_clic% )* fonte%(1,3) +24
              print police$(lig_clic% + decalage_lig%) : copie_lig% = lig_clic%

              font_name pic_,police$(lig_clic% + decalage_lig%)
              font_size pic_,12 : font_bold pic_ : font_color pic_,0,0,0 : 2d_fill_color 255,255,255
              2d_rectangle long +10, 35 ,  630,480
              print_locate long+20 , 50 : print police$(lig_clic% + decalage_lig%)
              print_locate long+20 , 90 : print "0123456789"
              print_locate long+20, 130 : print "Teste d'Écriture"
              print_locate long+20, 170 : print "àéèêîïöôùûç"
              print_locate long+20, 210 : print "AaeGgJj"
              print_locate long+20, 250 : print "ÂÉÈÏÔÙ"

              ' remettre l'affichage menu
              mettre_attribut(police$(1))

              image_copy(ps_)
              initialise_timer(number_current_line)
            end_if
        end_if

      else      :' long-8,100 , long+11,120
        if scancode = 1 and mouseX > long-10
            repeat : until scancode = 0
            if mouseY > 70 and mousey < 120
              decalage_lig% = decalage_lig% +nb_print%
              if decalage_lig% > nb_line% - nb_print% then decalage_lig% =  nb_line% - nb_print% - 1

              list_menu(nb_print%,decalage_lig%)
              initialise_timer(number_current_line)
            end_if
            ' -------------
            if mouseY < 68
              decalage_lig% = decalage_lig% - nb_print%
              if decalage_lig% < 0 then decalage_lig% = 0
              list_menu(nb_print%,decalage_lig%)
              initialise_timer(number_current_line)
            end_if
            ' -------------
            if mousey > 120 and mousey < 140  :' pleure
              file_load img_ ,dos$+"image.bmp"
              2d_image_paste img_,0,0  : image_copy(ps_)  :' il faut amplifier la fermeture du liste fonte
              exit_repeat
            end_if
            image_copy(ps_)
        end_if
        wait 10: repeat:until scancode = 0
      end_if
      wait 100  : if scancode = 19 then exit_sub

      if (scancode = 1 and mouseX < (long-10)) then exit_repeat
    '  if mousey > (nb_print% +1)* 20 + 10 then exit_repeat :' pour éviter qu'une sélection soit prise lors d'un clic, mais si on a pas cliqué sur un item
      if mouseX > 480 then exit_repeat

      decompte(10,number_current_line) : if timer_sortie% = 1 then exit_repeat
  until scancode = 27
  if (mousey > 120 and mousey < 140) or timer_sortie% = 1
      file_load img_ ,dos$+"image.bmp"
      2d_image_paste img_,0,0  : image_copy(ps_)
  end_if
  if scancode <> 1 then lig_clic% = 0 : retour$(0) = ""
  if lig_clic% > 0
      retour$(0) = str$(lig_clic%+decalage_lig%) : retour%(6,1) = lig_clic% + decalage_lig%
      message "cliqué: "+ police$(val(retour$(0))) + chr$(13)+"long="+str$(long)+"  mouseX="+str$(mousex)
  end_if
  repeat : until scancode  = 0
  rem "                                                                      "
  rem "______________________________________________________________________"
  rem "======================================================================"

  ' list_menu(nb_print%,decalage_lig%)
  ' image_copy(ps_)
end_sub

' ===========================================================================

sub initialise_timer(ligne)
  dim_local a$ , b$
  ' temp_decompte%
  a$ =time$  : timer_sortie% = 0
  b$ = left$(a$,2) : temp_decompte% = val(b$) * 3600
  b$ = mid$(a$,4,2): temp_decompte% = temp_decompte% + val(b$) * 60
  b$ = right$(a$,2): temp_decompte% = temp_decompte% + val(b$)

end_sub
' ===========================================================================

sub decompte(t,ligne)
  dim_local a$ , a%  , b$
  a$ =time$
  b$ = left$(a$,2) : a% = val(b$) * 3600
  b$ = mid$(a$,4,2): a% = a% + val(b$) * 60
  b$ = right$(a$,2): a% = a% + val(b$) : if a% < temp_decompte% then a% = a% + 86400 :' 24h en secondes
  if  (a% - temp_decompte%) >= t then timer_sortie% = 1
  ' caption 10,"decompte: " + str$(t+(temp_decompte%-a%)) + "  ligne:"+str$(ligne) :' décompte restant de t à 0

  ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  return% = a%-temp_decompte%
  ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  pause 50
end_sub
' ===========================================================================

sub list_menu(a%,decalage_lig%)
  dim_local i , long
  long = retour%(3,0)
  2d_fill_color 255,255,255  : font_color pic_,0,0,0 : mettre_attribut(police$(1))
  for i=1 to a%
      print_locate 17 , fonte%(1,3) * i +24: print string$(47," ")
      print_locate 17 , fonte%(1,3) * i +24
      print police$(i+decalage_lig%)
  next i

  ' bouton pour décalage
  2d_fill_color 246,221,150 : 2d_pen_color 0,0,0 :2d_pen_width 1: font_color pic_,0,0,0
  ' décalage -
  2d_rectangle long-8, 47 ,long+11, 67  : font_name pic_,"Wingdings":font_size pic_,9
  print_locate long-5,49 : print chr$(217)
  ' décalage +
  2d_rectangle long-8, 70 ,long+11, 90
  print_locate long-5,72 : print chr$(218)
  image_copy(ps_)
  mettre_attribut(police$(1))
end_sub
' ===========================================================================
' @@@@@@@@@@@@@@@@@@@@@@@@ C'EST ICI QU'IL Y A PROBLÈME @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' @@@@@@@@@@@@@@@@@@@@@@@@    CONCERNE      INKE$      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@

sub clavier_fonte(x,y,x1,y1)
s(number_current_line," clavier_fonte()")
message "C'est ici qu'il y a un problème"+chr$(13)+"cliquez sur nommée fonte, puis essayez de taper un nom"+chr$(13)+"Normalement il devrait s'écrire dans 'Entrez le nom'"+chr$(13)+"pour arréter, ESC et PAUSE"
  dim_local curseur,ga,larg , clavier$ , clav$, top_clavier , ad,a$
  ga = x+10 : top_clavier = y+2

  2d_pen_color 0,0,255:2d_pen_width 2 : 2d_fill_color 255,255,255 :2d_fill_on
  font_size pic_,10 : font_name pic_,"Consolas" : font_bold pic_ :  ' 2d_rectangle x,y,x1,y1
  2d_image_copy img_  ,x,y,x1,y1
  font_color pic_,150,150,150
windowfocus%=dll_call0("GetFocus") : top 0,1000 : set_focus 0 : ' memorise le focus du form courant, cache le form 0 et on lui donne le focus
  print_locate ga,top_clavier : print "Entrez le nom" : image_copy(ps_)
  repeat :pause 100: until scancode > 31
  print_locate ga,top_clavier : print "            " : image_copy(ps_)
  2d_pen_color 255,0,0 : 2d_pen_width 1
  ' 2d_fill_color 240,240,240

  repeat
set_focus 0 : ' on force le form 0 à garder le focus
      2d_pen_color 255,255,255 : ' efface le curseur
      trace_curseur(ga,top_clavier,curseur)
      if clavier$ = "" then curseur =0
      clav$ = inkey$
      item_add va_,"clav$="+clav$ + " scancode="+str$(scancode)
      if scancode = 8 :' retour arrière
        if curseur > 1
            clavier$ = left$(clavier$,curseur-1) + right_pos$(clavier$,curseur+1)
            curseur = curseur-1
        else
            clavier$ = right_pos$(clavier$,2): curseur = 0
        end_if
      end_if

      if clav$ = ""
        if scancode = 37 and clav$ = "":' and curseur>0
            curseur = curseur - 1
        else
            if scancode = 39 and curseur < len(clavier$)
              curseur = curseur + 1
            else
              if scancode = 46 :' del
                  clavier$ = left$(clavier$,curseur) + right_pos$(clavier$,curseur+2)
              else
                  if scancode =38 or scancode = 36:' origine
                    curseur = 0
                  else
                    if scancode = 40 or scancode = 35: ' fin
                        curseur = len(clavier$)
                    end_if
                  end_if
              end_if
            end_if
        end_if
      end_if

      if clav$ <> ""
        if asc(clav$) > 31
            if curseur = len(clavier$)
              clavier$ = clavier$ + clav$ : curseur = curseur + 1
            else
              if curseur > 1
                  clavier$ = left$(clavier$,curseur) + clav$ + right_pos$(clavier$,curseur +1)
                  curseur = curseur +1
              else
                  if curseur = 1
                    2d_pen_color 0,0,255 : trace_curseur(ga,top_clavier,0)
                  ' @@@@@@
                    clavier$ = left$(clavier$,1) + clav$+right_pos$(clavier$,2) : curseur = 2
                  else
                    clavier$ = clav$ + clavier$ : curseur = 1
                  end_if
              end_if
            end_if
        end_if
      end_if

      print_locate ga,top_clavier : print clavier$+" "
      2d_pen_color 255,0,0 : 2d_pen_width 1 : trace_curseur(ga,top_clavier,curseur)
      item_add va_,"clavier$="+clavier$

      image_copy(ps_) : item_add va_,clavier$
      repeat: wait 1 :until scancode = 0 or scancode = 27 : wait 1:repeat:until scancode <> 0 :caption 0,scancode
  until scancode = 13 or scancode = 27
  retour$(1) = clavier$
 top 0,0 : null%=dll_call1("SetFocus",windowfocus%) : ' restaure le form 0 et rappele la dernière fenetre qui avait le focus
end_sub
========================
sub trace_curseur(ga,top_clavier,curseur)
      2d_line ga + curseur * 9 , top_clavier, ga + curseur * 9 , top_clavier+23        :' gauche
      2d_line ga + curseur * 9 , top_clavier, ga + curseur * 9 +10 , top_clavier        :' haut
      2d_line ga + curseur * 9 , top_clavier+22, ga + curseur * 9 +10 , top_clavier+22  :' bas
      2d_line ga + curseur * 9+9 , top_clavier, ga + curseur * 9+9 , top_clavier+22  :' droite
end_sub

' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ fin DU PROBLÈME @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

' bibliothèque : BOUTON
chain "C:\PANO\RE-editeur\new_lanceur.bas":' à retirer une fois le programme fini
' ==============================================
' bouton("clic=1|left=50|top=20|width=90|height=30|caption$={STOP}font_name=menu|") <-- exemple d'appel

sub bouton(donne$)
s(number_current_line," bouton()")
  number()  :' recherche d'un n° libre pour l'objet
  item_add va_ , "obj%=" + str$(obj%) + "  maxi% ="+str$(maxi%)

  dim_local clic,p,l,t,w,h,c$ , le , font$ ,v , b$ , type , r$ : type = 1 :' 1=bouton
  dim_local gauche,haut,ho
  r$ = "/"
  v = instr(donne$,"{")
  if v > 0
      c$ = right_pos$(donne$,v+1) : c$ = left$(c$,instr(c$,"}")-1)
      donne$ = left$(donne$,v-1)+right_pos$(donne$,instr(donne$,"}")+1)
      item_add va_,"c$="+c$
      item_add va_,"donne$="+donne$+"<--"
      donne$ = lower$(donne$)

  end_if
  v = instr(donne$,"clic=")      : if v > 0 then b$ = right_pos$(donne$,v+5) : clic = val(left$(b$,instr(b$,"|")-1))
  v = instr(donne$,"parent=")    : if v > 0 then b$ = right_pos$(donne$,v+7) : p = val(left$(b$,instr(b$,"|")-1)) : 2d_target_is p:print_target_is p
  v = instr(donne$,"left=")      : if v > 0 then b$ =right_pos$(donne$,v+5)  : l = val(left$(b$,instr(b$,"|")-1))
  v = instr(donne$,"top=")      : if v > 0 then b$ =right_pos$(donne$,v+4)  : t = val(left$(b$,instr(b$,"|")-1))
  v = instr(donne$,"width=")    : if v > 0 then b$ =right_pos$(donne$,v+6)  : w = val(left$(b$,instr(b$,"|")-1))
  v = instr(donne$,"height=")    : if v > 0 then b$ =right_pos$(donne$,v+7)  : h = val(left$(b$,instr(b$,"|")-1))
  v = instr(donne$,"font_name=") : if v > 0 then b$ = right_pos$(donne$,v+10): font$ = left$(b$,instr(b$,"|")-1)

  gauche = left(pos(1)) : haut = top(pos(2))
  le = L -gauche - 20
  ' ho = t - haut

  item_add objet%,"BOUTON " + str$(obj%) +" clic="+str$(clic) +" parent="+str$(p) + " left="+str$(l) +" top="+str$(t)
  item_add objet%,"      width="+str$(w)+ " height="+str$(h)+ " caption$="+c$  + " font$="+font$

  if font$="menu" then ft% = 1 :' provisoir en attendant de faire les subs
  dessine_moi_un_bouton(l,t,w,h,c$,ft%)
                  ' -->clic, parent,left,top,width,height<--
  liste_$(obj%,0)=str$(clic)+r$+str$(p)+r$+str$(L)+r$+str$(T)+r$+str$(W)+r$+str$(H)+r$    :' 'par défaut pour l'instant
                '        type:bouton , left pour caption , caption$
  rem " revoir, il y a LE
  liste_$(obj%,0)=liste_$(obj%,0) + "1"+r$ + str$(page) + r$ + str$(le+15) + r$ + "|" + c$ + r$
  item_add va_,liste_$(obj%,0)
  '      liste$(x)    | liste$(x)
  ' 0=click 0=OFF 1=ON |
  ' 1=parent          |  type
  ' 2=left    pos(1)  |  caption
  ' 3=top    pos(2)  |  écart
  ' 4=width  pos(3)  |
  ' 5=height  pos(4)  |
  ' 6=type    pos(5)  |  bouton = 1
  ' 7=page    pos(6)  |
  ' 8=ecart  pos(7) ??
  ' 9=caption
  ' 10=N° police$(x)
end_sub

' =============================================================================

' mettre à ON :1 ou OFF :0    le contrôle du clic du bouton
sub bouton_clic(n,clic)
  if liste_$(n,0) <> "" then liste_$(n,0) = str$(clic)+right_pos$(liste_$(n,0),2)
end_sub

' =============================================================================
sub dessine_moi_un_bouton(x,y,w,h,t$,ft%)
s(number_current_line," dessine_moi_un_bouton()")
item_add va_,"x="+str$(x)+" y="+str$(y)+" w="+str$(w)+" h="+str$(h)+" t$=->"+t$+"<-"+" ft%="+str$(ft%)
  '    show ps_
  if ft% = 0 then ft% = 1
  dim_local fx,fy,fw,fh,R , L , a% , b$ :' la fonte doit-être déjà faite
  r=5
  2d_pen_width 3 : 2d_pen_color 91,179,225 : 2d_fill_off
  2d_circle x+r , y+r ,r  : 2d_circle x+w-r-r , y+r ,r : 2d_circle x+r,y+h-r-r,r : 2d_circle x+w-r-r , y+h-r-r ,r
  2d_line x+r, y ,  x+w-r-r ,y :  2d_line x+r , y+h-r , x+w-r-r ,y+h -r      :' lignes horizontales
  2d_line x , y+r  , x , y+h-r-r :  2d_line x+w-r-1 , y+r , x+w-r-1 , y+h-r-r :' lignes verticales

  ' provisoir
  font_name pic_,"Arial" : font_size pic_,9 : font_bold_off pic_

  2d_fill_on : 2d_fill_color 255,255,255  :  2d_pen_color 255,255,255 : 2d_pen_width 1
  mettre_font_couleur(police$(ft%))
  2d_rectangle x+r-1 , y+2  ,  x+w-r-r+2  , y+h-r-1    :' remplissage verticale intérieur
  2d_rectangle x +2 , y+r , x+w -r-2 ,  y+h-r-r        :' remplissage horizontal intérieur

  for a%=1 to len(t$)
      b$ = mid$(t$,a%,1)
      L = L + fonte%(ft%,asc(b$))
      item_add va_,left$(t$,a%)+ "<- fonte%(ft%,asc(b$))="+str$(fonte%(ft%,asc(b$)))+ " L="+str$(L)
  next a%

  fx = x+  (W-L)/2
  fy = (h-6- fonte%(ft%,4) )/2 + y

  ' font_color pic_,255,0,0
  mettre_attribut(police$(ft%)) : mettre_font_couleur(police$(ft%))
  print_locate fx , fy  :  print t$
  image_copy(ps_)
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Fonction inkey$ inactive dans un form autre que form0    

Revenir en haut Aller en bas
 
Fonction inkey$ inactive dans un form autre que form0
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 3Aller à la page : Précédent  1, 2, 3  Suivant
 Sujets similaires
-
» Ajout d'un nouveau type d'objet dans une form Panoramic !
» Utilisation du bouton Résolu
» Déplacer dynamiquement un objet dans une form
» intégrer une animation flash dans le form
» Comment faire un lien vers une autre page du site ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: