Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Compilateur FBPano | |
|
+11Pedro Ouf_ca_passe RMont Yannick Klaus papydall pascal10000 Minibug Jicehel jpcr jean_debord 15 participants | |
Auteur | Message |
---|
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Sam 9 Sep 2017 - 11:17 | |
| Ajout d'une autre instruction : FB_CONTOUR, pour tracer des courbes de niveaux. Ces courbes joignent les points où la fonction prend les mêmes valeurs. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Compilateur FBPano Jeu 14 Sep 2017 - 17:03 | |
| Ca pour les matheux, c'est carrément pratique pour visualiser les résultats | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Ven 15 Sep 2017 - 8:59 | |
| Merci Jicehel En fait j'utilise actuellement ces méthodes pour une application scientifique (chimie de l'environnement) que j'étudie avec des collègues. Voici un exemple des graphiques obtenus, avec ici les courbes de niveaux + un gradient de couleurs. | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Lun 25 Sep 2017 - 9:12 | |
| Nouvelle version 0.26 ---------------------
1. Nouvelles commandes graphiques FB_CONTOUR et FB_COLORMAP (voir messages précédents) ; les exemples correspondants sont ex79.bas et ex80.bas dans exemples\FLTK.
2. Ajout des fonctions RGBA_R, RGBA_G, RGBA_B, RGBA_A pour extraire les 4 composantes d'une couleur exprimée par un entier de 32 bits
3. Nouvelles versions des programmes de tracé de fractales (exemples\fractal et exemples\fractal\panomand) ; on peut notamment :
- créer des images jusqu'à 5000 x 5000 pixels, donc plus grandes que l'écran
- zoomer en cliquant directement sur l'image, sans passer par la fenêtre de saisie
4. Bug corrigé : la commande SAVE_IMG (apparentée à SNAPSHOT de PANORAMIC) permettait de sauvegarder l'image d'un objet, mais pas de la fenêtre complète
5. Installation : les fichiers sont sur mon WebDav, dossier FBPano.
* Si vous avez installé la version 0.25 : ne pas désinstaller ; exécutez le programme de mise à jour update_025_to_026.exe en gardant le même répertoire d'installation que pour la 0.25
* Si vous avez une version antérieure à 0.25 : désinstallez cette version et installez la version 0.26 complète avec le programme setup_026.exe
| |
| | | Mike
Nombre de messages : 31 Age : 73 Localisation : NANCY Date d'inscription : 12/06/2007
| Sujet: Matwidget vs autre construction Mar 10 Oct 2017 - 23:01 | |
| Bonsoir Jean, Je t'envoie un petit programme qui met en valeur quelques interrogations que je soumets à ta sagacité. Bien sûr, il n'est pas optimisé, mais j'ai voulu le découper en sub dédiées pour bien comprendre. Une construction par Matwidget pour une matrice et une autre plus conventionnelle. Le principe est de générer un chiffre ou un nombre aléatoire et de le supprimer de la liste définie au préalable afin que le tirage soit le plus représentatif par rapport à ce qu'il reste réellement Ce qui m'interpelle est la non application du schème dans une autre construction que par Matwidget. D'autre part, la fonction get_xywh ne s'applique que s'il y a une action au préalable sur un objet ; sinon, elle est ignorée du moins dans une sub. Le programme est assez basique mais met bien en valeur ce que j'ai précité. Je me suis aussi rendu compte qu'il n'était pas possible de supprimer un objet, ce qui n'est pas à priori redhibitoire, mais ça sert quelquefois pour le reconstruire. Autre question, je n'arrive pas à configurer une dlist avec UTD. Je souhaite qu'en quelques lignes tu puisses me donner un exemple. En tous cas, les constructions sont instantanées comme tu le verras dans mon exemple et bravo. Je vais m'attaquer maintenant aux chaînes de caractères et aux fichiers car cela me passionne Merci de m'avoir lu et sans vouloir t'influencer, il me semble qu'il serait opportun que tu puisses créer un sujet dans Panoramic pour ceux qui désirent proposer leurs programmes dédiés à FBpano En tout cas, merci pour ton investissement dans notre communauté. Mike - Code:
-
dim u%(50),v%(50),i%,num%,num1%
set_scheme "gtk+" form 0, 100, 100, 650, 500, "Test" list 200, 400, 60, 50, 350, "200" list 210, 450, 60, 50, 350, "210" list 220, 500, 60, 50, 350, "220" list 230, 550, 60, 50, 350, "230"
button 102, 40, 380, 100, 25 Caption 102,"tirage"
button 103, 220, 380, 100, 25 Caption 103,"tirage" on_click 102,tirage_nombres on_click 103,tirage_nombres_2
for i%= 1 to 50 item_add 100,str$(i%) next i% for i%= 51 to 100 item_add 120,str$(i%) next i% nombres() nombres2() start 0 end
Sub tirage_nombres() init() dim l%,n%,a$,c% for i%= 1to 5 c%= item_count(200) print c% for l%= 1 to c% Randomize n%= (int(c% * Rnd)+1) next l% a$=item_read(200,n%) num%=n% num%=val(a$) item_delete 200,n% ' print num% coul_nombres() next i% end sub
Sub tirage_nombres_2() init2() dim l%,n%,a$,c% for i%= 1to 5 c%= item_count(220) for l%= 1 to c% Randomize n%= (int(c% * Rnd)+1) next l% a$=item_read(220,n%) num1%=n% num1%=val(a$) item_delete 220,n% ' print num1% coul_nombres_2() next i% end sub
sub coul_nombres() dim x%,y%,w%,h% hide 1 ' s'il n'y a pas d'action au préalable sur un objet get_xywh ne fonctionne pas get_xywh num%, x%, y%, w%, h% x%=x%-3 y%=y%-3 w%=30 h%=30 resize num%, x%, y%, w%, h% font_caption num%,FL_TIMES_BOLD,20 color_fl num%, FL_Yellow print num% u%(num%)=num% item_add 210,str$(num%) show 1 end sub
sub coul_nombres_2() dim x%,y%,w%,h% hide 51 ' s'il n'y a pas d'action au préalable sur un objet get_xywh ne fonctionne pas get_xywh num1%, x%, y%, w%, h% x%=x%-3 y%=y%-3 w%=30 h%=30 resize num1%, x%, y%, w%, h% font_caption num1%,FL_TIMES_BOLD,20 color_fl num1%, FL_Yellow print num1% v%(num1%)=num1% item_add 230,str$(num1%) show 51 end sub
sub nombres() ' Construction par Matwidget
dim obj%,nfirst%,nlast%,i% ' schème ok comme défini au départ dim x%,y%,w%,h% nfirst = 1 nlast = matwidget(T_Button, 10, 5, 1, 20, 60, 25, 25, 5, 5, 2) for obj% = nfirst to nlast caption obj, str(obj) set_box_type obj, 54 color_fl obj%, FL_cyan next obj end sub
sub nombres2() ' construction plus conventionnelle
set_scheme "gtk+" ' pas de schème dans cette configuration dim obj%,i%,x%,y%,w%,h% x%=200:y%=60:w%=25:h%=25 for obj%=51 to 96 step 5 button obj%,x%,y%,25,25,str$(obj%-50) color_fl obj%, FL_cyan y%=y%+30 next obj% x%=230:y%=60 for obj%=52 to 97 step 5 button obj%,x%,y%,25,25,str$(obj%-50) color_fl obj%, FL_cyan y%=y%+30 next obj% x%=260:y%=60 for obj%=53 to 98 step 5 button obj%,x%,y%,25,25,str$(obj%-50) color_fl obj%, FL_cyan y%=y%+30 next obj% x%=290:y%=60 for obj%=54 to 99 step 5 button obj%,x%,y%,25,25,str$(obj%-50) color_fl obj%, FL_cyan y%=y%+30 next obj% x%=320:y%=60 for obj%=55 to 100 step 5 button obj%,x%,y%,25,25,str$(obj%-50) color_fl obj%, FL_cyan y%=y%+30 next obj% end sub
sub init() ' récupération des nombres du précédent tirage et remise en forme du tableau dim font dim l%,a$,z% dim x%,y%,w%,h% font= num_font("arial") list_clear 200 for i%= 1 to 50 item_add 200,str$(i%) next i% l%=item_count(210) for i%= 1 to l% a$=item_read (210,i%) z%=val(a$) get_xywh z%,x%, y%, w%, h% x%=x%+3 y%=y%+3 w%=25 h%=25 resize z%, x%, y%, w%, h% font_caption z%,font,12 color_fl z%, FL_cyan next i% list_clear 210 end sub
sub init2() ' récupération des nombres du précédent tirage et remise en forme du tableau dim font dim l%,a$,z% dim x%,y%,w%,h% font= num_font("arial") list_clear 220 for i%= 51 to 100 item_add 220,str$(i%) next i% l%=item_count(230) for i%= 1 to l% a$=item_read (230,i%) z%=val(a$) get_xywh z%,x%, y%, w%, h% x%=x%+3 y%=y%+3 w%=25 h%=25 resize z%, x%, y%, w%, h% font_caption z%,font,12 color_fl z%, FL_cyan next i% list_clear 230 end sub
| |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Mer 11 Oct 2017 - 9:14 | |
| Bonjour Mike, Merci pour cet exemple. Je regarde cela dès que possible. Je peux déjà te dire que : 1) Effectivement, il n'y a pas d'instruction pour détruire un objet. C'est un oubli de ma part. Ce sera corrigé dans la prochaine mise à jour. 2) Les DLISTs ne peuvent contenir que des chaînes de caractères, comme en PANORAMIC. Pour les UDTs on peut faire des tableaux, et même des tableaux dynamiques : - Code:
-
type myUDT = (a%, b, c$)
dim ts<myUDT>(100) ' tableau statique (taille constante)
dim td<myUDT>() ' tableau dynamique (taille variable)
dim n%
randomize timer n = rnd * 100
redim td<myUDT>(n) ' "redim preserve" pour garder le contenu précédent
td(n).a = 10 td(n).b = 3.14 td(n).c = "hello"
? n, ubound(td), td(n).a, td(n).b, td(n).c
3) On peut créer de nouveaux sujets dans le sous-forum du compilateur FBPano. Il suffit de cliquer sur le bouton "Nouveau". | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Mer 11 Oct 2017 - 10:33 | |
| En ce qui concerne le programme proprement dit : 1) SET_SCHEME fonctionne de façon globale : il affecte tous les objets simultanément, c'est pourquoi il vaut mieux le définir une fois pour toutes en début de programme. Pour changer ensuite le style d'un objet particulier il faut utiliser SET_BOX_TYPE comme dans le sous-programme NOMBRES 2) GET_XYWH fonctionne très bien ; il faut juste faire REDRAW à la fin du sous-programme pour forcer FLTK à redessiner la fenêtre : - Code:
-
sub coul_nombres() dim x%,y%,w%,h% get_xywh num%, x%, y%, w%, h% x%=x%-3 y%=y%-3 w%=30 h%=30 resize num%, x%, y%, w%, h% font_caption num%,FL_TIMES_BOLD,20 color_fl num%, FL_Yellow print num% u%(num%)=num% item_add 210,str$(num%) redraw end sub
Moi aussi, je me fais souvent avoir par oubli de REDRAW | |
| | | Mike
Nombre de messages : 31 Age : 73 Localisation : NANCY Date d'inscription : 12/06/2007
| Sujet: Re: Compilateur FBPano Mer 11 Oct 2017 - 18:25 | |
| Bonsoir Jean, Merci beaucoup pour tes réponses bien claires. Je te confirme que GET_XYWH fonctionne parfaitement après un redraw. SET_SCHEME est moins évident, mais je dois tester car ce soir je n'ai pas le temps mais il me semble que ça ne fonctionne pas tout à fait comme tu dis. Concernant les dlist, merci d'avoir éclairé ma lanterne et j'ai bien tout compris dans ton exemple. Mais de base, je voulais simplement déclarer une dlist comme on le fait dans panoramic sur un objet avec simplement un numéro. Merci aussi de m'avoir simplement signalé que dans le forum, il était possible de générer un nouveau sujet. Cela prouve que je ne suis pas très actif. Bonne soirée Mike | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Jeu 12 Oct 2017 - 8:53 | |
| Bonjour Mike, Extrait de la documentation : ------------- Les DLISTs (Data Lists) sont des structures de données dynamiques contenant des chaînes de caractères. Création : comme un UDT avec le type prédéfini dlist dim list <dlist> -------------- Les DLISTs n'ont donc pas de numéro. Contrairement aux LISTs, ce ne sont pas des objets graphiques. On les distingue par le nom de la variable : - Code:
-
dim L1 <dlist> dim L2 <dlist>
Bien sûr tu peux créer un tableau de DLISTs : - Code:
-
dim L <dlist> (10)
auquel cas chaque DLIST sera repérée par son indice dans le tableau : L(0) à L(10) | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Lun 23 Oct 2017 - 10:24 | |
| Nouvelle version 0.27 --------------------- Cette version ajoute deux objets permettant de créer un éditeur de texte : TEXT_EDITOR et TEXT_BUFFER. Ces objets sont complémentaires : TEXT_BUFFER traite le texte en mémoire, TEXT_EDITOR affiche le résultat. Documentation : fbpano.htm --> Les objets FLTK (9) L'exemple ex81.bas (dans exemples\FLTK) montre un éditeur élémentaire construit avec ces objets (c'est une adaptation partielle d'un programme en C++ fourni avec la documentation de FLTK) : En plus, la commande OBJECT_DELETE permet de supprimer un objet. Les fichiers sont sur mon WebDav, dossier FBPano. * Si vous avez installé la version 0.26 : ne pas désinstaller ; exécutez le programme de mise à jour update_026_to_027.exe en gardant le même répertoire d'installation que pour la 0.26 * Si vous avez une version antérieure à 0.26 : désinstallez cette version et installez la version 0.27 complète avec le programme setup_027.exe | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Lun 30 Oct 2017 - 9:01 | |
| Premier essai de coloration syntaxique avec l'objet TEXT_EDITOR : Pour l'instant, cela ne marche qu'avec un texte prédéfini (donc uniquement pour l'affichage). Reste à l'adapter à un texte en cours de modification... J'ai un exemple en C++ mais ce n'est pas très explicite ! | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Mer 8 Nov 2017 - 9:43 | |
| Un deuxième essai un peu plus convaincant, avec un début d'éditeur : Il reste pas mal de choses à améliorer. Avec un peu de chance, ce sera prêt pour la prochaine mise à jour. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Compilateur FBPano Mer 8 Nov 2017 - 13:22 | |
| Bravo Jean et bonne continuation à toi (Je suis toujours ce qui se passe de loin mais ça avance bien) | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Lun 20 Nov 2017 - 9:35 | |
| J'ai ajouté à l'éditeur une option pour compiler le code source. Elle a l'air de marcher ... En revanche, je n'ai pas réussi à lancer le programme compilé depuis l'éditeur ; tous mes essais se sont soldés par des bugs ! Il faut lancer le programme en-dehors de l'éditeur, p. ex. en cliquant sur son icône dans l'explorateur de fichiers. J'en reste là pour le moment. L'éditeur sera livré tel quel dans la prochaine mise à jour. La prochaine étape consistera à mettre au point un système pour visualiser l'aide de FBPano avec un objet HVIEWER (qui reste à implémenter). Au fait, quel est le numéro de HVIEWER dans Panoramic, c'est-à-dire le résultat de la fonction OBJECT_TYPE ? Je ne l'ai pas trouvé dans la version que j'utilise. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Compilateur FBPano Lun 20 Nov 2017 - 9:45 | |
| Bonjour Jean,
D'après le programme de Sylverman (https://panoramic.1fr1.net/t5284-evenements-et-objets-systeme-listage-automatique) et si j'en fais bon usage, le numéro pour HVIEWER est le 36.
Merci et bonne continuation ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Compilateur FBPano Lun 20 Nov 2017 - 9:47 | |
| Version: V0.9.28i2 du 9 Juillet 2017 | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Compilateur FBPano Lun 20 Nov 2017 - 9:58 | |
| Bonjour Klaus ! Comme à ton habitude, ta réponse qui est claire, nette et sans ambiguïté ! Merci pour ton micro code et bonne journée ! | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Lun 20 Nov 2017 - 10:51 | |
| Merci pour vos réponses !
Il aura donc le numéro 360 dans FBPano, selon la convention que j'utilise :
Type FBPano = (Type PANORAMIC) * 10 + Offset
L'offset (0..9) servant à désigner les variantes d'un même objet. | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Mar 21 Nov 2017 - 9:07 | |
| Nouvelle version 0.28 ---------------------
- Ajout de plusieurs instructions pour les objets TEXT_EDITOR et TEXT_BUFFER ; voir Documentation : fbpano.htm --> Les objets FLTK (9)
- Programmes de démonstration (dans exemples\FLTK) :
* ex82.bas : coloration syntaxique * ex83.bas : éditeur de programmes (Voir les copies d'écran dans mes messages précédents) - Correction d'un bug empêchant l'utilisation de parenthèses vides avec certains noms de sous-programmes (merci à Ouf_ça_passe qui l'a signalé)
Les fichiers sont sur mon WebDav, dossier FBPano.
* Si vous avez installé la version 0.27 : ne pas désinstaller ; exécutez le programme de mise à jour update_027_to_028.exe en gardant le même répertoire d'installation que pour la 0.27
* Si vous avez une version antérieure à 0.27 : désinstallez cette version et installez la version 0.28 complète avec le programme setup_028.exe | |
| | | Ouf_ca_passe
Nombre de messages : 285 Age : 76 Localisation : Villeneuve d'Ascq (59-Dpt du NORD) France Date d'inscription : 21/12/2015
| Sujet: Félicitations Mer 22 Nov 2017 - 10:25 | |
| Bonjour les Panoramicien(ne)s et FBPanistes @ Jean Debord La MAJ s'est effectuée sans problème. C'est désormais à moi de jouer en incluant les nouveaux mots-clés et en réalisant ton ex83-FBPano-Editor_2 avec mon CodeMaker. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Compilateur FBPano Ven 27 Sep 2019 - 23:33 | |
| Bonjour Jean ! je tente de programmer en FBPano et je suis déjà bloqué au bout de quelques lignes... En fait je tente de reprendre ton exemple d'éditeur pour lui ajouter quelques fonctions supplémentaires. C'est une façon de m'habituer à ce langage et aussi pourquoi pas me lancer dans les programmations plus conséquentes par la suite... Voila la partie qui me pose problème. Je souhaite intégrer la liste des polices comme dans un autre de tes exemples. Il y a quelque chose que je n'ai pas du intégré dans l'exemple de base... - Code:
-
form fmPolice, 200, 200, 380, 420, "Liste des polices"
form_begin fmPolice list lsPolice, 5, 5, 280, 380 dim nf%, i% , num%(), font$() nf = font_list(lsPolice, font()) for i = 0 to nf - 1 list_item_add lsPolice, "@S20@F" & num(i) & font(i) next i form_end fmPolice
| |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Sam 28 Sep 2019 - 8:55 | |
| Bonjour Minibug, Merci de tester FBPano La syntaxe de FONT_LIST est : - Code:
-
nf = font_list(num(), font())
Ce n'est qu'après que l'on transfère les noms de polices dans un objet LIST (ou tout autre objet qui les accepte) | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Compilateur FBPano Sam 28 Sep 2019 - 9:44 | |
| Merci pour ta réponse Jean ! N'étant adepte que du Basic Panoramic, la syntaxe de FBPano me dépasse un peu... Cela dit j'étudie depuis quelques temps la documentation de FBP et cela me semble très intéressant. J'aimerai bien me familiariser d'avantage avec ton langage mais je me rends compte aussi de mes lacunes... Pour la syntaxe FONT_LIST c'est d'accord mais je n'arrive toujours pas a remplir mon LIST. En plus il y a différentes erreurs suite à ces quelques lignes. Comment dois-je m'y prendre et où est l'erreur dans mon code ? Dois-je positionner la boucle plus loin dans le code ou est ce un problème de syntaxe ?! Merci d'avance pour ta réponse. - Code:
-
form fmPolice, 200, 200, 380, 420, "Liste des polices"
form_begin fmPolice list lsPolice, 5, 5, 280, 380 dim nf%, i% , num%(), font$() nf = font_list(num(), font()) for i = 0 to nf - 1 list_item_add lsPolice, "@S20@F" & num(i) & font(i) next i form_end fmPolice
| |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Compilateur FBPano Sam 28 Sep 2019 - 11:08 | |
| Je suppose que c'est l'éditeur START_FBPANO que tu essaies de modifier ? Dans ce cas il faut : 1) mettre toutes les déclarations de variables globales au début pour éviter les redéclarations (cas de la variable i%) - Code:
-
.................................................................... dim obj% ' Numéro d'objet dim i% ' Variable de boucle dim nf% ' Nombre de polices dim num%() ' Numéros des polices dim font$() ' Noms des polices
2) ajouter les objets supplémentaires dans ENUM pour leur attribuer des numéros : - Code:
-
enum GUI ..... fmPolice lsPolice end_enum
3) enlever les déclarations de variables qui ont été transférées à l'étape 1 : - Code:
-
' Fenetre des polices
form fmPolice, 200, 200, 380, 420, "Liste des polices"
form_begin fmPolice list lsPolice, 5, 5, 280, 380 nf = font_list(num(), font()) for i = 0 to nf - 1 list_item_add lsPolice, "@S20@F" & num(i) & font(i) next i form_end fmPolice
Attention à la compilation de l'éditeur (voir dans le fichier START_FBPANO.HTM) : il faut compiler en ligne de commande ... Note : dans la prochaine version de FBPano la numérotation des objets sera supprimée. On accédera directement à des variables du type considéré : - Code:
-
dim frm <T_Form> dim btn <T_Button>
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Compilateur FBPano Sam 28 Sep 2019 - 11:38 | |
| J'ai pourtant l'impression de bien tout faire comme il faut et j'ai toujours les mêmes messages d'erreurs ! Cette fois je colle le code complet car je ne comprends pas... - Code:
-
' ********************************************************************** ' Editeur FBPano, d'apres le programme de demonstration de FLTK : ' www.fltk.org/doc-1.3/editor.html ' **********************************************************************
const FORM_WIDTH = 850 ' Largeur de la fenetre principale const FORM_HEIGHT = 500 ' Hauteur de la fenetre principale const FONT = FL_COURIER ' Police de caracteres const FONT_SIZE = 15 ' Taille des caracteres const FONT_COLOR = FL_BLACK ' Couleur du texte const BKG_COLOR = FL_WHITE ' Couleur du fond const LNUM_COLOR = FL_RED ' Couleur des numeros de lignes const LNUM_WIDTH = 60 ' Largeur de la marge pour num. lignes
dim search$ ' Chaine pour la recherche dim find$, rep$ ' Chaines pour le remplacement dim obj% ' Numéro d'objet dim i% ' Variable de boucle dim nf% ' Nombre de polices dim num%() ' Numéros des polices dim font$() ' Noms des polices
enum GUI fmMain menu1, editor1, buffer1 fmReplace edFind, edReplace, btRepAll, btRepNext, btCancel fmPolice lsPolice end_enum
form fmMain, 100, 100, FORM_WIDTH, FORM_HEIGHT, "Editeur"
form_begin fmMain menu menu1, 0, 0, FORM_WIDTH, 25 text_editor editor1, 0, 25, FORM_WIDTH, FORM_HEIGHT - 25 text_buffer buffer1 form_end fmMain
form fmReplace, 200, 200, 380, 110, "Remplacement"
form_begin fmReplace edit edFind, 110, 10, 260, 25, "Chercher :" edit edReplace, 110, 40, 260, 25, "Remplacer par :" button btRepAll, 10, 75, 110, 25, "Remplacer tout" button btRepNext, 130, 75, 170, 25, "Remplacer Suivant", , T_Button_Return button btCancel, 310, 75, 60, 25, "Fermer" form_end fmReplace
on_click btRepAll, remplacer_tout on_click btRepNext, remplacer_suivant on_click btCancel, annuler_remplacer
form fmPolice, 200, 200, 380, 420, "Liste des polices"
form_begin fmPolice list lsPolice, 5, 5, 280, 380 nf = font_list(num(), font()) for i = 0 to nf - 1 list_item_add lsPolice, "@S20@F" & num(i) & font(i) next i form_end fmPolice
on_click lsPolice, choix_police
menu_item_add menu1, "&Fichier/&Nouveau ", "Ctrl+N", , nouveau menu_item_add menu1, "&Fichier/&Ouvrir ", "Ctrl+O", , ouvrir menu_item_add menu1, "&Fichier/&Enregistrer ", "Ctrl+E", FL_MENU_DIVIDER, enregistrer menu_item_add menu1, "&Fichier/&Quitter ", "Ctrl+Q", , quitter
menu_item_add menu1, "&Edition/Co&uper ", "Ctrl+X", , couper menu_item_add menu1, "&Edition/&Copier ", "Ctrl+C", , copier menu_item_add menu1, "&Edition/C&oller ", "Ctrl+V", , coller
menu_item_add menu1, "&Recherche/&Rechercher ", "Ctrl+F", , rechercher menu_item_add menu1, "&Recherche/Rechercher le &suivant ", "F3", , rechercher_suivant menu_item_add menu1, "&Recherche/R&emplacer ", "Ctrl+R", , remplacer
menu_item_add menu1, "&Options/&Wrap ", , FL_MENU_TOGGLE, wrap menu_item_add menu1, "&Options/&Num. lignes ", , FL_MENU_TOGGLE + FL_MENU_VALUE, numlines menu_item_add menu1, "&Options/&Police ", "Ctrl+P", , police
color_fl editor1, BKG_COLOR font_text editor1, FONT, FONT_SIZE color_text_fl editor1, FONT_COLOR color_cursor_fl editor1, FONT_COLOR color_numlines_fl editor1, LNUM_COLOR editor_numlines editor1, LNUM_WIDTH, FONT, FONT_SIZE
editor_set_buffer editor1, buffer1
set_resizable fmMain
start fmMain
' ---------------------------------------------------------------------- ' Sous-programmes utilitaires ' ----------------------------------------------------------------------
function trouve% (s$, p%, msg%) ' Recherche la chaine s à partir de la position du curseur ' La position de la chaine trouvee est retournee dans p ' msg = TRUE pour afficher le message d'erreur
p = editor_get_insert_pos(editor1) if buffer_search_forward(buffer1, p, s, p) = 0 then if msg then message "Chaîne """ + s + """ non trouvée !" trouve = FALSE else trouve = TRUE end_if end_function
sub update_editor (p%, s1$, s2$, rpl%) ' Met a jour l'editeur apres recherche ou remplacement ' p = position de la chaine recherchee ' s1 = chaine recherchee ' s2 = chaine de remplacement ' rpl = indique si remplacement
dim p1%
p1 = p + len(s1) buffer_select buffer1, p, p1
if rpl then buffer_remove_select buffer1 buffer_insert buffer1, p, s2 p1 = p + len(s2) buffer_select buffer1, p, p1 p = p1 end_if
editor_set_insert_pos editor1, p1 editor_show_insert_pos editor1 end_sub
' ---------------------------------------------------------------------- ' Sous-programmes associes aux evenements ' ----------------------------------------------------------------------
sub nouveau text buffer1, "" caption fmMain, "Editeur" end_sub
sub ouvrir dim fname$ fname = file_name("Ouvrir", "Fichier texte (*.txt)", curdir, 0) if fname = "" or file_exists(fname) = 0 then exit_sub buffer_file_load buffer1, fname caption fmMain, fname end_sub
sub enregistrer dim fname$ fname = file_name("Enregistrer", "Fichier texte (*.txt)", curdir, 0) if fname = "" then exit_sub buffer_file_save buffer1, fname end_sub
sub quitter hide fmMain end_sub
sub couper editor_cut editor1 end_sub
sub copier editor_copy editor1 end_sub
sub coller editor_paste editor1 end_sub
sub rechercher dim p% search = message_input("Rechercher", "Rechercher", search) if search <> "" then if trouve(search, p, TRUE) then update_editor p, search, "", FALSE end if end_sub
sub rechercher_suivant dim p% if search = "" then search = message_input("Rechercher", "Rechercher", search) end_if if search <> "" then if trouve(search, p, TRUE) then update_editor p, search, "", FALSE end if end_sub
sub remplacer show fmReplace end_sub
sub remplacer_suivant dim p% find = get_text(edFind) if find = "" then exit_sub rep = get_text(edReplace) if trouve(find, p, TRUE) then update_editor p, find, rep, TRUE end_sub
sub remplacer_tout dim p%, found%, n% find = get_text(edFind) if find = "" then exit_sub rep = get_text(edReplace) found = trouve(find, p, TRUE) if not found then exit_sub while found n = n + 1 update_editor p, find, rep, TRUE found = trouve(find, p, FALSE) end_while message "Chaîne """ & find & """ remplacée " & n & " fois." end_sub
sub annuler_remplacer hide fmReplace end_sub
sub wrap editor_wrap editor1, menu_item_checked(menu1, 17) end_sub
sub numlines dim n% if menu_item_checked(menu1, 18) then n = LNUM_WIDTH else n = 0 editor_numlines editor1, n, , FONT_SIZE end_sub
sub police show fmPolice end_sub
sub choix_police ' Intégrer ici la routine de selection de la police hide fmPolice end_sub
| |
| | | Contenu sponsorisé
| Sujet: Re: Compilateur FBPano | |
| |
| | | | Compilateur FBPano | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |