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
» SineCube
xmenu:  menu paramétrable dynamiquement Emptypar papydall Aujourd'hui à 0:49

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
xmenu:  menu paramétrable dynamiquement Emptypar Yannick Hier à 18:32

» Philharmusique
xmenu:  menu paramétrable dynamiquement Emptypar jjn4 Hier à 13:58

» PANORAMIC V 1
xmenu:  menu paramétrable dynamiquement Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
xmenu:  menu paramétrable dynamiquement Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
xmenu:  menu paramétrable dynamiquement Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
xmenu:  menu paramétrable dynamiquement Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
xmenu:  menu paramétrable dynamiquement Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
xmenu:  menu paramétrable dynamiquement Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
xmenu:  menu paramétrable dynamiquement Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
xmenu:  menu paramétrable dynamiquement Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
xmenu:  menu paramétrable dynamiquement Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
xmenu:  menu paramétrable dynamiquement Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
xmenu:  menu paramétrable dynamiquement Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
xmenu:  menu paramétrable dynamiquement Emptypar leclode Sam 27 Avr 2024 - 17:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-40%
Le deal à ne pas rater :
-40% sur le Pack Gaming Mario PDP Manette filaire + Casque filaire ...
29.99 € 49.99 €
Voir le deal

 

 xmenu: menu paramétrable dynamiquement

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


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

xmenu:  menu paramétrable dynamiquement Empty
MessageSujet: xmenu: menu paramétrable dynamiquement   xmenu:  menu paramétrable dynamiquement EmptyMar 16 Avr 2013 - 19:19

A l'aide de la nouvelle version V2.14 du 16 Avril 2013 de KGF.dll, j'ai fait un menu qui peut être paramétré dynamiquement, sans modification du code. Tout est dans des fichiers paramètres:
xmenu.ini ==> contient la liste des sous-menus
menu_xxx.ini ==> contient le sous-menu xxx (qui doit être mentionné comme xxx dans xmenu.ini)

Dans les fichiers des sous-menus, chaque ligne décrit une ligne du sous-menu. Il s'agit d'une simple chaîne de caractères dont les informations sont séparées par des virgules, et éventuellement entourés de guillemets. Les 4 champs de chaque ligne sont:
libellé,programme,paramètres,dossier
Exemple:
"Panoramic V 0.9.23","C:\Program Files\Panoramic Editor V 0.9.24\PANORAMIC_EDITOR.exe",,
Le libellé sera affiché dans le sous-menu. Lors d'un clic sur la ligne, le programme paramétré sera lancé, avec les paramètres si ils sont présents, et en démarrant dans le dossier spécifié.

L'astuce du programme, c'est un menu Outils qui contient 2 fonctions:
Recharger ==> reconstruit l'ensemble des menus et sous-menus à partir des fichiers *.ini
Modifier ==> affiche une combo avec la liste des fichiers paramètres. On sélectionne un des fichiers, puis on clique sur le bouton Modifier. La combo disparaît, et le fichier choisi s'affiche dans le bloc notes (ou n'importe quel programme associé aux fichiers *.INI). On peut ainsi ajouter un sous-menu en ajoutant la ligne dans xmenu.ini, en supprimer un ou les déplacer, et on peut modifier n'importe lequel des fichiers menu_xxx.ini. Si l'on a ajouté un élément dans xmenu.ini, lors de la fonction Recharger, ce fichier menu_xxx.ini correspondant sera automatiquement créé, et le menu apparaît, vide. On peut alors modifier ce fichier qui est ajouté à la combo, et ce menu sera affiché lors de la prochaine fonction Recharger.

Le programme devient intéressant si l'on crée l'EXE et un place un raccourci vers cet exe sur le bureau.

Voici le code:
Code:
' xmenu.bas
'
' Le fichier xmenu.ini contient la liste des menus.
' Définis à ce jour:
' - menu_jeux.ini
' - menu_panoramic.ini
' - menu_delphi.ini
' - menu_help.ini
'
' les fichiers des menus individuels contiennent les informations suivantes:
'  libellé,programme,paramètres,dossier
' il est conseillé d'entourer chaque champ par des guillemets.
'
' tous ces menus seront présentés comme menus Panoramic.
' les programmes seront lancés par EXECUTE.
'
' KGF.dll est utilisé pour déterminer le nom court à partir du nom log
' et accessoirement pour décoder une ligne dans les fichiers menu_xxx.ini
'
' Le menu Outils est fixe et imposé. Il contient une fonction qui permet
' de recharger.tous les menus, ainsi qu'une fonction qui permet d'éditer
' les fichiers paramètres.
' Le fichier xmenu.ini contient la liste des sous-menus.
' Les sous-menus doivent s'appeler menu_xxx.ini avec xxx étant le nom
' du sous-menu dans xmenu.ini.
' Après une modification, la fonction Recharger affiche le menu modifié.

KGF_initialize("KGF.dll")

labels()
constantes()
variables()
form0()
objets()
menus()

end

sub labels()
  label click_menu, refresh, modif, modifier
end_sub

sub constantes()
  dim xmenu$ : xmenu$ = "xmenu.ini"
end_sub

sub variables()
  dim no%, no1%, no2%, nox%, noy%
  dim no_menus%, no_objets%, no_refresh%, no_combo%
  dim f$, s$, i%, s1$, s2$, s3$
  dim n%, n_menu%, n_ligne%
end_sub

sub form0()
  border_small 0 : height 0,45 : caption 0,"Menu Klaus"
  no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no% : caption no%,"Outils"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Recharger"
    on_click no%,refresh
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Modifier"
    on_click no%,modif
end_sub

sub objets()
  no% = no% + 1 : dlist no% : no_menus% = no%
  no% = no% + 1 : dlist no% : no_objets% = no%
  no% = no% + 1 : combo no% : no_combo% = no%
    top no%,10 : left no%,10 : width no%,100
  no% = no% + 1 : button no% : top no%,10 : left no%,130
    caption no%,"Modifier" : on_click no%,modifier
  no_refresh% = no%
end_sub

sub menus()
  if file_exists(xmenu$)=0
    file_open_write 1,xmenu$
    ' ********************************************************
    ' *********** adapter ici la liste des sous-menus ********
    ' ***********      à créer automatiquement      ********
    ' ********************************************************
    file_writeln 1,"menu_jeux.ini"
    file_writeln 1,"menu_panoramic.ini"
    file_writeln 1,"menu_delphi.ini"
    file_writeln 1,"menu_help.ini"
    ' ********************************************************
    ' ***********          fin de la liste          ********
    ' ********************************************************
    file_close 1
  end_if
  clear no_objets%
  clear no_combo%
  item_add no_combo%,"xmenu"
  file_open_read 1,xmenu$
  while file_eof(1)=0
    file_readln 1,f$
    item_add no_menus%,f$
    if file_exists(f$)=0
      file_open_write 2,f$
      file_close 2
    end_if
    s$ = f$
    i% = instr(s$,"_")
    if i%>0 then s$ = mid$(s$,i%+1,len(s$))
    i% = instr(s$,".")
    if i%>0 then s$ = left$(s$,i%-1)
    item_add no_combo%,s$
    no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    item_add no_objets%,str$(no%)
      caption no%,s$
    ' ici, charger le sous-menu
    file_open_read 2,f$
    nox% = 128 + count(no_menus%) : dlist nox%
    while file_eof(2)=0
      file_readln 2,f$
      item_add nox%,f$
      KGFDelimitedTextExtract(f$,",",1)
      s1$ = KGFDelimitedTextExtract$
      noy% = nox%*32 + count(nox%)
      sub_menu noy% : parent noy%,no2% : caption noy%,s1$
      item_add no_objets%,str$(noy%)
      if left$(s1$,1)<>"-" then on_click noy%,click_menu
    end_while
    file_close 2
  end_while
  file_close 1
end_sub

click_menu:
  n% = number_click
  n_menu% = bin_and(n%,127*32) / 32
  n_ligne% = bin_and(n%,31)
  s$ = item_read$(n_menu%+128,n_ligne%)
  KGFDelimitedTextExtract(s$,",",2)
  s1$ = KGFDelimitedTextExtract$
  KGFDelimitedTextExtract(s$,",",3)
  s2$ = KGFDelimitedTextExtract$
  KGFDelimitedTextExtract(s$,",",4)
  s3$ = KGFDelimitedTextExtract$
  ExecuteProgram(s1$,s2$,s3$)
  return
 
refresh:
  while count(no_objets%)>0
    n% = val(item_read$(no_objets%,count(no_objets%)))
    item_delete no_objets%,count(no_objets%)
    delete n%
  end_while
  no% = no_refresh%
  menus()
  return
 
modif:
  height 0,90
  return
 
modifier:
  height 0,45
  if text$(no_combo%)="" then return
  s$ = text$(no_combo%)
  if s$="xmenu"
    s1$ = dir_current$ + "\xmenu.ini"
  else
    s1$ = dir_current$ + "\menu_"+s$+".ini"
  end_if
  s2$ = ""
  s3$ = ""
  ExecuteProgram(s1$,s2$,s3$)
  return
 
#INCLUDE "KGF_SUB.bas"

Voici mes fichiers de paramétrage:

xmenu.ini:
Code:
menu_jeux.ini
menu_panoramic.ini
menu_delphi.ini
menu_help.ini

menu_jeux.ini:
Code:
"Patience","C:\Program Files\PySol Fan Club edition\PySol.exe",,,
"Eclater les bulles","C:\Documents and Settings\Klaus\Mes documents\Mes projets Panoramic\bulles\bulles.exe",,,

menu_panoramic.ini:
Code:
"Panoramic V 0.9.24","C:\Program Files\Panoramic Editor V 0.9.24\PANORAMIC_EDITOR.exe",,,

menu_delphi.ini:
Code:
"Delphi","C:\Program Files\Borland\Delphi6\Bin\Delphi32.exe",,,
"KGF.dll","C:\Documents and Settings\Klaus\Mes documents\Mes projets Delphi\KGF\KGF.dpr",,,

menu_help.ini:
Code:
"Help and Doc","C:\Program Files\IBE Software\HelpNDoc 3\Hnd3.exe",,,
"KGF.chm modif","C:\Documents and Settings\Klaus\Mes documents\Mes projets Panoramic\Help file\KGF_CHM\KGF.hnd",,,
"BDR_SUB.chm modif","C:\Documents and Settings\Klaus\Mes documents\Mes projets Panoramic\Help file\BDR_SUB\BDR_SUB.hnd",,,
-,,,,
"KGF.chm","C:\Documents and Settings\Klaus\Mes documents\Mes projets Panoramic\Help file\KGF_CHM\KGF.chm",,,
"BDR_SUB.chm","C:\Documents and Settings\Klaus\Mes documents\Mes projets Panoramic\Help file\BDR_SUB\BDR_SUB.chm",,,


Dernière édition par Klaus le Mer 17 Avr 2013 - 13:37, édité 2 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

xmenu:  menu paramétrable dynamiquement Empty
MessageSujet: Re: xmenu: menu paramétrable dynamiquement   xmenu:  menu paramétrable dynamiquement EmptyMar 16 Avr 2013 - 20:42

Excellente mise en application. Perso, je ne suis pas fan de la multiplicité des .ini Je mettrais plutôt un fichier ini avec des balises pour les sous menu, mais c'est ma façon de faire et ma vision des choses.
Revenir en haut Aller en bas
Klaus

Klaus


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

xmenu:  menu paramétrable dynamiquement Empty
MessageSujet: Re: xmenu: menu paramétrable dynamiquement   xmenu:  menu paramétrable dynamiquement EmptyMar 16 Avr 2013 - 23:26

As-tu remarqué l'utilisation de la fonction KGFDelimitedTextExtract() pour extraire les éléments de la chaîne CSV ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

xmenu:  menu paramétrable dynamiquement Empty
MessageSujet: Re: xmenu: menu paramétrable dynamiquement   xmenu:  menu paramétrable dynamiquement EmptyMer 17 Avr 2013 - 8:32

oui, c'est une des fonctions que j'ai remarqué dans ta DLL (parmi d'autres), mais si un jour je me remets à faire un RPG (ce n'est pas au programme, j'ai pleins d'idées mais pas de temps), c'est clairement une fonction qui me sera bien utile (je peux la coder dans une procédure, mais comme ta DLL sera nécessaire certainement, autant s'en servir directement Wink )
Revenir en haut Aller en bas
Contenu sponsorisé





xmenu:  menu paramétrable dynamiquement Empty
MessageSujet: Re: xmenu: menu paramétrable dynamiquement   xmenu:  menu paramétrable dynamiquement Empty

Revenir en haut Aller en bas
 
xmenu: menu paramétrable dynamiquement
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Menu paramétrable à laisser sur le bureau
» Menu avec icones entièrement paramétrable
» Menu personalisé avec icones et menu contextuel
» Menu en 3D.
» Déplacer dynamiquement un objet dans une form

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: