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
» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar papydall Hier à 16:57

» PANORAMIC V 1
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar papydall Hier à 3:22

» select intégrés [résolu]
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Objet LIST avec attributs graphiques et éléments éditables ? Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

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 à ne pas rater :
Funko POP! Jumbo One Piece Kaido Dragon Form : où l’acheter ?
Voir le deal

 

 Objet LIST avec attributs graphiques et éléments éditables ?

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


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

Objet LIST avec attributs graphiques et éléments éditables ? Empty
MessageSujet: Objet LIST avec attributs graphiques et éléments éditables ?   Objet LIST avec attributs graphiques et éléments éditables ? EmptyLun 2 Mai 2022 - 10:55

J'ai fait un objet sur le modèle de l'objet LIST de Panoramic, mais qui apporte plusieurs possibilités supplémentaires:
- chaque ligne peut avoir sa propre police de caractères, avec sa taille et couleur de police personnelle ainsi que ses propres attributs graphiques
- chaque ligne peut être d'un des 4 types suivants: ALPHA, BUTTON, CHECK ou EDIT

Surtout, pour essayer, rechargez KGF.dll de mon site (via la signature dans ce post !

Avec un type EDIT pour les éléments, on peut avoir un clône de LIST dont tous les éléments peuvent être modifiés directement dans l'écran sans artifices supplémentaires, car en fait, chaque élément est un objet EDIT !

Mais ces 4 types de pseudo_objets peuvent être utilisés, soit séparément, soit conjointement dans la même liste.

On peut gérer plusieurs de ces listes simultanément dans un programme Panoramic. Ce n'est pas limité.

Ces objets communiquent avec le programme Panoramic via le mécanisme des USER_EVENT, inidiquant l'identifiant de la liste causant l'évènement (au cas où plusieurs listes seraient gérées par le programme), ainsi que la ligne cliquée.

Les fonctions de service suivantes sont disponibles:
Code:
LO% = dll_call5("CreateListOfObjects",handle(dest%),x%,y%,w%,h%)
' création d'un tel objet
'  LO% = objet créé  dest%=numéro de l'obbjet Panoramic hébergeant LO%  x%,y%=position  w%,h%=dimensions

res% = dll_call1("DeleteListOfObjects",LO%)
' suppression d'un tel objet
'  LO%=objet à supprimer

res% = dll_call6("AddAlphaToListOfObjects",LO%,adr(txt$),adr(pol$),siz%,color%,style%)
' ajout d'une ligne de type ALPHA
'    LO%=objet ciblé  
'    txt$=texte de la ligne  
'    pol$=nom de police  
'    siz%=taille  (8,10,12,14,16,20,22,24,28,32,36,...)
'    color%=couleur RGB   (hex("RRGGBB")
'    style%=attributs graphiques  (somme de 1=gras 2=italique 4=souligné 8=barré)

res% = dll_call6("AddButtonToListOfObjects",LO%,adr(txt$),adr(pol$),siz%,color%,style%)
' ajout d'une ligne de type BUTTON
'    LO%=objet ciblé  
'    txt$=caption de l'objet BUTTON placé dans la ligne
'    pol$=nom de police  
'    siz%=taille  (8,10,12,14,16,20,22,24,28,32,36,...)
'    color%=couleur RGB   (hex("RRGGBB")   (inactif sur ce type de ligne)
'    style%=attributs graphiques  (somme de 1=gras 2=italique 4=souligné 8=barré)

res% = dll_call6("AddCheckToListOfObjects",LO%,adr(txt$),adr(pol$),siz%,color%,style%)
' ajout d'une ligne de type CHECK
'    LO%=objet ciblé  
'    txt$=caption de l'objegt CHECK placé dans la ligne
'    pol$=nom de police  
'    siz%=taille  (8,10,12,14,16,20,22,24,28,32,36,...)
'    color%=couleur RGB   (hex("RRGGBB")
'    style%=attributs graphiques  (somme de 1=gras 2=italique 4=souligné 8=barré)

res% = dll_call6("AddEditToListOfObjects",LO%,adr(txt$),adr(pol$),siz%,color%,style%)
' ajout d'une ligne de type EDIT
'    LO%=objet ciblé  
'    txt$=texte initial de l'objet EDIT placé dans la ligne
'    pol$=nom de police  
'    siz%=taille  (8,10,12,14,16,20,22,24,28,32,36,...)
'    color%=couleur RGB   (hex("RRGGBB")
'    style%=attributs graphiques  (somme de 1=gras 2=italique 4=souligné 8=barré)

res% = dll_call2("RemoveObjectFromListOfObjects",LO%,indice%)
' supprimer une ligne de la liste
'  LO%=objet ciblé
'  indice%=indice de la ligne à supprimer (1, 2, ...)

res% = dll_call3("GetListOfObjectInformation",LO%,indice%,dest%)
' retourner l'information d'une ligne d'un tel objet
'  LO%=objet ciblé
'  indice%=numéro de ligne (1, 2, ...)
'  dest%=adresse d'une variable Panoramic recevant l'information pour les lignes ALPHA, BUTTON et EDIT
'    pour les lignes CHECK, le résultat est retourné dans res% (0 ou 1)

res% = dll_call3("2etListOfObjectInformation",LO%,indice%,valeur%)
' modifier l'information d'une ligne d'un tel objet
'  LO%=objet ciblé
'  indice%=numéro de ligne (1, 2, ...)
'  valeur%=adresse d'une variable Panoramic contenant l'information pour les lignes ALPHA, BUTTON et EDIT
'    pour les lignes CHECK, valejur% est directement 0 ou 1

' res% = dll_call6("ChangeListOfObjectsAttributes",LO%,indice%,adr(pol$),siz%,color%,style%)
' changer les attributs graphiques d'une ligne
'  LO%=objet ciblé
'  indice%=numéro de ligne (1, 2, ...)
'    pol$=nom de police  
'    siz%=taille  (8,10,12,14,16,20,22,24,28,32,36,...)
'    color%=couleur RGB   (hex("RRGGBB")
'    style%=attributs graphiques  (somme de 1=gras 2=italique 4=souligné 8=barré)

res% = dll_call2("SetListOfObjectsInsertPoint",LO%,indice%)
' définir la ligne devant laquelle le prochain ajout de ligne aura lieu
' par défaut, c'est 0 ce qui signifie "ajout en fin de liste"
'  LO%=objegt ciblé
'  indice%=numéro de ligne devant laquelle le prochain ajout de ligne aura llieu
'   (0=ajour en fin de liste   n>0=ajout devant ligne n)

res% = dll_call2("LoadListOfObjectsDataFromFile",LO%,adr(fic$))
' ajouter un fichier en créant une nouvelle ligne pour chaque ligne du fichier
' ce fichier peut contenir des meta-commandes s'appliquant à toutes les lignes suivantes
' jusqu'à la prochaine meta_commande. Elles ont un des formats suivants:
'    #ALPHA,"police",taille,R,G,B,gras,italique,sousligné,barré
'    #BUTTON,"police",taille,R,G,B,gras,italique,sousligné,barré
'    #CHECK,"police",taille,R,G,B,gras,italique,sousligné,barré
'    #EDIT,"police",taille,R,G,B,gras,italique,sousligné,barré
'  LO%=objet ciblé
'  fic$=nom du fichier (estension *.slo)

res% = dll_call2("SaveListOfObjectsDataToFile",LO%,adr(fic$))
' sauvegarder les lignes dans un fichier texte
' ce fichier contiendra 1 meta-commande egt une ligne de texte pour chaque ligne dans la liste
' Les meta-commandes ont un des formats suivants:
'    #ALPHA,"police",taille,R,G,B,gras,italique,sousligné,barré
'    #BUTTON,"police",taille,R,G,B,gras,italique,sousligné,barré
'    #CHECK,"police",taille,R,G,B,gras,italique,sousligné,barré
'    #EDIT,"police",taille,R,G,B,gras,italique,sousligné,barré
'  LO%=objet ciblé
'  fic$=nom du fichier (estension *.slo)

res% = dll_call4("CreateListOfObjectsElements",LO%,adr(meta$),adr(txt$),nombre%)
' ajouter un nombre donné de lignes de type et format identique à un tel objet
'  LO%=objet ciblé
'  meta$=chaîne de caractères contenant une meta-commande
'  txt$ = chaîne de caractères contenant le texte initial pour chaque ligne ajoutée
'  nombre%=nombre de lignes à ajouter

res% = dll_call3("GetListOfObjectStatus",LO%,act%,out%)
' retourner des informations globales sur l'objet
'  LO%=objet ciblé
'  act%: 0=nombre global d'éléments, par type et au total
'          1=liste des types de tous les éléments, un élément par ligne
' out%: 0=affichage à l'écran
'          handle(memo%)=retour dans un MEMO

res% = dll_call3("SetListOfObjectsEvent",LO%,act%,masque%)
' changer la réaction des lignes pour un clic de souris
'  LO%=objet ciblé
'  act%: 0=bloquer USER_EVENT et modification des données
'          1=autoriser USER_EVENT et modification des données
'          2=autoriser USER_EVENT mais bloquer modification des données
'          n+10=idem, mais pour une seule ligne indiquée par masque%
'  masque%: si act%=0, 1 ou 2: 
'                    0=pour tous les éléments
'                    handle(memo%) avec memo contenant 1 ligne par élément, avec un "*" si l'action s'applique
'  masque%: si act%=10, 11 ou 12: 
'                    numéro de la ligne unique ciblée par l'action

Voici une démo de cet objet:
Code:
' test_ListOfObjects.bas

label close0, UserEvent, creer, supprimer, demo, enlever
label ajouterAlpha, ajouterButton, ajouterCheck, ajouterEdit
label choisirCouleur, appliquer, memoriser
label appliquerInsertion, chercherFichier
label importerFichier, exporterFichier
label status, status1
label desactiverUserevent, activerUserevent, bloquerModification
label desactiverUsereventLig4, activerUsereventLig4, bloquerModificationLig4

dim res%, LO%, LO_ID%, table_LO%(20), table_LO_ID%(20), LO_next%, LO_actuel%, LO_ID_event%
dim wpar%, lpar%, txt$, police$, lig%, typ%, ntyp%
dim i%, s$, s1$, R%, G%, B%, clr%, siz%, att%, fic$, repeter%
dim types$(20)
data 4,"ALPHA","BUTTON","CHECK","EDIT"

clr% = 0
att% = 0
siz% = 10
att% = 0
police$ = "Arial"
LO_next% = 0


read ntyp%
for i%=1 to ntyp%
  read types$(i%)
next i%

button 1 : top 1,10 : left 1,10 : caption 1,"Créer"
  on_click 1,creer

button 2 : top 2,10 : left 2,110 : caption 2,"Supprimer"
  on_click 2,supprimer

button 3 : top 3,10 : left 3,210 : caption 3,"Démo"
  on_click 3,demo
 
alpha 4 : top 4,50 : left 4,10 : caption 4,"Ligne:"
spin 5 : top 5,50 : left 5,60 : width 5,60
  min 5,1 : max 5,300 : position 5,1
button 6 : top 6,50 : left 6,120 : caption 6,"Enlever"
  on_click 6,enlever
 
alpha 7 : top 7,80 : left 7,10 : caption 7,"Caption:"
edit 8 : top 8,80 : left 8,60 : width 8,200
button 9 : top 9,80 : left 9,260 : caption 9,"Ajouter ALPHA"
  width 9,100 : on_click 9,ajouterAlpha

alpha 10 : top 10,110 : left 10,10 : caption 10,"Caption:"
edit 11 : top 11,110 : left 11,60 : width 11,200
button 12 : top 12,110 : left 12,260 : caption 12,"Ajouter BUTTON"
  width 12,100 : on_click 12,ajouterButton

alpha 13 : top 13,140 : left 13,10 : caption 13,"Caption:"
edit 14 : top 14,140 : left 14,60 : width 14,200
button 15 : top 15,140 : left 15,260 : caption 15,"Ajouter CHECK"
  width 15,100 : on_click 15,ajouterCheck 
 
alpha 16 : top 16,170 : left 16,10 : caption 16,"Text:"
edit 17 : top 17,170 : left 17,60 : width 17,200
button 18 : top 18,170 : left 18,260 : caption 18,"Ajouter EDIT"
  width 18,100 : on_click 18,ajouterEdit
 
 
alpha 500 : top 500,50 : left 500,830 : font_bold 500 : caption 500,"Attributs d'une ligne:"
alpha 501 : top 501,80 : left 501,860 : caption 501,"Ligne:"
spin 502 : top 502,80 : left 502,910 : width 502,60
  min 502,1 : max 502,300 : position 502,1
alpha 503 : top 503,110 : left 503,860 : caption 503,"Police:"
combo 504 : top 504,110 : left 504,910 : width 504,200
  font_names_load 504
  for i%=1 to count(504)
    if item_read$(504,i%)="Arial"
      item_select 504,i%
      exit_for
    end_if
  next i%
alpha 514 : top 514,140 : left 514,860 : caption 514,"Taille:"
combo 515 : top 515,140 : left 515,910 : width 515,40
  item_add 515,"8"
  item_add 515,"10"
  item_add 515,"12"
  item_add 515,"14"
  item_add 515,"16"
  item_add 515,"24"
  item_add 515,"36"
  item_add 515,"48"
  item_select 515,2
alpha 505 : top 505,170 : left 505,860 : caption 505,"Couleur:"
button 506 : top 506,170 : left 506,910 : caption 506,"Choisir"
  on_click 506,choisirCouleur
picture 507 : top 507,170 : left 507,1010 : width 507,25 : height 507,25
  color 507,0,0,0
alpha 508 : top 508,200 : left 508,860 : caption 508,"Attributs:"
check 509 : top 509,200 : left 509,910 : caption 509,"G" : font_bold 509
check 510 : top 510,200 : left 510,950 : caption 510,"I" : font_italic 510
check 511 : top 511,200 : left 511,990 : caption 511,"S" : font_underline 511
check 512 : top 512,200 : left 512,1030 : caption 512,"B" : font_strike 512
button 513 : top 513,230 : left 513,910 : caption 513,"Appliquer"
  on_click 513,appliquer
button 516 : top 516,230 : left 516,1020 : caption 516,"Mémoriser"
  on_click 516,memoriser
 
alpha 520 : top 520,280 : left 520,830 : font_bold 520 : caption 520,"Prochain ajout:"
alpha 521 : top 521,310 : left 521,860 : caption 521,"Devant:"
spin 522 : top 522,310 : left 522,910 : width 522,60
  min 522,0 : max 522,300 : position 522,0
button 523 : top 523,330 : left 523,910 : caption 523,"Appliquer"
  on_click 523,appliquerInsertion
 
alpha 530 : top 530,380 : left 530,830 : font_bold 530 : caption 530,"Import / Export des données:"
alpha 531 : top 531,410 : left 531,860 : caption 531,"Fichier:"
edit 532 : top 532,410 : left 532,910 : width 532,300
button 533 : top 533,410 : left 533,1210 : width 533,30 : font_bold 533 : caption 533,"..."
  on_click 533,chercherFichier
open_dialog 534 : filter 534,"Sauvegarde ListOfObjects (*.slo)|*.slo" 
button 535 : top 535,440 : left 535,910 : width 535,120 : caption 535,"Importer fichier"
  on_click 535,importerFichier 
button 536 : top 536,440 : left 536,1040 : width 536,120 : caption 536,"Exporter fichier"
  on_click 536,exporterFichier 

alpha 540 : top 540,490 : left 540,830 : font_bold 540 : caption 540,"Génération multiple (selon Attributs d'une ligne):"
alpha 541 : top 541,520 : left 541,860 : caption 541,"Nombre:"
spin 542 : top 542,520 : left 542,910 : width 542,60
  min 542,1 : max 542,300 : position 542,1
alpha 543 : top 543,550 : left 543,910 : caption 543,"(Utiliser un des boutons de création à gauche)"

button 550 : top 550,550 : left 550,410 : width 550,150 : caption 550,"Status global"
  on_click 550,status
button 551 : top 551,550 : left 551,570 : width 551,150 : caption 551,"Status par élément"
  on_click 551,status1
 
button 552 : top 552,580 : left 552,410 : width 552,150 : caption 552,"Désactiver UserEvent"
  on_click 552,desactiverUserevent
button 553 : top 553,580 : left 553,570 : width 553,150 : caption 553,"Activer UserEvent"
  on_click 553,activerUserevent
button 554 : top 554,610 : left 554,490 : width 554,150 : caption 554,"Bloquer modification"
  on_click 554,bloquerModification
alpha 558 : top 558,640 : left 558,410 : caption 558,"Ligne pour action sélective:"
spin 559 : top 559,640 : left 559,570 : width 559,60
  min 559,1 : max 559,300 : position 559,1
button 555 : top 555,670 : left 555,410 : width 555,150 : caption 555,"Désactiver UserEvent Ligne x"
  on_click 555,desactiverUsereventLig4
button 556 : top 556,670 : left 556,570 : width 556,150 : caption 556,"Activer UserEvent Ligne x"
  on_click 556,activerUsereventLig4
button 557 : top 557,700 : left 557,490 : width 557,150 : caption 557,"Bloquer modification Ligne x"
  on_click 557,bloquerModificationLig4
 
full_space 0
dll_on "KGF.dll"

on_close 0,close0
on_user_event UserEvent

end

close0:
  LO% = dll_call1("DeleteListOfObjects",LO%)
  return

UserEvent:
  wpar% = user_event_wparam
  lpar% = user_event_lparam
  if bin_and(wpar%,hex("FF000000"))=hex("16000000")        : ' provenance d'un ListOfObjects ?
    ' ***** création de l'objet ListOfObjects
    if bin_and(wpar%,hex("00FF0000"))=hex("00010000")      : ' évènement création de l'objet ?
      LO_ID% = bin_and(wpar%,hex("0000FF00"))              : ' mémoriser l'identifiant de l'objet créé
    end_if
    ' ***** clic dans une ligne d'un objet ListOfObjects
    LO_ID_event% = bin_and(wpar%,hex("0000FF00"))          : ' prendre l'ID de l'objet ayant envoyé l'évènement
    for i%=0 to LO_next%-1
      if LO_ID_event%=table_LO_ID%(i%)
        LO% = table_LO%(i%)
        LO_ID% = table_LO_ID%(i%)
        LO_actuel% = i%
        exit_for
      end_if
    next i%
    if bin_and(wpar%,hex("0000FF00"))=LO_ID%              : ' est-ce un évènement pour l'objet LO% ?
      if bin_and(wpar%,hex("00FF0000"))=hex("00020000")    : ' évènement clic sur une ligne de la liste ?
        typ% = bin_and(wpar%,hex("FF"))                    : ' isoler le type de ligne cliquée
        s$ = string$(255," ")
        res% = dll_call3("GetListOfObjectInformation",LO%,lpar%,adr(s$))
        ' traiter ici le clic dans une ligne:
        s1$ = "ListOfObjects: index="+str$(LO_actuel%)+"  ID="+hex$(LO_ID%)+chr$(13)+chr$(10)
        s1$ = s1$ + "UserEvent: clic dans ligne "+str$(lpar%)+"  type="+types$(typ%)+"  ("+trim$(s$)+")"
        message s1$
      end_if
    end_if
   
  end_if
  return
 
creer:
  if LO_next%=0    : ' <========== pour interdire la création multiple ici, dans cette démo !
    LO% = dll_call5("CreateListOfObjects",handle(0),410,50,400,500)
    table_LO%(LO_next%) = LO%
    table_LO_ID%(LO_next%) = LO_ID%
    LO_next% = LO_next% + 1  : ' rendre possible la coexistence de plusieurs objets de ce type !
  end_if
  return
 
supprimer:
  LO% = dll_call1("DeleteListOfObjects",LO%)
  return
 
demo:
  gosub appliquerInsertion
  txt$ = "Ma première ligne"
  police$ = "Arial"
  res% = dll_call6("AddAlphaToListOfObjects",LO%,adr(txt$),adr(police$),12,hex("FF"),2)
  if position(522)>0 then position 522,position(522) + 1
  ' message "AddAlphaToListOfObjects: "+str$(res%)

  gosub appliquerInsertion
  txt$ = "Ma deuxième ligne"
  police$ = "Arial Black"
  res% = dll_call6("AddAlphaToListOfObjects",LO%,adr(txt$),adr(police$),16,hex("FF0000"),1)
  if position(522)>0 then position 522,position(522) + 1
  ' message "AddAlphaToListOfObjects: "+str$(res%)

  gosub appliquerInsertion
  txt$ = "Mon premier bouton"
  police$ = "Arial"
  res% = dll_call6("AddButtonToListOfObjects",LO%,adr(txt$),adr(police$),16,hex("FFFF00"),4)
  if position(522)>0 then position 522,position(522) + 1
  ' message "AddButtonToListOfObjects: "+str$(res%)

  gosub appliquerInsertion
  txt$ = "Mon premier objet Check"
  police$ = "Arial"
  res% = dll_call6("AddCheckToListOfObjects",LO%,adr(txt$),adr(police$),16,hex("FFFF"),8)
  if position(522)>0 then position 522,position(522) + 1
  ' message "AddCheckToListOfObjects: "+str$(res%)
 
  position 522,0
  return
 
enlever:
  lig% = position(5)
  res% = dll_call2("RemoveObjectFromListOfObjects",LO%,lig%)
  ' message "RemoveObjectFromListOfObjects: "+str$(res%)
  return

ajouterAlpha:
  gosub appliquerInsertion
  repeter% = position(542)
  txt$ = text$(8)
  police$ = "Arial"
  for i%=1 to repeter%
    res% = dll_call6("AddAlphaToListOfObjects",LO%,adr(txt$),adr(police$),siz%,clr%,att%)
  next i%
  position 522,0
  position 542,1
  return

ajouterButton:
  gosub appliquerInsertion
  repeter% = position(542)
  txt$ = text$(11)
  police$ = "Arial"
  for i%=1 to repeter%
    res% = dll_call6("AddButtonToListOfObjects",LO%,adr(txt$),adr(police$),siz%,clr%,att%)
  next i%
  position 522,0
  position 542,1
  return

ajouterCheck:
  gosub appliquerInsertion
  repeter% = position(542)
  txt$ = text$(14)
  police$ = "Arial"
  for i%=1 to repeter%
    res% = dll_call6("AddCheckToListOfObjects",LO%,adr(txt$),adr(police$),siz%,clr%,att%)
  next i%
  position 522,0
  position 542,1
  return
 
ajouterEdit:
  gosub appliquerInsertion
  repeter% = position(542)
  txt$ = text$(17)
  police$ = "Arial"
  for i%=1 to repeter%
    res% = dll_call6("AddEditToListOfObjects",LO%,adr(txt$),adr(police$),siz%,clr%,att%)
  next i%
  position 522,0
  position 542,1
  return
 
 
 
choisirCouleur:
  res% = dll_call6("ColorSelector",handle_application,0,adr(R%),adr(G%),adr(B%),adr(clr%))
  if res%=0
    color 507,R%,G%,B%
  end_if
  return
 
appliquer:
  lig% = position(502)
  police$ = item_index$(504)
  siz% = val(item_index$(515))
  att% = 0
  if checked(509)=1 then att% = att% + 1
  if checked(510)=1 then att% = att% + 2
  if checked(511)=1 then att% = att% + 4
  if checked(512)=1 then att% = att% + 8
 
  res% = dll_call6("ChangeListOfObjectsAttributes",LO%,lig%,adr(police$),siz%,clr%,att%)
  return
 
memoriser: 
  lig% = position(502)
  police$ = item_index$(504)
  siz% = val(item_index$(515))
  att% = 0
  if checked(509)=1 then att% = att% + 1
  if checked(510)=1 then att% = att% + 2
  if checked(511)=1 then att% = att% + 4
  if checked(512)=1 then att% = att% + 8
  message "Les paramètres sont mémorisés pour les prochains ajouts de lignes."
  return
 
appliquerInsertion:
  i% = position(522)
  res% = dll_call2("SetListOfObjectsInsertPoint",LO%,i%)
  return
 
chercherFichier:
  res% = 0
  fic$ = file_name$(534)
  if fic$=""
    res% = 1
  else
    if right$(fic$,4)<>".slo"
      res% = 1
    end_if
  end_if
  if res%=1 then fic$ = ""
  text 532,fic$
  return
 
importerFichier:
  fic$ = trim$(text$(532))
  if fic$=""
    message "Il faut choisir un fichier valide"
    return
  end_if
  res% = dll_call2("LoadListOfObjectsDataFromFile",LO%,adr(fic$))
  return
 
exporterFichier:
  fic$ = trim$(text$(532))
  if fic$=""
    message "Il faut choisir un fichier valide"
    return
  end_if
  res% = dll_call2("SaveListOfObjectsDataToFile",LO%,adr(fic$))
  if res%=0
    message "Les données sont exportées correctement."
  else
    message "Erreur en exportation des données."
  end_if
  return
 
status:
  res% = dll_call3("GetListOfObjectStatus",LO%,0,0)        : ' <===== afficher résultat à l'écran
  ' res% = dll_call2("GetListOfObjectStatus",LO%,0,handle(memo%))        : ' <===== afficher résultat dans un memo
  return

status1:
  res% = dll_call3("GetListOfObjectStatus",LO%,1,0)        : ' <===== afficher résultat à l'écran
  ' res% = dll_call2("GetListOfObjectStatus",LO%,1,handle(memo%))        : ' <===== afficher résultat dans un memo
  return
 
desactiverUserevent:
  ' paramètre 2: 0 pour désactivation    handle(memo%) dans paramètre 3 pour désaction sélective
  ' paramètre 3: 0=action globale    n<>0=action sélective
  '              dans le mémo, 1 ligne par élément de l'objet avec "*" pour action sélectivement
  res% = dll_call3("SetListOfObjectsEvent",LO%,0,0)     
  return
 
activerUserevent:
  ' paramètre 2: 1 pour activation      handle(memo%) dans paramètre 3 pour action sélective
  ' paramètre 3: 0=action globale    n<>0=action sélective
  '              dans le mémo, 1 ligne par élément de l'objet avec "*" pour action sélectivement
  res% = dll_call3("SetListOfObjectsEvent",LO%,1,0)   
  return

bloquerModification:
  ' paramètre 2: 2 pour activation sans modification    handle(memo%) dans paramètre 3 pour action sélective
  ' paramètre 3: 0=action globale    n<>0=action sélective
  '              dans le mémo, 1 ligne par élément de l'objet avec "*" pour action sélectivement
  res% = dll_call3("SetListOfObjectsEvent",LO%,2,0)   
  return 
 
desactiverUsereventLig4:
  ' paramètre 2: 10 pour désactivation d'une seule ligne
  ' paramètre 3: le numéro de ligne
  lig% = position(559)
  res% = dll_call3("SetListOfObjectsEvent",LO%,10,lig%)
  return
 
activerUsereventLig4:
  ' paramètre 2: 11 pour action d'une seule ligne
  ' paramètre 3: le numéro de ligne
  lig% = position(559)
  res% = dll_call3("SetListOfObjectsEvent",LO%,11,lig%)   
  return

bloquerModificationLig4:
  ' paramètre 2: 0 pour action sans modification d'une seule ligne
  ' paramètre 3: le numéro de ligne
  lig% = position(559)
  res% = dll_call3("SetListOfObjectsEvent",LO%,12,lig%)   
  return

Et voici une capture:
Objet LIST avec attributs graphiques et éléments éditables ? Aa1117

Voici le fichier d'exportation de la situation ci-dessus. Il suffit de copier ces lignes dans un fichier avec l'extension *.slo, puis de lancer le programme, cliquer sur "Créer", puis utiliser le bouton "..." dans la section "Import, Export" à droite pour sélectionner ce fichier, puis cliquer sur "Importer".
Citation :
#ALPHA,"Arial",12,255,0,0,0,1,0,0
Ma première ligne
#ALPHA,"Arial Black",16,0,0,255,1,0,0,0
Ma deuxième ligne
#BUTTON,"Arial",16,0,255,255,0,0,1,0
Mon premier bouton
#CHECK,"Arial",16,255,255,0,0,0,0,1
Mon premier objet Check
#EDIT,"Arial",10,0,0,0,0,0,0,0
Ajout automatique
#EDIT,"Arial",10,0,0,0,0,0,0,0
Ajout automatique
#EDIT,"Arial",10,0,0,0,0,0,0,0
Ajout automatique
#EDIT,"Arial",10,0,0,0,0,0,0,0
Ajout automatique
#EDIT,"Arial",10,0,0,0,0,0,0,0
Ajout automatique


Dernière édition par Klaus le Mar 3 Mai 2022 - 3:11, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Objet LIST avec attributs graphiques et éléments éditables ? Empty
MessageSujet: Re: Objet LIST avec attributs graphiques et éléments éditables ?   Objet LIST avec attributs graphiques et éléments éditables ? EmptyLun 2 Mai 2022 - 14:15

Bonjour Klaus !

Comme ça à première vue je trouve que c'est un peu brouillon....
Mais te connaissant j'imagine que tu as une autre idée en tête ! Wink

Alors j'attends pour voir la suite...

PS : J'ai une question du coup :
lorsque tu utilises le CHECK, est ce qu'il y a une possibilité de déterminer s'il est coché ou non ?
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Objet LIST avec attributs graphiques et éléments éditables ? Empty
MessageSujet: Re: Objet LIST avec attributs graphiques et éléments éditables ?   Objet LIST avec attributs graphiques et éléments éditables ? EmptyLun 2 Mai 2022 - 17:09

Citation :
lorsque tu utilises le CHECK, est ce qu'il y a une possibilité de déterminer s'il est coché ou non ?

Oui, avec la fonction
Code:
res% = dll_call3("GetListOfObjectInformation",LO%,indice%,dest%)
si la ligne avec l'indice indiqué est un CHECK, la valeur de res%=1 si la case est cochée et 0 si elle est décochée.
Comme d'habitude, res%=-1 en cas d'erreur (LO% non créée ou pas le bon objet, indice%<1 ou indice%>nombre total d elignes etc).

Idem d'ailleurs pour les lignes de type EDIT. Dans ce cas, il faut passer adr(s$) dans le paramètre dest% avec s$ étant une chaîne suffisamment longue pour recevoir le texte attendu, puis faire TRIM$ après. Mais ça, c'est habituel.

Regarde le traitement du USER_EVENT dans la démo - c'est pris en charge quelque soit le type de ligne.

Pour ma part, je l'ai créé pour mes besoins personnels. Je voulais un LIST cliquable mais avec des lignes de couleur ou d'attributs variables. Je voulais aussi avoir un LIST dans lequel je pouvais facilement saisir les données d'une ligne. C'est le cas des éléments de type EDIT. Et si je veux que seulement certaines lignes soient modifiables, il suffit de déclarer les non-modifiables comme ALPHA et les modifiables comme EDIT, n'importe où lane la liste.

Ce type de fonctionnement était exactement la raison pour laquelle j'ai créé cela. Mais tant que j'iy étais, j'ai ajouté la gestion des polices et leur taille. Note que si tu changes la taille d'une police dans une ligne, évidemment la hauteur de la ligne change. Mais autimatiquement, les lignes suivantes se décalent, vers le haut ou le bas, de sorte que l'affichage reste cohérent. Et puisque j'avais déjà deux types de ligne (ALPHA et EDIT), j'ai ajouté CHECK et BUTTON dans la foulée...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2392
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Objet LIST avec attributs graphiques et éléments éditables ? Empty
MessageSujet: Re: Objet LIST avec attributs graphiques et éléments éditables ?   Objet LIST avec attributs graphiques et éléments éditables ? EmptyLun 2 Mai 2022 - 22:43

Original et efficace !
J’ai fait quelques tests. Ce nouvel objet LIST++ est sympa et pratique.

Merci Klaus !
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Objet LIST avec attributs graphiques et éléments éditables ? Empty
MessageSujet: Re: Objet LIST avec attributs graphiques et éléments éditables ?   Objet LIST avec attributs graphiques et éléments éditables ? EmptyMar 3 Mai 2022 - 0:36

Hummm je commence à comprendre....

Vu sous cet angle effectivement cela devient beaucoup plus intéressant...
J'avais encore loupé une marche ! Laughing

Imaginons une liste de sous-programmes d'un projet...
On affiche que ceux qui nous intéresse dans le synedit en les cochant et les autres sont invisibles.
Cela permet de garder un source avec seulement quelques dizaines ou centaines de lignes.
super pratique !!!! Je vais réfléchir à tout cela et voir si ça peut être utile...

Merci pour ces précisions Klaus flower
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Objet LIST avec attributs graphiques et éléments éditables ? Empty
MessageSujet: Re: Objet LIST avec attributs graphiques et éléments éditables ?   Objet LIST avec attributs graphiques et éléments éditables ? EmptyMar 3 Mai 2022 - 3:22

Merci pour vos appréciations !

J'ai ajouté 2 nouvelles fonctions pour cet objet et j'ai actualisé le code du programme de démo, la mini-documentation des fonctions ainsi que la capture d'écran, dans mon premier post.

Attention: recharger KGF.dll !

Voici les nouveautés:

- la fonction GetListOfObjectStatus permet d'avoir, soit globalement le nombre de lignes pour chaque type et le nombre de lignes au total, soit une liste avec 1 ligne par élément donnant le type de l'élément. Ces résultats peuvent, soit être affichés à l'écran, soit placés dans un mémo

- la fonction SetListOfObjectsEvent permet de modifier l'action de l'objet lors d'un clic dans une ligne.
Par défaut, l'objet envoie un USER_EVENT et, pour les lignes de type CHECK et EDIT, permet de modifier les données.

On peut totalement bloquer ces actions, on peut tout réactiver, ou bloquer uniquement la modification des données mais autoriser la génération du USER_EVENT, créant ainsi de facto des CHECK ou EDIT protégés en écriture.

Toutes ces actions peuvent s'appliquer que la totalité des lignes de l'objet, ou sur une sélection de lignes indiquées dans un MEMO, ou sur une ligne unique indiquée directement par son numéro de ligne.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Objet LIST avec attributs graphiques et éléments éditables ? Empty
MessageSujet: Re: Objet LIST avec attributs graphiques et éléments éditables ?   Objet LIST avec attributs graphiques et éléments éditables ? Empty

Revenir en haut Aller en bas
 
Objet LIST avec attributs graphiques et éléments éditables ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Créer une liste d'articles avec l'objet LIST
» Rechercher tous les éléments d'un objet liste.
» un truc avec LIST
» Une liste avec des attributs de texte libres
» objet list

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: