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.
xmenu:  menu paramétrable dynamiquement Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
xmenu:  menu paramétrable dynamiquement Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
xmenu:  menu paramétrable dynamiquement Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
xmenu:  menu paramétrable dynamiquement Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
xmenu:  menu paramétrable dynamiquement Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
xmenu:  menu paramétrable dynamiquement Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
xmenu:  menu paramétrable dynamiquement Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
xmenu:  menu paramétrable dynamiquement Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
xmenu:  menu paramétrable dynamiquement Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
xmenu:  menu paramétrable dynamiquement Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
xmenu:  menu paramétrable dynamiquement Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
xmenu:  menu paramétrable dynamiquement Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
xmenu:  menu paramétrable dynamiquement Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
xmenu:  menu paramétrable dynamiquement Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
xmenu:  menu paramétrable dynamiquement 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
-20%
Le deal à ne pas rater :
Drone Dji DJI Mini 4K (EU)
239 € 299 €
Voir le deal

 

 xmenu: menu paramétrable dynamiquement

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
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 : 52
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 : 12331
Age : 75
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 : 52
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
» Sub-menu is not menu avec Panoramic.exe
» 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: