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
» Gestion d'un système client-serveur.
[GLIST] Version "light" Emptypar Klaus Aujourd'hui à 13:12

» item_index(résolu)
[GLIST] Version "light" Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
[GLIST] Version "light" Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
[GLIST] Version "light" Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
[GLIST] Version "light" Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
[GLIST] Version "light" Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
[GLIST] Version "light" Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
[GLIST] Version "light" Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
[GLIST] Version "light" Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
[GLIST] Version "light" Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
[GLIST] Version "light" Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
[GLIST] Version "light" Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
[GLIST] Version "light" Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
[GLIST] Version "light" Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
[GLIST] Version "light" Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -45%
PC Portable LG Gram 17″ Intel Evo Core i7 32 Go ...
Voir le deal
1099.99 €

 

 [GLIST] Version "light"

Aller en bas 
3 participants
AuteurMessage
Nardo26

Nardo26


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

[GLIST] Version "light" Empty
MessageSujet: [GLIST] Version "light"   [GLIST] Version "light" EmptyMer 10 Oct 2012 - 18: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... [GLIST] Version "light" 07
Il manque pas mal de fonctions encore, mais je tenais à vous en faire découvrir l'état actuel.
[GLIST] Version "light" 01
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 Mer 10 Oct 2012 - 23:47, édité 3 fois (Raison : Ajout nouvelles fonctions)
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




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

[GLIST] Version "light" Empty
MessageSujet: Re: [GLIST] Version "light"   [GLIST] Version "light" EmptyMer 10 Oct 2012 - 21:06

Hum ! pas simple, mais séduisant !
Revenir en haut Aller en bas
Nardo26

Nardo26


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

[GLIST] Version "light" Empty
MessageSujet: Re: [GLIST] Version "light"   [GLIST] Version "light" EmptyMer 10 Oct 2012 - 23:45

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

Jicehel


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

[GLIST] Version "light" Empty
MessageSujet: Re: [GLIST] Version "light"   [GLIST] Version "light" EmptyJeu 11 Oct 2012 - 1:17

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

Nardo26


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

[GLIST] Version "light" Empty
MessageSujet: Re: [GLIST] Version "light"   [GLIST] Version "light" EmptyJeu 11 Oct 2012 - 7:51

Le mérite reviens en grande partie à Klaus qui a crée pour la 1ere fois les GLIST... [GLIST] Version "light" 07
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jicehel

Jicehel


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

[GLIST] Version "light" Empty
MessageSujet: Re: [GLIST] Version "light"   [GLIST] Version "light" EmptyJeu 11 Oct 2012 - 13: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
Nardo26

Nardo26


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

[GLIST] Version "light" Empty
MessageSujet: Re: [GLIST] Version "light"   [GLIST] Version "light" EmptyJeu 11 Oct 2012 - 13: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
http://nardo26.lescigales.org
Contenu sponsorisé





[GLIST] Version "light" Empty
MessageSujet: Re: [GLIST] Version "light"   [GLIST] Version "light" Empty

Revenir en haut Aller en bas
 
[GLIST] Version "light"
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Nouvelle version de mon pseudo-objet GLIST
» Comment redimensionner une GLIST
» Liste de contacts avec 2 GLIST synchronisées
» Pseudo-objets GLIST et TAB avec des procédures
» D.I.C version Sub

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: