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

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Une calculatrice en une ligne de programme
Compilateur FBPano - Page 11 Emptypar jean_debord Aujourd'hui à 8:47

» Form(résolu)
Compilateur FBPano - Page 11 Emptypar leclode Hier à 17:59

» trop de fichiers en cours
Compilateur FBPano - Page 11 Emptypar Marc Hier à 11:42

» Bataille navale SM
Compilateur FBPano - Page 11 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Gestion d'un système client-serveur.
Compilateur FBPano - Page 11 Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Compilateur FBPano - Page 11 Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Compilateur FBPano - Page 11 Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Compilateur FBPano - Page 11 Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Compilateur FBPano - Page 11 Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Compilateur FBPano - Page 11 Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Compilateur FBPano - Page 11 Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Compilateur FBPano - Page 11 Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Compilateur FBPano - Page 11 Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Compilateur FBPano - Page 11 Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Compilateur FBPano - Page 11 Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-45%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
339 € 622 €
Voir le deal

 

 Compilateur FBPano

Aller en bas 
+11
Pedro
Ouf_ca_passe
RMont
Yannick
Klaus
papydall
pascal10000
Minibug
Jicehel
jpcr
jean_debord
15 participants
Aller à la page : Précédent  1, 2, 3 ... 9, 10, 11
AuteurMessage
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Compilateur FBPano - Page 11 Empty
MessageSujet: Re: Compilateur FBPano   Compilateur FBPano - Page 11 EmptyDim 29 Sep 2019 - 16:53

Ah, c'est l'exemple ex81 que tu veux modifier ! Je croyais que c'était START_FBPANO ...

Dans ce cas, le problème vient de la variable font. Il y a déjà une constante FONT donc il faut un autre identificateur, p. ex. fontname

Ceci explique le message d'erreur de FreeBASIC :

Code:

C:\FBPano\exemples\FLTK\fb_ex81a.bas(44) error 4: Duplicated definition, font in 'dim shared font() as string

Il faut renommer dans la déclaration et aussi dans le code de création de la fenêtre fmPolice.

Il faudra aussi ajouter :

- un bouton dans la fenêtre principale pour afficher la fenêtre fmPolice

- un autre bouton dans la fenêtre fmPolice pour valider la sélection.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Compilateur FBPano - Page 11 Empty
MessageSujet: Re: Compilateur FBPano   Compilateur FBPano - Page 11 EmptyDim 29 Sep 2019 - 17:41

Ah mais bien sûr ! Maintenant que tu me le dis ça me saute aux yeux... Laughing

J'aurai du y penser...
Je ne me suis pas encore assez familiarisé avec le code et la syntaxe. drunken

Après modification, tout fonctionne correctement. Encore merci Jean ! Wink

Dans un premier temps, la modification de l'éditeur me permet de me 'faire la main' sur FBPano,
et ensuite pourquoi ne pas en faire un éditeur Multi pour FBPano et Panoramic...

Avec le mot clé KEYWORDS je pense que cela doit être assez simple à mettre en place.
Bon je n'en suis pas encore là pour le moment.

Encore merci.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Compilateur FBPano - Page 11 Empty
MessageSujet: Re: Compilateur FBPano   Compilateur FBPano - Page 11 EmptyLun 30 Sep 2019 - 10:57

Voici une version modifiée avec :

- transformation de la constante FONT en une variable font% puisque la police peut être changée
- noms de variables modifiés en fontnum%() et fontname$()
- ajout d'une option "Police" dans le sous-menu "Options" et du sous-programme correspondant choix_police
- ajout d'un bouton "valider" dans la fenêtre des polices et du sous-programme correspondant valider_police

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_SIZE   = 16            ' Taille des caracteres
const FONT_COLOR  = FL_WHITE      ' Couleur du texte
const BKG_COLOR   = FL_DARK_BLUE  ' 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 nf%                           ' Nb de polices
dim fontnum%()                    ' Numéros des polices
dim fontname$()                   ' Noms des polices
dim font% = FL_COURIER            ' Police selectionnee
dim i%                            ' Variable de boucle

enum GUI
  fmMain
    menu1, editor1, buffer1
  fmReplace
    edFind, edReplace, btRepAll, btRepNext, btCancel
  fmPolice
    lsPolice, btPolice
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

form fmPolice, 200, 200, 380, 420, "Liste des polices"

form_begin fmPolice
  list lsPolice, 5, 5, 370, 370
  button btPolice, 5, 385, 370, 30, "Valider"
  nf = font_list(fontnum(), fontname())
  for i = 0 to nf - 1
    list_item_add lsPolice, "@S20@F" & fontnum(i) & "@." & fontname(i)
  next i
  list_item_select lsPolice, 1
form_end fmPolice

on_click btRepAll, remplacer_tout
on_click btRepNext, remplacer_suivant
on_click btCancel, annuler_remplacer
on_click btPolice, valider_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", , choix_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 choix_police
  show fmPolice
end sub

sub valider_police
  dim f$
  
  ' Lecture du nom complet de la police, incluant les caracteres de controle
  ' Exemple : @S20@F0@.Arial
  f = list_item_read(lsPolice, list_item_index(lsPolice))

  ' Ici on isole le nom de la police
  ' Le point marque la fin des caracteres de controle ("@S..@.")
  f = mid(f, instr(f, ".") + 1)

  ' Puis on determine son numero
  font = num_font(f)

  font_text editor1, font, FONT_SIZE
  editor_numlines editor1, LNUM_WIDTH, font, FONT_SIZE
  hide fmPolice
  redraw
end sub

Note : Quand on utilise les caractères de contrôle "@..." pour afficher un élément d'une liste, FLTK les ajoute au nom de l'élément ; pour récupérer les noms des polices j'ai donc ajouté un point juste avant le nom :

Code:

list_item_add lsPolice, "@S20@F" & fontnum(i) & "@." & fontname(i)

Etant précédé du caractère @ ce point n'apparaît pas dans la liste mais il permet d'isoler le nom de la police dans le sous-programme valider_police.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Compilateur FBPano - Page 11 Empty
MessageSujet: Re: Compilateur FBPano   Compilateur FBPano - Page 11 EmptyLun 30 Sep 2019 - 17:54

Merci pour tes conseils Jean ! Wink

J'avais déjà réussi l'affichage de la liste suite à ton message précédent.
Mais effectivement quelques infos supplémentaires ne sont pas de trop...

Je me partage actuellement entre PanExpress et la reprise de l’éditeur FBPano.
2 approches différentes mais qui au bout du compte pourraient bien se rencontrer. drunken

Affaire à suivre...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Compilateur FBPano - Page 11 Empty
MessageSujet: Re: Compilateur FBPano   Compilateur FBPano - Page 11 EmptyMar 15 Oct 2019 - 11:27

Ce petit programme vous permettra de choisir un type de boîte pour vos objets.

En même temps, c'est une bonne démonstration du TREEVIEW.

Code:

dim i%, k%, font%, cap$

font = num_font("Consolas")
if font <= 0 then font = FL_COURIER

form 0, 100, 100, 380, 400, "Choix du type de boîte"

treeview 1, 0, 0, 380, 400

font_text 1, font, 15
tree_item_spacing 1, 10
tree_widget_margin 1, 10
tree_connector_style 1, FL_TREE_CONNECTOR_NONE

on_click 1, click

for i = 0 to 55
  k = i + 2
  cap = box_type_str(i)
  cap = cap + space(25 - len(cap))
  alpha k, 0, 0, 75, 30, "Box", , i
  color_fl k, FL_GREEN
  tree_item_add 1, cap, k
next i

tree_item_select 1, 1

start 0

sub click
  if tree_reason(1) = FL_TREE_REASON_SELECTED then
    ? tree_item_read(1, tree_item_index(1))
  end_if
end_sub
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Compilateur FBPano - Page 11 Empty
MessageSujet: Re: Compilateur FBPano   Compilateur FBPano - Page 11 EmptyMer 16 Oct 2019 - 8:52

Même chose, mais pour les paramètres d'alignement :

Code:

data 12

data "FL_ALIGN_CENTER                 ", 0
data "FL_ALIGN_TOP                    ", 1
data "FL_ALIGN_BOTTOM                 ", 2
data "FL_ALIGN_CLIP                   ", 64
data "FL_ALIGN_WRAP                   ", 128
data "FL_ALIGN_LEFT                   ", 4
data "FL_ALIGN_RIGHT                  ", 8
data "FL_ALIGN_LEFT + FL_ALIGN_INSIDE ", 4 + 16
data "FL_ALIGN_RIGHT + FL_ALIGN_INSIDE", 8 + 16
data "FL_ALIGN_LEFT_TOP               ", 7
data "FL_ALIGN_RIGHT_TOP              ", 11
data "FL_ALIGN_LEFT_BOTTOM            ", 13
data "FL_ALIGN_RIGHT_BOTTOM           ", 14

dim np%, al%(), cap$(), i%, k%, font%

np = get_data_align(al(), cap())

font = num_font("Consolas")
if font <= 0 then font = FL_SCREEN

form 0, 100, 100, 600, 400, "Position du Label"

treeview 1, 0, 0, 600, 400

font_text 1, font, 15
tree_item_spacing 1, 20
tree_widget_margin 1, 75
tree_connector_style 1, FL_TREE_CONNECTOR_NONE

on_click 1, click

for i = 0 to np
  k = i + 3
  button k, 0, 0, 125, 40, "Bouton", al(i)

  select i
    case 3 : caption k, "Bouton (texte coupé)"                 ' CLIP
    case 4 : caption k, "Bouton (texte sur plusieurs lignes)"  ' WRAP
  end_select

  tree_item_add 1, cap(i), k
next i

tree_item_select 1, 1

start 0

sub click
  if tree_reason(1) = FL_TREE_REASON_SELECTED then
    ? tree_item_read(1, tree_item_index(1))
  end_if
end_sub

function get_data_align% (al%(), cap$())
' Lecture des paramètres d'alignement (numéros, intitulés)
' La fonction retourne le nombre de paramètres - 1

  dim np%, i%

  read np
  redim cap$(np), al%(np)
  for i = 0 to np
    read cap(i), al(i)
  next i

  get_data_align = np
end_function
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Compilateur FBPano - Page 11 Empty
MessageSujet: Re: Compilateur FBPano   Compilateur FBPano - Page 11 EmptyMer 16 Oct 2019 - 17:13

Bonjour Jean !

Oui c'est vrai que tous ces paramètres sont vraiment pratiques. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Compilateur FBPano - Page 11 Empty
MessageSujet: Re: Compilateur FBPano   Compilateur FBPano - Page 11 EmptyJeu 17 Oct 2019 - 9:04

Merci Minibug Smile

En voici un autre, cette fois pour choisir la position du texte par rapport à une image :

Code:

data 4

data "FL_ALIGN_IMAGE_OVER_TEXT  ", 0
data "FL_ALIGN_TEXT_OVER_IMAGE  ", 32
data "FL_ALIGN_IMAGE_NEXT_TO_TEXT", 256
data "FL_ALIGN_TEXT_NEXT_TO_IMAGE", 288
data "FL_ALIGN_IMAGE_BACKDROP    ", 512

dim np%, al%(), cap$(), i%, k%, font%

np = get_data_align_img(al(), cap())

font = num_font("Consolas")
if font <= 0 then font = FL_COURIER

fb_img_begin 0, 24, 24
  fb_pen_color &hFF00FF00
  fb_pie 12, 12, 10
fb_img_end

form 0, 100, 100, 370, 310, "Positions Label et Image"
treeview 1, 0, 0, 370, 310

font_text 1, font, 15
tree_item_spacing 1, 10
tree_widget_margin 1, 15
tree_connector_style 1, FL_TREE_CONNECTOR_NONE

on_click 1, click

for i = 0 to np
  k = i + 3
  button k, 0, 0, 100, 50, "Bouton"
  fb_set_img k, 0, al(i)
  tree_item_add 1, cap(i), k
next i

tree_item_select 1, 1

start 0

sub click
  if tree_reason(1) = FL_TREE_REASON_SELECTED then
    ? tree_item_read(1, tree_item_index(1))
  end_if
end_sub

function get_data_align_img% (al%(), cap$())
' Lecture des paramètres d'alignement texte/image (numéros, intitulés)
' La fonction retourne le nombre de paramètres - 1

  dim np%, i%

  read np
  redim cap$(np), al%(np)
  for i = 0 to np
    read cap(i), al(i)
  next i

  get_data_align_img = np
end_function
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Contenu sponsorisé





Compilateur FBPano - Page 11 Empty
MessageSujet: Re: Compilateur FBPano   Compilateur FBPano - Page 11 Empty

Revenir en haut Aller en bas
 
Compilateur FBPano
Revenir en haut 
Page 11 sur 11Aller à la page : Précédent  1, 2, 3 ... 9, 10, 11
 Sujets similaires
-
» Un éditeur pour FBPano
» Configurer FBide pour FBPano
» Container_begin
» Evolution de FBPano
» Nouvelle version 0.36

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Grands projets réalisés avec Panoramic :: Compilateur FBPANO-
Sauter vers: