FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» I Love You
par papydall Aujourd'hui à 1:15

» mise a jour calculatrice
par joeeee2017 Aujourd'hui à 1:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Hier à 18:49

» [solved] 3D_LINE How to ?
par papydall Hier à 6:51

» supprimé
par joeeee2017 Dim 15 Oct 2017 - 20:02

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» supprimé
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 [GLIST] Version "light"

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: [GLIST] Version "light"   Mer 10 Oct 2012 - 19:47

Bonsoir,
Comme Klaus a revu sa copie pour les GLIST, voici une version "light" des GLISTs
Mais je tiens à préciser: cette version est beaucoup moins complète que ce qu'a fait Klaus...
Il manque pas mal de fonctions encore, mais je tenais à vous en faire découvrir l'état actuel.

Code:
CAPTION 0,"DEMO NLIST"
HEIGHT 0,600 : WIDTH 0,SCREEN_X/2

LABEL InitDemo:GOSUB InitDemo

' Quelques opérations sur les NLIST
APPLICATION_TITLE "DEMO SUPRESSION": MESSAGE "Suppression de l'item 8 de la 1ere NLIST"
NLIST_ItemDelete(MyNLIST%,8)
APPLICATION_TITLE "DEMO INSERTION" : MESSAGE "Insertion de l'item 8 de la 1ere NLIST"
NLIST_ItemInsert(MyNLIST%,8,"Nouvelle ligne 8","italic:bold:RVBFF0000")

MESSAGE "Insertion de l'item 2 (gras,italique,rouge sur fond jaune) de la 2eme NLIST"
NLIST_ItemInsert(MyNLIST2%,2,"Nouvelle ligne 2","italic:bold:RVBFF0000:BCKFFE400")
APPLICATION_TITLE "DEMO SUPRESSION": MESSAGE "Suppression de l'item 3 de la 2eme NLIST"
NLIST_ItemDelete(MyNLIST2%,3)
APPLICATION_TITLE "CAS PARTICULIERS" : MESSAGE "Plus vicieux:"+CRLF$+"Insertion de l'item 8 dans la 2eme NLIST"
NLIST_ItemInsert(MyNLIST2%,8,"Insertion d'une nouvelle ligne","bold:RVB0000FF")
MESSAGE "Dans ce cas, la ligne est ajoutée à la fin"+CRLF$+CRLF$+"Pour la supression, idem:"+CRLF$+"C'est le dernier élément qui sera supprimé"
NLIST_ItemDelete(MyNLIST2%,23)
APPLICATION_TITLE "FIN"
MESSAGE "That's all ! ;)"+CRLF$+"Vous pouvez parcourir les listes et sélectionner des lignes"

END
' ==============================================================================
'                    "FIN" DU PROGRAMME PRINCIPAL
' ==============================================================================

InitDemo:
  DIM MyNLIST%,MyNLIST2%
  DIM CRLF$:CRLF$=CHR$(10)+CHR$(13)
  NLIST_Create(20,20,SCREEN_X/3,12,"D8ECE2")
  MyNLIST% = NLIST_Create_return%
  ' on en crée une 2eme pour le fun
  NLIST_Create(20,220,SCREEN_X/4,12,"55FFAA")
  MyNLIST2% = NLIST_Create_return%

  DIM i

  ' la 1ere NLIST
  NLIST_SetOption(MyNLIST%,"RAFR","OFF") : ' on désactive le rafraichissement
  FOR i=1 TO 5
    NLIST_ItemAdd(MyNLIST%,"Ligne "+str$(i),"")
  NEXT i
  NLIST_ItemAdd(MyNLIST%,"Ligne 6","")
  NLIST_ItemAdd(MyNLIST%,"Ligne 7","bold")
  NLIST_ItemAdd(MyNLIST%,"Ligne 8","strike")
  NLIST_ItemAdd(MyNLIST%,"Ligne 9","italic:bckFFAA55")
  NLIST_ItemAdd(MyNLIST%,"Ligne 10","italic:bold")
  NLIST_ItemAdd(MyNLIST%,"Ligne 11","italic:RVBFF0000:bold:bckCCCCFF")
  NLIST_ItemAdd(MyNLIST%,"Ligne 12","RVB0000FF:bold:strike")
  FOR i=13 TO 25
    NLIST_ItemAdd(MyNLIST%,"Ligne "+str$(i),"")
  NEXT i
  NLIST_SetOption(MyNLIST%,"RAFR","ON")  : ' on force un rafraichissement de la liste
  NLIST_SetOption(MyNLIST%,"ACTIVE","ON"): ' option "bidon" qui ne sert à rien pour l'instant, c'est juste pour montrer la syntaxe

  ' la 2eme NLIST
  NLIST_ItemAdd(MyNLIST2%,"Ligne 1","italic:RVBDDEEFF:bold:bckFFAA55")
  NLIST_ItemAdd(MyNLIST2%,"Ligne 2","strike:RVBFF0000:bold:bckCCFFFF")
  NLIST_SetOption(MyNLIST2%,"RAFR","ON")  : ' on force un rafraichissement de la liste
  NLIST_ItemAdd(MyNLIST2%,"Ligne 3","strike:RVBFFDD00:bckCC00FF")
RETURN


' ==============================================================================
' ==============================================================================
'              DEBUT DES PROCEDURES DE GESTION POUR LA GLIST
' ==============================================================================
' ==============================================================================

SUB NLIST_Init()
  DIM NLIST_LINE_HEIGHT%: NLIST_LINE_HEIGHT% = 14 : ' Hauteur d'une ligne de la GLIST
  LABEL NLIST_Scroll,NLIST_clickListe
  DIM NLIST_LstDescripteur%:NLIST_ObjectId%(): NLIST_LstDescripteur% = NLIST_ObjectId_return%
  DLIST NLIST_LstDescripteur%
  DIM Debug:Debug=0
  IF Debug=1
    FORM 1000 : TOP 1000,TOP(0)+HEIGHT(0)+20
  END_IF
END_SUB

SUB EXPLODE(delimiter$,chaine$,liste%)
  WHILE INSTR(chaine$,delimiter$)<>0
    ITEM_ADD liste%,LEFT$(chaine$,INSTR(chaine$,delimiter$)-1)
    chaine$=RIGHT$(chaine$,LEN(chaine$)-INSTR(chaine$,delimiter$))
  END_WHILE
  ITEM_ADD liste%,chaine$
END_SUB

' ------------------------------------------------------------------------------
' Procédure interne pour fonctionnement de la librairie
' Renvoie un numéro d'objet libre
' ------------------------------------------------------------------------------
SUB NLIST_ObjectId%()
  IF VARIABLE("NLIST_ObjectId_return%")=0 THEN DIM NLIST_ObjectId_return%
  NLIST_ObjectId_return% = 1
  WHILE OBJECT_EXISTS(NLIST_ObjectId_return%) = 1 : NLIST_ObjectId_return% = NLIST_ObjectId_return% + 1 : END_WHILE
END_SUB

' ------------------------------------------------------------------------------
' Descripteur
'  1: n°Id liste des items
'  2: Nombre de lignes affichables (hauteur)
'  3: n°Id liste de service
'  4: n°Id Zone graphique 1
'  5: n°Id Zone graphique 2
'  6: n°Id Scrollbar
'  7: n°Id Zone graphique active
'  8: Indice de la 1ere ligne affichée dans la GLIST
'  9: Indice de la ligne sélectionnée
' ------------------------------------------------------------------------------

' ------------------------------------------------------------------------------
' Param L%    Left
' Param T%    Top
' Param W%    Width
' Param H%    Height
' Retour: le numero de la liste de description de l'objet
' ------------------------------------------------------------------------------
SUB NLIST_Create(L%,T%,W%,H%,Bck$)
  IF VARIABLE("NLIST_Create_return%")=0 THEN DIM NLIST_Create_return%
  IF VARIABLE("NLIST_LINE_HEIGHT%")=0 THEN NLIST_Init()
  DIM_LOCAL Descriptor%,Service%,Graph%,Scroll%
  DIM_LOCAL NLIST%
  ' création de la liste de description
  NLIST_ObjectId%():Descriptor% = NLIST_ObjectId_return%
  IF Debug=1
    PRINT_TARGET_IS 1000
    LIST Descriptor%:PARENT Descriptor%,1000
    HEIGHT Descriptor%,HEIGHT(1000)-50:WIDTH Descriptor%,20
  ELSE: DLIST Descriptor%: END_IF
 
  ITEM_ADD NLIST_LstDescripteur%,Descriptor%
  ' création de la NLIST
  NLIST_ObjectId%(): NLIST% = NLIST_ObjectId_return% : DLIST NLIST%
  ITEM_ADD Descriptor%,STR$(NLIST%)                          :                ' *** DESCRIPTOR 1
  IF Debug=1 THEN PRINT "        N°id liste item"

  ' Nombre d'items affichables dans la NLIST
  ITEM_ADD Descriptor%,STR$(H%)                              :                ' *** DESCRIPTOR 2
  IF Debug=1 THEN PRINT "        Nb item (hauteur NLIST)"

  ' Création de la liste "service" : attributs + variables diverses
  NLIST_ObjectId%(): Service%= NLIST_ObjectId_return%
  DLIST Service% : ITEM_ADD Descriptor%, Service% :                            ' *** DESCRIPTOR 3 : on met à jour la zone de définition
  ITEM_ADD Service%,"" : ' pas d'option pour l'instant
  IF Debug=1 THEN PRINT "        N°id Liste de service (attributs,options)"

  ' Création des 2 zones graphiques de la GLIST
  NLIST_ObjectId%(): Graph%= NLIST_ObjectId_return%
  PICTURE Graph% : HIDE Graph% : ITEM_ADD Descriptor%,Graph%  :                ' *** DESCRIPTOR 4
  LEFT Graph%,L% : TOP Graph%,T% : WIDTH Graph%,W%
  HEIGHT Graph%, H% * NLIST_LINE_HEIGHT%
  ON_CLICK Graph%,NLIST_clickListe
  IF Debug=1 THEN PRINT "        N°id Image 1"

  NLIST_ObjectId%(): Graph%= NLIST_ObjectId_return%
  PICTURE Graph% : ITEM_ADD Descriptor%,Graph%                :                ' *** DESCRIPTOR 5
  LEFT Graph%,L% :TOP Graph%,T% : WIDTH Graph%,W%
  HEIGHT Graph%, H% * NLIST_LINE_HEIGHT%
  ON_CLICK Graph%,NLIST_clickListe
  IF Debug=1 THEN PRINT "        N°id Image 2"

  ' Création du scrollbar de la GLIST
  NLIST_ObjectId%(): Scroll%= NLIST_ObjectId_return%
  SCROLL_BAR Scroll% : ITEM_ADD Descriptor%,Scroll%          :                ' *** DESCRIPTOR 6
  VERTICAL Scroll% : MIN Scroll%,1 : MAX Scroll%,1
  LEFT Scroll%,L% + W% + 3 : TOP Scroll%,T%
  HEIGHT Scroll%, H% * NLIST_LINE_HEIGHT%
  ON_CHANGE Scroll%,NLIST_Scroll
  IF Debug=1 THEN PRINT "        N°id Scrollbar"

  ' Zone graphique active
  ITEM_ADD Descriptor%,ITEM_READ$(Descriptor%,5)              :                ' *** DESCRIPTOR 7
  IF Debug=1 THEN PRINT "        N°id Image active"

  ' Indice de la 1ere ligne affichée
  ITEM_ADD Descriptor%,"1"                                    :                ' *** DESCRIPTOR 8
  IF Debug=1 THEN PRINT "        Indice 1ere ligne"

  ' Indice de la ligne sélectionnée
  ITEM_ADD Descriptor%,"1"                                    :                ' *** DESCRIPTOR 9
  IF Debug=1 THEN PRINT "        Indice ligne sélectionnée"
  PRINT_TARGET_IS 0
  NLIST_Create_return% = Descriptor%
  ' Ajoute l'option font d'écran
  NLIST_SetOption(Descriptor%,"BCK",Bck$)
  NLIST_SetOption(Descriptor%,"RAFR","ON")
  NLIST_redraw(Descriptor%)
END_SUB

' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
NLIST_Scroll:
  OFF_CHANGE NUMBER_CHANGE
  NLIST_ScrollInterne(NUMBER_CHANGE)
RETURN

' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
SUB NLIST_ScrollInterne(Obj%)
  DIM_LOCAL i,Descriptor%,ScrollBar%
  WHILE MOUSE_LEFT_DOWN(Obj%)=1:END_WHILE
  FOR i=1 TO COUNT(NLIST_LstDescripteur%)
    Descriptor% = VAL(ITEM_READ$(NLIST_LstDescripteur%,i))
    ScrollBar%= VAL(ITEM_READ$(Descriptor%,6))
    IF Obj% = ScrollBar%
      ' Mise à jour de l'indice de la ligne courante dans le descripteur
      ITEM_CHANGE(Descriptor%,8,STR$(POSITION(Obj%)))
      NLIST_redraw(Descriptor%)
      ON_CHANGE ScrollBar%,NLIST_Scroll
    END_IF
  NEXT i
END_SUB

' ------------------------------------------------------------------------------

' ------------------------------------------------------------------------------
NLIST_clickListe:
  OFF_CLICK NUMBER_CLICK
  NLIST_clickListeInterne(NUMBER_CLICK)
RETURN

' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
SUB NLIST_clickListeInterne(Obj%)
  DIM_LOCAL i,Descriptor%,PicActive%
  DIM_LOCAL x%,y%,itemSelect%,FirstItem%
 
  FOR i=1 TO COUNT(NLIST_LstDescripteur%)
    Descriptor% = VAL(ITEM_READ$(NLIST_LstDescripteur%,i))
    PicActive%= VAL(ITEM_READ$(Descriptor%,7))
    FirstItem%= VAL(ITEM_READ$(Descriptor%,8))
    IF Obj% = PicActive%
      x%=MOUSE_X_LEFT_DOWN(PicActive%)
      y%=MOUSE_Y_LEFT_DOWN(PicActive%)
      itemSelect% = FirstItem% + INT((y%+NLIST_LINE_HEIGHT%-1)/NLIST_LINE_HEIGHT%)-1
      if itemSelect% > COUNT(VAL(ITEM_READ$(Descriptor%,1))) THEN itemSelect%=0
      CAPTION 0,"Item Select:"+STR$(itemSelect%)
      ITEM_CHANGE(Descriptor%,9,STR$(itemSelect%))
      NLIST_redraw(Descriptor%)
      ON_CLICK PicActive%,NLIST_clickListe
    END_IF
  NEXT i
END_SUB

' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
SUB NLIST_SetOption(N%,Opt$,status$)
  DIM_LOCAL NOPT$:NOPT$=ITEM_READ$(VAL(ITEM_READ$(N%,3)),1)
  DIM_LOCAL i
  Opt$=UPPER$(Opt$):status$=UPPER$(status$)
  IF INSTR(NOPT$,Opt$)<>0
    DIM_LOCAL Service%:NLIST_ObjectId%()
    Service%= NLIST_ObjectId_return%
    DLIST Service%:EXPLODE(":",NOPT$,Service%)
    FOR i = 1 TO COUNT(Service%)
      IF INSTR(ITEM_READ$(Service%,i),opt$)<>0
        IF COUNT(Service%)=1:DELETE Service%:DLIST Service%
        ELSE:ITEM_DELETE Service%,i:END_IF
        ITEM_INSERT Service%,i,opt$+"_"+status$
        EXIT_FOR
      END_IF
    NEXT i
    NOPT$=ITEM_READ$(Service%,1)
    IF COUNT(Service%)>1
      FOR i = 2 TO COUNT(Service%):NOPT$=NOPT$+":"+ITEM_READ$(Service%,i):NEXT i
    END_IF
    DELETE Service%
  ELSE
    IF NOPT$<>"" THEN NOPT$=NOPT$+":"
    NOPT$=NOPT$+Opt$+"_"+status$
  END_IF
  ITEM_CHANGE(VAL(ITEM_READ$(N%,3)),1,NOPT$)
  ' CAPTION 0,NOPT$
  IF opt$+"_"+status$ ="RAFR_ON" THEN NLIST_redraw(N%)
END_SUB

' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
SUB NLIST_GetOption(N%,Opt$)
  IF VARIABLE("NLIST_GetOption_return$")=0 THEN DIM NLIST_GetOption_return$
  DIM_LOCAL i%,NOPT$: NOPT$=ITEM_READ$(VAL(ITEM_READ$(N%,3)),1)
  Opt$=UPPER$(Opt$)
  NLIST_GetOption_return$=""
  IF INSTR(NOPT$,Opt$)<>0
    DIM_LOCAL Service% :NLIST_ObjectId%(): Service%= NLIST_ObjectId_return%
    DLIST Service%: EXPLODE(":",NOPT$,Service%)
    FOR i%=1 TO COUNT(Service%)
      IF INSTR(ITEM_READ$(Service%,i%),Opt$)<>0
        NLIST_GetOption_return$=ITEM_READ$(Service%,i%)
        i%=INSTR(NLIST_GetOption_return$,"_")
        NLIST_GetOption_return$ = RIGHT$(NLIST_GetOption_return$,LEN(NLIST_GetOption_return$)-i%)
        EXIT_FOR
      END_IF
    NEXT i%
    DELETE Service%
  END_IF
END_SUB

' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
SUB NLIST_GetRVB(V$)
  IF VARIABLE("NLIST_RVB")=0 THEN DIM NLIST_RVB(3)
  NLIST_RVB(0)=HEX(LEFT$(V$,2)): NLIST_RVB(1)=HEX(MID$(V$,3,2)): NLIST_RVB(2)=HEX(RIGHT$(V$,2))
END_SUB
' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
SUB ITEM_CHANGE(N%,Id,t$)
  ITEM_INSERT N%,Id,t$
  ITEM_DELETE N%,Id+1
END_SUB
' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
SUB NLIST_redraw(N%)
  DIM_LOCAL NLIST%,idPic%,idPicActive%,idPic1%,idPic2%,off7%,Count%
  DIM_LOCAL Attr%
  DIM_LOCAL itemSelected%
  DIM_LOCAL i%
  DIM_LOCAL oldPicActive%
  DIM_LOCAL BackgroundPic%
 
  ' on recupere les valeurs RVB par défaut pour le fond
  NLIST_GetOption(N%,"BCK")
  NLIST_GetRVB(NLIST_GetOption_return$)

  NLIST%=VAL(ITEM_READ$(N%,1)) : ' liste contenant les items
  Count%=VAL(ITEM_READ$(N%,2)) : '
  IF Count%>COUNT(NLIST%) THEN Count%=COUNT(NLIST%)
  Attr%=VAL(ITEM_READ$(N%,2))

  idPic1%=VAL(ITEM_READ$(N%,4))
  idPic2%=VAL(ITEM_READ$(N%,5))
  idPicActive%=VAL(ITEM_READ$(N%,7))
  off7%=VAL(ITEM_READ$(N%,8))
  itemSelected%=VAL(ITEM_READ$(N%,9))
  ' pour éviter des clignotements désagréables à l'écran
  ' on recontruit la NLIST sur le PICTURE qui se trouve en arrière plan
  IF idPicActive% = idPic1% : BackgroundPic% = idPic2% : ELSE : BackgroundPic% = idPic1% : END_IF
  ' on commence par l'effacer
  2D_TARGET_IS BackgroundPic%:2D_CLEAR
  2d_flood 10,10,NLIST_RVB(0),NLIST_RVB(1),NLIST_RVB(2)
  ' puis on la définie comme étant la nouvelle cible
  PRINT_TARGET_IS BackgroundPic%: 2D_TARGET_IS BackgroundPic%
  ' parcours de tous les items
  IF COUNT(NLIST%)<>0
    FOR i% = off7%  TO (off7% + Count%-1)
      IF i%<=COUNT(NLIST%)
        WAIT 2
        ' si c'est la ligne qui est sélectionée
        IF i% = itemSelected%
          ' par défaut, cette ligne est sur fond bleu
          2d_fill_color 0,0,255 : 2d_pen_color 0,0,255
          2d_rectangle 0,int((i%-off7%)*NLIST_LINE_HEIGHT%),width(BackgroundPic%),int((i%-off7%+1)*NLIST_LINE_HEIGHT%)
          ' et les caractères sont blancs
          font_color BackgroundPic%,255,255,255
          NLIST_ResetAttr(BackgroundPic%) : ' elle n'a pas d'attributs d'affichage
          print item_read$(VAL(ITEM_READ$(N%,1)),i%)
        ELSE
          ' couleur du fond
          2d_fill_color NLIST_RVB(0),NLIST_RVB(1),NLIST_RVB(2) : 2d_pen_color NLIST_RVB(0),NLIST_RVB(1),NLIST_RVB(2)
          2d_rectangle 0,int((i%-off7%)*NLIST_LINE_HEIGHT%),width(BackgroundPic%),int((i%-off7%+1)*NLIST_LINE_HEIGHT%)
          font_color BackgroundPic%,0,0,0 : ' Par défaut, les caractères sont noirs
          NLIST_DrawItem(N%,i%)
        END_IF
      END_IF
    NEXT i%
    ' l'image est prête : on inverse l'affichage
    ' Vivement les fonctions un swap(a,b) serait pas mal...
    oldPicActive% = idPicActive%
    idPicActive%= BackgroundPic%
    BackgroundPic% = oldPicActive%
    SHOW idPicActive%: HIDE BackgroundPic%
    ITEM_CHANGE(N%,7,STR$(idPicActive%))
    ' puis on redefinie la cible pour utilisation diverse
    PRINT_TARGET_IS  idPicActive% : 2D_TARGET_IS idPicActive%
  END_IF
END_SUB

' ------------------------------------------------------------------------------
' N% : Descripteur
' Note : Le print_target et 2d_target doivent être déjà définis
' ------------------------------------------------------------------------------
SUB NLIST_ResetAttr(PicActive%)
  FONT_BOLD_OFF PicActive%
  FONT_ITALIC_OFF PicActive%
  FONT_STRIKE_OFF PicActive%
END_SUB

' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
SUB NLIST_DrawItem(N%,Item%)
  DIM_LOCAL Attr$ : Attr$=ITEM_READ$(VAL(ITEM_READ$(N%,3)),Item%+1)
  DIM_LOCAL Service%: NLIST_ObjectId%(): Service%= NLIST_ObjectId_return%
  DIM_LOCAL PicActive%:PicActive%=VAL(ITEM_READ$(N%,7))
  DIM_LOCAL ItemList%:ItemList%=VAL(ITEM_READ$(N%,1))
  DIM_LOCAL i%,r,v,b,j%
  IF PicActive%=VAL(ITEM_READ$(N%,4)):PicActive%=VAL(ITEM_READ$(N%,5))
  ELSE:PicActive%=VAL(ITEM_READ$(N%,4)):END_IF
 
  DLIST Service% : EXPLODE(":",Attr$,Service%)

  ' Reset des attributs
  NLIST_ResetAttr(PicActive%)
  ' Parcours de la liste des attributs
  FOR i%=1 TO COUNT(Service%)
    Attr$=TRIM$(LOWER$(ITEM_READ$(Service%,i%)))
    IF Attr$="bold" THEN FONT_BOLD PicActive%
    IF Attr$="italic" THEN FONT_ITALIC PicActive%
    IF Attr$="strike" THEN FONT_STRIKE PicActive%
    IF LEFT$(Attr$,3)="bck"
      IF VAL(ITEM_READ$(N%,9))<>Item%
        j%=VAL(ITEM_READ$(N%,8))
        r=HEX(MID$(Attr$,4,2)):v=HEX(MID$(Attr$,6,2)):b=HEX(MID$(Attr$,8,2))
        2d_fill_color r,v,b : 2d_pen_color r,v,b
        2d_rectangle 0,int((Item%-j%)*NLIST_LINE_HEIGHT%),width(PicActive%),int((Item%-j%+1)*NLIST_LINE_HEIGHT%)
      END_IF
    END_IF
    IF LEFT$(Attr$,3)="rvb"
      r=HEX(MID$(Attr$,4,2)):v=HEX(MID$(Attr$,6,2)):b=HEX(MID$(Attr$,8,2))
      FONT_COLOR PicActive%,r,v,b
    END_IF
  NEXT i%
  print item_read$(VAL(ITEM_READ$(N%,1)),Item%)
  DELETE Service%
END_SUB

' ------------------------------------------------------------------------------
' ------------------------------------------------------------------------------
SUB NLIST_ItemAdd(N%,Chaine$,Attr$)
  ITEM_ADD VAL(ITEM_READ$(N%,1)),Chaine$
  ITEM_ADD VAL(ITEM_READ$(N%,3)),Attr$
  MAX VAL(ITEM_READ$(N%,6)),COUNT(VAL(ITEM_READ$(N%,1)))
  ' on regarde si le rafraichissement est actif
  NLIST_GetOption(N%,"RAFR")
  IF NLIST_GetOption_return$="ON" THEN NLIST_Redraw(N%) : ' on rafraichi la liste
END_SUB

' ------------------------------------------------------------------------------
' ------------------------------------------------------------------------------
SUB NLIST_ItemDelete(N%,Item%)
  DIM_LOCAL SizeOfNLIST% : SizeOfNLIST% =COUNT(VAL(ITEM_READ$(N%,1)))
  IF Item% > SizeOfNLIST% THEN Item% = SizeOfNLIST%
  ITEM_DELETE VAL(ITEM_READ$(N%,1)),Item%
  ITEM_DELETE VAL(ITEM_READ$(N%,3)),Item%+1
  ' on regarde si le rafraichissement est actif
  NLIST_GetOption(N%,"RAFR")
  IF NLIST_GetOption_return$="ON" THEN NLIST_Redraw(N%) : ' on rafraichi la liste
END_SUB
' ------------------------------------------------------------------------------
' ------------------------------------------------------------------------------
SUB NLIST_ItemInsert(N%,Item%,Chaine$,Attr$)
  DIM_LOCAL SizeOfNLIST% : SizeOfNLIST% =COUNT(VAL(ITEM_READ$(N%,1)))
  IF Item% > SizeOfNLIST%
    NLIST_ItemAdd(N%,Chaine$,Attr$)
  ELSE
    ITEM_INSERT VAL(ITEM_READ$(N%,1)),Item%,Chaine$
    ITEM_INSERT VAL(ITEM_READ$(N%,3)),Item%+1,Attr$
    ' on regarde si le rafraichissement est actif
    NLIST_GetOption(N%,"RAFR")
    IF NLIST_GetOption_return$="ON" THEN NLIST_Redraw(N%) : ' on rafraichi la liste
  END_IF
END_SUB

EDIT1:
  • Ajout de NLIST_ItemDelete()
  • Ajout de NLIST_ItemInsert()


Dernière édition par Nardo26 le Jeu 11 Oct 2012 - 0:47, édité 3 fois (Raison : Ajout nouvelles fonctions)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
JL35



Nombre de messages : 5952
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: [GLIST] Version "light"   Mer 10 Oct 2012 - 22:06

Hum ! pas simple, mais séduisant !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: [GLIST] Version "light"   Jeu 11 Oct 2012 - 0:45

J'ai rajouté deux fonctions necessaire pour la manipulation des NLIST
(Voir post de départ) Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Jicehel

avatar

Nombre de messages : 5857
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: [GLIST] Version "light"   Jeu 11 Oct 2012 - 2:17

Bravo Nardo. C'est une jolie librairie et ce pseudo-objet peut suffire à beaucoup d'usages.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: [GLIST] Version "light"   Jeu 11 Oct 2012 - 8:51

Le mérite reviens en grande partie à Klaus qui a crée pour la 1ere fois les GLIST...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Jicehel

avatar

Nombre de messages : 5857
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: [GLIST] Version "light"   Jeu 11 Oct 2012 - 14:07

Absolument, mais bon, on a déjà souvent l'occasion de remercier Klaus pour l'ensemble de son oeuvre, vu tout ce qu'il fait pour nous ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: [GLIST] Version "light"   Jeu 11 Oct 2012 - 14:29

Bonjour,

Vous trouverez une mise à jour sur mon webdav.

Les procédures spécifiques à la NLIST sont maintenant dans un fichier séparé
La démo a été revue et commentée, l'include se fait en fin de démo.

De nouveaux attributs concernant la NLIST elle-même (pas les items) ont été mis en place.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Contenu sponsorisé




MessageSujet: Re: [GLIST] Version "light"   

Revenir en haut Aller en bas
 
[GLIST] Version "light"
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Offre promotionnelle : SnagIT 7.25 en version gratuite !
» Comment envoyer une détection chez avira avec Antivir 9 français - Version Classic
» Offre exceptionnelle : True Image 10 en version gratuite et complète
» [Résolu] Pb pour la désinstallation d'Antivir version Anglaise
» [Résolu] Dernière version d'Avast

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: