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.
Nouvel outil de lanceur ou menu multi-niveau Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Nouvel outil de lanceur ou menu multi-niveau Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Nouvel outil de lanceur ou menu multi-niveau Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Nouvel outil de lanceur ou menu multi-niveau Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Nouvel outil de lanceur ou menu multi-niveau Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Nouvel outil de lanceur ou menu multi-niveau Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Nouvel outil de lanceur ou menu multi-niveau Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Nouvel outil de lanceur ou menu multi-niveau Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Nouvel outil de lanceur ou menu multi-niveau Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Nouvel outil de lanceur ou menu multi-niveau Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Nouvel outil de lanceur ou menu multi-niveau Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Nouvel outil de lanceur ou menu multi-niveau Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Nouvel outil de lanceur ou menu multi-niveau Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Nouvel outil de lanceur ou menu multi-niveau Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Nouvel outil de lanceur ou menu multi-niveau 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
-38%
Le deal à ne pas rater :
Ecran PC gaming 23,8″ – ACER KG241Y P3bip à 99,99€
99.99 € 159.99 €
Voir le deal

 

 Nouvel outil de lanceur ou menu multi-niveau

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


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

Nouvel outil de lanceur ou menu multi-niveau Empty
MessageSujet: Nouvel outil de lanceur ou menu multi-niveau   Nouvel outil de lanceur ou menu multi-niveau EmptyMar 29 Oct 2013 - 1:52

J'ai fait un n-ième programme lanceur, en générant des menus Panoramic (menus Windows), mais à plusieurs niveaux. Le menu complet est défini par un fichier ini, obéissant au format suivant:
Citation :

; Configuration de menu_avec_BDR
niveau,libellé,fichier,paramètre,dossier
niveau = niveau de la ligne dans le menu (1=main_menu)
libellé = texte à afficher dans le menu
fichier = fichier ou exécutable à lancer (optionnel)
paramètre = paramètre optionnel pour le programme à lancer
dossier = dossier dans lequel le programme devra s'exécuter (optionnel)

Tous les éléments contenant des espaces doivent être entourés de guillemets.

Voici un exemple d'un tel fichier:
Citation :
; Configuration de menu_avec_BDR
1,"menu"
2,"Jeux"
3,"Bulles","C:\jeux\bulles.exe"
3,"Couleurs tombantes","C:\jeux\couleurs.exe"
2,"Panoramic"
3,"Editeur seul","C:\Program files\Panoramic Editor\Panoramic_Editor.exe"
3,"Editeur avec test.bas","C:\Program files\Panoramic Editor\Panoramic_Editor.exe","C:\mes programmes Panoramic\test.bas","C:\mes programmes Panoramic"
2,"Sauvegardes"
3,"Sauvegarde","C:\outils\sauvegarde.bat"
3,"Restauration","C:\outils\restauration.bat"
La ligne 1,"menu" génère le main_menu de Panoramic, les autres genèrent des sub_menu Panoramic.

Et voici le programme (adapter les chemins dans la procedure "constantes":
Code:
' menu_avec_fichier_ini.bas

labels()
constantes()
variables()
objets_invisibles()
initialisations()
end

sub labels()
  label click_menu
end_sub

sub constantes()
  dim kgf$ : kgf$ = "KGF.dll"
  dim ini$ : ini$ = "c:\documents and settings\klaus\mes documents\mes projets delphi\KGF\menu_avec_fichier_ini.ini"
  dim tit$ : tit$ = "; Configuration de menu_avec_BDR"
  dim nox% : nox% = 100
end_sub

sub variables()
  dim s$, i%, s1$, no%, niv%, base%
  dim n_menu%, menu%(200,1), menu$(200,3), bases%(10)
end_sub

sub objets_invisibles()
  dlist 1 : ' pile des indices des niveaux
'  list 1 : top 1,10 : left 1,10 : height 1,300
'  list 2 : top 2,10 : left 2,150 : height 2,300 : width 2,400
end_sub

sub initialisations()
width 0,600 : height 0,60
  KGF_initialize(kgf$)
  if file_exists(ini$)=0
    file_open_write 1,ini$
    file_writeln 1,tit$
    file_writeln 1,"1,main"
    file_close 1
  end_if
  file_open_read 1,ini$
  file_readln 1,s$
  if s$<>tit$
    message "Le fichier de configuration est invalide"
    terminate
  end_if
  base% = 0
  clear 1
  while file_eof(1)=0
    file_readln 1,s$
    n_menu% = n_menu% + 1
    KGFDelimitedTextExtract(s$,",",1)
    if numeric(KGFDelimitedTextExtract$)=0
      message "Erreur de syntaxe à la ligne "+s$
      terminate
    end_if
    niv% = val(KGFDelimitedTextExtract$)
    if niv%>base%
      item_add 1,str$(n_menu%)
      base% = niv%
    else
      if niv%<base%
        while niv%<=count(1)
          item_delete 1,count(1)
        end_while
        item_add 1,str$(n_menu%)
        base% = niv%
      end_if
    end_if
    menu%(n_menu%,0) = niv%
    if niv%>1 then menu%(n_menu%,1) = val(item_read$(1,base%-1))
    KGFDelimitedTextExtract(s$,",",2)
    menu$(n_menu%,0) = KGFDelimitedTextExtract$
    KGFDelimitedTextExtract(s$,",",3)
    menu$(n_menu%,1) = KGFDelimitedTextExtract$
    KGFDelimitedTextExtract(s$,",",4)
    menu$(n_menu%,2) = KGFDelimitedTextExtract$
    KGFDelimitedTextExtract(s$,",",5)
    menu$(n_menu%,3) = KGFDelimitedTextExtract$
' item_add 2,str$(n_menu%)+": "+menu$(n_menu%,0)+"  "+str$(menu%(n_menu%,1))
' message "a"
  end_while
  file_close 1
  
  no% = nox%
  for i%=1 to n_menu%
    no% = no% + 1
    if menu%(i%,0)=1
      main_menu no%
    else
'  message "B: "+str$(i%)+": "+str$(no%)+"   "+str$(menu%(i%,1)+nox%)
      sub_menu no% : parent no%,menu%(i%,1)+nox% : caption no%,menu$(i%,0)
      if len(menu$(i%,1))>0 then on_click no%,click_menu
    end_if
  next i%
end_sub

click_menu:
  s$ = menu$(number_click-nox%,1)
'  message "lancement de: "+menu$(number_click-nox%,1)+"  paramètre: "+menu$(number_click-nox%,2)+"  dossier: "+menu$(number_click-nox%,3)
  ExecuteProgram(menu$(number_click-nox%,1),menu$(number_click-nox%,2),menu$(number_click-nox%,3))
  return

 #INCLUDE "KGF_SUB.bas"
Il faut KGF.dll et KGF_SUB.bas pour l'exécution.

Note complémentaire:
Cette technique peut aussi être utilisé dans un programme application, pour avoir des menus configurables par fichier INI. Chaque programme aurait son propre fichier INI, mais le code de chargement est le même, ajouté par n#INCLUDE par exemple. Et le sous-programme click_menu serait modifié légèrement pour gérer les clics internes à l'application:
Code:
click_menu:
  s$ = menu$(number_click-nox%,1)
'  message "lancement de: "+menu$(number_click-nox%,1)+"  paramètre: "+menu$(number_click-nox%,2)+"  dossier: "+menu$(number_click-nox%,3)
  if left$(menu$(number_click-nox%,1))="$"
    ExecuteProgram(menu$(number_click-nox%,1),menu$(number_click-
nox%,2),menu$(number_click-nox%,3))
  else
    select val(menu$(number_click-nox%,1))
      case 1
...
    end_select
  end_if
  return
Et dans ce cas de figure, il faut faire précéder le nom du fichier ou programme externe à lancer par un "$", et les lignes déterminant une fonction interne du programme contiennent un code numérique à la place du nom du fichier.
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

Nouvel outil de lanceur ou menu multi-niveau Empty
MessageSujet: re   Nouvel outil de lanceur ou menu multi-niveau EmptyMar 29 Oct 2013 - 15:16

Encore un code a étudié de près, même de très près...Very Happy 

Bravo Klaus
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Nouvel outil de lanceur ou menu multi-niveau Empty
MessageSujet: Re: Nouvel outil de lanceur ou menu multi-niveau   Nouvel outil de lanceur ou menu multi-niveau EmptyMar 29 Oct 2013 - 22:28

Oui c est tres pratique et ca peut permettre facilement de gerer les menus dans differentes langued en changeant de fichier ini
Revenir en haut Aller en bas
Contenu sponsorisé





Nouvel outil de lanceur ou menu multi-niveau Empty
MessageSujet: Re: Nouvel outil de lanceur ou menu multi-niveau   Nouvel outil de lanceur ou menu multi-niveau Empty

Revenir en haut Aller en bas
 
Nouvel outil de lanceur ou menu multi-niveau
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Nouvel outil VisualiserImageList.exe
» Nouvel outil de mise à disposition de sources Panoramic
» Menu personalisé avec icones et menu contextuel
» Sub-menu is not menu avec Panoramic.exe
» Kgf multi dll

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: