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

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

» Un autre pense-bête...
Un index des sources Panoramic Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Un index des sources Panoramic Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Un index des sources Panoramic Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Un index des sources Panoramic Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Un index des sources Panoramic Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Un index des sources Panoramic Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Un index des sources Panoramic Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Un index des sources Panoramic Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Un index des sources Panoramic Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Un index des sources Panoramic Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Un index des sources Panoramic Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Un index des sources Panoramic Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Un index des sources Panoramic Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Un index des sources Panoramic Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Boutique Nike : -25% dès 50€ sur TOUT le ...
Voir le deal

 

 Un index des sources Panoramic

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


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

Un index des sources Panoramic Empty
MessageSujet: Un index des sources Panoramic   Un index des sources Panoramic EmptyVen 3 Mai 2013 - 19:56

J'ai fait un petit outil qui peut servir d'index à un ensemble de fichiers source Panoramic.

Le programme permet de créer des catégories (le nombre n'est pas limité).
On peut affecter autant de sources que nécessaire à la catégorie de son choix. Le nombre de sources dans une catégorie n'est pas limité.
Chaque source est déterminé par 3 éléments:
- une chaîne de caractère servant de "nom" ou identifiant. Ce nom doit être différent de tous les autres noms enregistrés.
- une chaîne de caractères donnant le chemin d'accès et le nom du fichier
- une chaîne de caractères servant de commentaire.

Toutes les informations sont mémorisées dans une base de données BDR (KGF.dll, KGF_SUB.bas et BDR.dll sont nécessaires). Le programme a un menu permettant de créer de nouvelles bases ou d'enregistrer une copie de la base ouverte vers une autre (sauvegarde, ...)

A l'ouverture d'une base, la liste des catégories est chargée dans un combo.
Lors d'un clic sur une catégorie, la liste des programmes de la catégorie est affichée dans une liste.
Lors d'un clic dans la liste sur un des programmes, ses informations sont affichées.

On peut créer, modifier, supprimer, mais surtout, on peut "Editer": ce bouton lance l'éditeur Panoramic en chargeant le source concerné et en se positionnant par défaut dans son dossier.

Voici le code:
Code:
' indexe_de_programmes.bas

labels()
constantes()
variables()
environnement()
invisibles()
menu()
ecran()

end

close0:
  BDRclose()
'  dll_off                  :
  return
 
sortir:
  BDRclose()
  terminate

ouvrir:
  s$ = file_name$(no_open_bdr%)
  if s$="_" then return
  s$ = trim$(s$)
  if lower$(right$(s$,4))<>".hdr" then s$ = s$ + ".hdr"
  BDRopen(s$)
  base$ = ""
  if BDRopen=0 then base$ = s$
  caption 0,"Actuel: "+file_extract_name$(base$)
  BDRfindname(categories$)
  if BDRfindname<0 then BDRadd(categories$,"")
  BDRfindname(membre$)
  if BDRfindname<0 then BDRadd(membre$,"")
  BDRfindname(panoramic$)
  if BDRfindname<0 then BDRadd(panoramic$,"")
  BDRfindname(panoramic$)
  ref% = BDRfindname
  BDRreadref(ref%,3)
  if BDRreadref$="*"
    inactive 0
    no% = no% + 1 : form no% : no1% = no% : no_saisie% = no%
      width no%,400 : height no%,120
      caption no%,"Configuration de Panoramic Editor"
      top no%,(screen_y-height(no%))/2 : left no%,(screen_x-width(no%))/2
      border_small no% : SetCloseBox(handle(no_saisie%),0)
    no% = no% + 1 : alpha no% : parent no%,no1% : top no%,20 : left no%,20
      caption no%,"Panoramic Editor:"
    no% = no% + 1 : edit no% : parent no%,no1%  : no_config% = no%
      top no%,40 : left no%,20 : width no%,300
    no% = no% + 1 : button no% : parent no%,no1%
      top no%,40 : left no%,330 : width no%,30 : caption no%,"..."
      on_click no%,config
  else
    GetShortName(BDRreadref$)
    panoramic_editor$ = GetShortName$
  end_if

  charger_categories()
  activer()
  return

enregistrersous:
  s$ = file_name$(no_open_bdr%)
  if s$="_" then return
  s$ = trim$(s$)
  if lower$(right$(s$,4))<>".hdr" then s$ = s$ + ".hdr"
  if file_exists(s$)=1
    if message_confirmation_yes_no("Cet indexe existe déjà. Remplacer ?")<>1 then return
  end_if
  BDRsaveas(s$)
  return

enregistrer:
  BDRsave()
  return

fermer:
  BDRclose()
  caption 0,"Actuel: "
  desactiver()
  effacer_tout()
  return
 
charger_c:
  s$ = trim$(text$(no_categories%))
  if s$="" then return
  convertir_chaine(0)
  clear no_programmes%
  BDRfindrelation(s$,membre$,"?",no_resultat%)
  if count(no_resultat%)>0
    for i%=1 to count(no_resultat%)
      s$ = item_read$(no_resultat%,i%)
      if s$<>"*NO"
        convertir_chaine(1)
        item_add no_programmes%,s$
      end_if
    next i%
  end_if
  effacer_p()
  return

creer_c:
  s$ = trim$(text$(no_categories%))
  if s$="" then return
  convertir_chaine(0)
  BDRfindname(s$)
  if BDRfindname>0
    BDRfindrelation("?",membre$,s$,no_resultat%)
    if count(no_resultat%)>0
      s1$ = item_read$(no_resultat%,1)
      if s1$=categories$
        s2$ = "Cette catégorie existe déjà !"
      else
        s2$ = "Ce nom est un article dans la catégorie "+s1$
      end_if
    else
      s2$ = "Oups... Anomalie dans la base de données !"
    end_if
    message s2$
    return
  end_if
  BDRadd(s$,"")
  BDRsetrelation(categories$,membre$,s$)
  charger_categories()
  return
 
supprimer_c:
  s$ = trim$(text$(no_categories%))
  if s$="" then return
  convertir_chaine(0)
  if count(no_programmes%)>0
    message "La catégorie n'est pas vide !"
    return
  end_if
  BDRdeleterelation(categories$,membre$,s$)
  BDRfindname(s$)
  BDRdeleteref(BDRfindname)
  item_delete no_categories%,item_index(no_categories%)
  return

creer_p:
  s$ = trim$(text$(no_categories%))
  if s$=""
    message "La catégorie manque !"
    return
  end_if
  s0$ = s$
  convertir_chaine(0)
  BDRfindname(s$)
  if BDRfindname<0
    message s0$+" n'est pas une catégorie !"
    return
  end_if
  BDRfindrelation(categories$,"?",s$,no_resultat%)
  i% = 0
  if count(no_resultat%)>0
    if item_read$(no_resultat%,1)=membre$ then i% = 1
  end_if
  if i%=0
    message s0$+" n'est pas une catégorie !"
    return
  end_if
  cat$ = s$
  s$ = trim$(text$(no_p_nom%))
  if s$=""
    message "Le nom du programme manque !"
    return
  end_if
  s0$ = s$
  convertir_chaine(0)
  BDRfindname(s$)
  if BDRfindname>0
    BDRfindrelation("?",membre$,s$,no_resultat%)
    if count(no_resultat%)>0
      s1$ = item_read$(no_resultat%,1)
      if s1$=categories$
        s2$ = "Ce nom est une catégorie !"
      else
        s$ = s1$
        convertir_chaine(1)
        s2$ = "Cet article existe déjà dans la catégorie "+s$
      end_if
    else
      s2$ = "Oups... Anomalie dans la base de données !"
    end_if
    message s2$
    return
  end_if
  prog$ = s$
  construire_donnees()
  BDRadd(prog$,dat$)
  BDRsetrelation(cat$,membre$,prog$)
  return
 
modifier_p:
  verifier_existence_p()
  if err%=1 then return
  construire_donnees()
  BDRreplaceref(ref%,dat$)
  return
 
supprimer_p:
  verifier_existence_p()
  if err%=1 then return
  BDRdeleterelation(cat$,membre$,prog$)
  BDRdeleteref(ref%)
  gosub charger_c
  return
 
sel_programme:
  s$ = item_index$(no_programmes%)
  text no_p_nom%,s$
  convertir_chaine(0)
  BDRfindname(s$)
  ref% = BDRfindname
  BDRreadref(ref%,3)
  if BDRreadref$="*"
    text no_cible%,""
    text no_commentaire%,""
  else
    KGFDelimitedTextExtract(BDRreadref$,",",1)
    s$ = KGFDelimitedTextExtract$
    convertir_chaine(1)
    text no_p_cible%,s$
    KGFDelimitedTextExtract(BDRreadref$,",",2)
    s$ = KGFDelimitedTextExtract$
    convertir_chaine(1)
    text no_p_commentaire%,s$
  end_if
  return
 
config:
  s$ = file_name$(no_open_exe%)
  if s$="_" then return
  if file_exists(s$)=0 then return
  GetShortName(s$)
  s$ = GetShortName$
  panoramic_editor$ = s$
  convertir_chaine(0)
  BDRreplaceref(ref%,s$)
  hide no_saisie%
  active 0
  return

chercher_cible:
  s$ = file_name$(no_open_bas%)
  if s$<>"_" then text no_p_cible%,s$
  return

editer:
  s2$ = trim$(text$(no_p_cible%))
  if s2$=""
    message "La cible manque !"
    return
  end_if
  s3$ = file_extract_path$(s2$)
  GetShortName(s2$)
  s2$ = GetShortName$
  GetShortName(s3$)
  s3$ = GetShortName$
  ExecuteProgram(panoramic_editor$,s2$,s3$)
  return
 
configurer:
  BDRfindname(panoramic$)
  ref% = BDRfindname
  BDRreadref(ref%,3)
  if no_config%=0
    no% = no% + 1 : form no% : no1% = no% : no_saisie% = no%
      width no%,400 : height no%,120
      caption no%,"Configuration de Panoramic Editor"
      top no%,(screen_y-height(no%))/2 : left no%,(screen_x-width(no%))/2
      border_small no% : SetCloseBox(handle(no_saisie%),0)
    no% = no% + 1 : alpha no% : parent no%,no1% : top no%,20 : left no%,20
      caption no%,"Panoramic Editor:"
    no% = no% + 1 : edit no% : parent no%,no1%  : no_config% = no%
      top no%,40 : left no%,20 : width no%,300
    no% = no% + 1 : button no% : parent no%,no1%
      top no%,40 : left no%,330 : width no%,30 : caption no%,"..."
      on_click no%,config
  end_if
  if BDRreadref$="*"
    text no_config%,""
  else
    s$ = BDRreadref$
    convertir_chaine(1)
    text no_config%,s$
  end_if
  inactive 0
  show no_saisie%
  return
 
sub labels()
  label close0, ouvrir, enregistrersous, enregistrer, fermer, sortir
  label charger_c, creer_c, creer_p, chercher_cible, modifier_p, supprimer_p
  label sel_programme, config, editer, configurer, supprimer_c
end_sub

sub constantes()
  dim KGF$ : KGF$ = "C:\DOCUME~1\Klaus\MESDOC~1\MESPRO~3\KGF\KGF.dll"
  dim BDR$ : BDR$ = "C:\DOCUME~1\Klaus\MESDOC~1\MESPRO~3\BDR\BDR.dll"
  dim categories$ : categories$ = "$categories"
  dim membre$ : membre$ = "$membre"
  dim panoramic$ : panoramic$ = "$panoramic"
  dim G$ : G$ = chr$(34)
end_sub

sub variables()
  dim no%, no1%, no2%, no_open_bdr%, no_open_bas%, no_categories%, no_resultat%
  dim no_programmes%, no_p_nom%, no_p_cible%, no_p_commentaire%
  dim no_saisie%, no_config%, no_open_exe%
  dim s$, s0$, s1$, s2$, s3$, i%, ouvert%, base$, cat$, prog$, dat$, comm$
  dim err%, ref%, panoramic_editor$
  dim n_activations%, activations%(200)
end_sub

sub environnement()
  on_close 0,close0
  KGF_initialize(KGF$)
  BDRinitialize(BDR$)
end_sub

sub invisibles()
  no% = no% + 1 : open_dialog no% : no_open_bdr% = no%
    filter no%,"Indexes|*.hdr"
  no% = no% + 1 : open_dialog no% : no_open_bas% = no%
    filter no%,"Sources|*.bas"
  no% = no% + 1 : open_dialog no% : no_open_exe% = no%
    filter no%,"Editor|*.exe"
  no% = no% + 1 : memo no% : no_resultat% = no% : hide no%
end_sub

sub menu()
  no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    caption no%,"Fichier"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Ouvrir" : on_click no%,ouvrir
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Enregistrer sous" : on_click no%,enregistrersous
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Enregistrer" : on_click no%,enregistrer
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Fermer" : on_click no%,fermer
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"-"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : inactive no%
    caption no%,"Configurer" : on_click no%,configurer
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"-"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Sortir" : on_click no%,sortir
end_sub

sub ecran()
  full_space 0
  no% = no% + 1 : alpha no% : top no%,20 : left no%,20
    caption no%,"Catégories:"
  no% = no% + 1 : combo no% : no_categories% = no%  : inactive no%
    top no%,40 : left no%,20 : width no%,200 : sort_on no%
    on_click no%,charger_c : inactive no%
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : button no% : caption no%,"Créer"
    on_click no%,creer_c : inactive no%
    top no%,40 : left no%,230 : width no%,60
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : button no% : caption no%,"Supprimer"
    on_click no%,supprimer_c : inactive no%
    top no%,40 : left no%,300 : width no%,60
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : list no% : no_programmes% = no%
    on_click no%,sel_programme
    top no%,100 : left no%,20 : width no%,400 : height no%,400
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
   
  no% = no% + 1 : alpha no% : top no%,100 : left no%,440
    caption no%,"Programme:"
  no% = no% + 1 : edit no% : no_p_nom% = no%
    top no%,120 : left no%,440 : width no%,400 : inactive no%
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : button no% : top no%,120 : left no%,850
    caption no%,"Editer" : on_click no%,editer : inactive no%
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : alpha no% : top no%,150 : left no%,440
    caption no%,"Cible:"
  no% = no% + 1 : edit no% : no_p_cible% = no%
    top no%,170 : left no%,440 : width no%,400 : inactive no%
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : button no% : caption no%,"..."
    top no%,168 : left no%,840 : width no%,25
    on_click no%,chercher_cible : inactive no%
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : alpha no% : top no%,200 : left no%,440
    caption no%,"Commentaire:"
  no% = no% + 1 : edit no% : no_p_commentaire% = no%
    top no%,220 : left no%,440 : width no%,400 : inactive no%
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : button no% : caption no%,"Créer"
    on_click no%,creer_p : inactive no%
    top no%,250 : left no%,440 : width no%,60
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : button no% : caption no%,"Modifier"
    on_click no%,modifier_p : inactive no%
    top no%,250 : left no%,510 : width no%,60
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%
  no% = no% + 1 : button no% : caption no%,"Supprimer"
    on_click no%,supprimer_p : inactive no%
    top no%,250 : left no%,580 : width no%,60
    n_activations% = n_activations% + 1
    activations%(n_activations%) = no%

end_sub

sub charger_categories()
  clear no_categories%
  BDRfindrelation(categories$,membre$,"?",no_resultat%)
  if count(no_resultat%)>0
    for i%=1 to count(no_resultat%)
      s$ = item_read$(no_resultat%,i%)
      if s$<>"*NO"
        convertir_chaine(1)
        item_add no_categories%,s$
      end_if
    next i%
  end_if
end_sub

sub activer()
  for i%=1 to n_activations%
    active activations%(i%)
  next i%
end_sub

sub desactiver()
  for i%=1 to n_activations%
    inactive activations%(i%)
  next i%
end_sub

sub convertir_chaine(sens%)
  dim_local i%
  select sens%
    case 0
      for i%=1 to len(s$)
        if mid$(s$,i%,1)=G$ then s$ = left$(s$,i%-1) + "²" + mid$(s$,i%+1,len(s$))
        if mid$(s$,i%,1)=" " then s$ = left$(s$,i%-1) + "°" + mid$(s$,i%+1,len(s$))
      next i%
    case 1
      for i%=1 to len(s$)
        if mid$(s$,i%,1)="²" then s$ = left$(s$,i%-1) + G$ + mid$(s$,i%+1,len(s$))
        if mid$(s$,i%,1)="°" then s$ = left$(s$,i%-1) + " " + mid$(s$,i%+1,len(s$))
      next i%
  end_select
end_sub

sub verifier_existence_p()
  err% = 1
  s$ = trim$(text$(no_categories%))
  if s$=""
    message "La catégorie manque !"
    exit_sub
  end_if
  s0$ = s$
  convertir_chaine(0)
  BDRfindname(s$)
  if BDRfindname<0
    message s0$+" n'est pas une catégorie !"
    exit_sub
  end_if
  BDRfindrelation(categories$,"?",s$,no_resultat%)
  i% = 0
  if count(no_resultat%)>0
    if item_read$(no_resultat%,1)=membre$ then i% = 1
  end_if
  if i%=0
    message s0$+" n'est pas une catégorie !"
    return
  end_if
  cat$ = s$

  s$ = trim$(text$(no_p_nom%))
  if s$=""
    message "Le nom du programme manque !"
    exit_sub
  end_if
  s0$ = s$
  convertir_chaine(0)
  BDRfindname(s$)
  if BDRfindname>0
    BDRfindrelation("?",membre$,s$,no_resultat%)
    if count(no_resultat%)>0
      s1$ = item_read$(no_resultat%,1)
      if s1$=categories$
        s2$ = "Ce nom est une catégorie !"
      else
        if s1$<>cat$
          s$ = s1$
          convertir_chaine(1)
          s2$ "Ce programme est dans la catégorie "+s$
        end_if
      end_if
    else
      s2$ = "Oups... Anomalie dans la base de données !"
    end_if
    if len(s2$)>0
      message s2$
      exit_sub
    end_if
  else
    message "Ce nom n'existe pas !"
    exit_sub
  end_if
  prog$ = s$
  err% = 0
end_sub

sub construire_donnees()
  s$ = trim$(text$(no_p_cible%))
  if len(s$)>0 then convertir_chaine(0)
  dat$ = s$+","
  s$ = trim$(text$(no_p_commentaire%))
  if len(s$)>0 then convertir_chaine(0)
  dat$ = dat$ + s$
end_sub

sub effacer_tout()
  clear no_categories%
  clear no_programmes%
  effacer_p()
end_sub

sub effacer_p()
  text no_p_nom%,""
  text no_p_cible%,""
  text no_p_commentaire%,""
end_sub

#INCLUDE  "C:\DOCUME~1\Klaus\MESDOC~1\MESPRO~3\KGF\KGF_SUB.bas"


Dernière édition par Klaus le Ven 3 Mai 2013 - 23:19, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Un index des sources Panoramic Empty
MessageSujet: re   Un index des sources Panoramic EmptyVen 3 Mai 2013 - 23:08

Ca cela pourrait bien m' être utile !!!

Merci Klaus !
Revenir en haut Aller en bas
Klaus

Klaus


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

Un index des sources Panoramic Empty
MessageSujet: Re: Un index des sources Panoramic   Un index des sources Panoramic EmptyVen 3 Mai 2013 - 23:19

J'ai corrigé le petit problème avec le bouton "Editer" qui était actif alors qu'aucune base n'était chargée...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Un index des sources Panoramic Empty
MessageSujet: Re: Un index des sources Panoramic   Un index des sources Panoramic EmptySam 4 Mai 2013 - 0:09

Merci Klaus
Revenir en haut Aller en bas
Contenu sponsorisé





Un index des sources Panoramic Empty
MessageSujet: Re: Un index des sources Panoramic   Un index des sources Panoramic Empty

Revenir en haut Aller en bas
 
Un index des sources Panoramic
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mise en forme de sources Panoramic (bis)
» Nouvel outil de mise à disposition de sources Panoramic
» Noyau 64 bits : appel aux béta-testeurs.
» index
» List index out of bounds (927)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: