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
» Aide-mémoire des mots-clés Panoramic
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar JL35 Hier à 22:31

» Aide-mémoire des mots-clés Panoramic
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar Robert Darville Hier à 15:47

» demande explication KGF pour imprimer en mm
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar JL35 Dim 17 Mar 2024 - 14:24

» Je ne comprend pas pourquoi la largeur de la scene 3d change
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar Marc Mar 12 Mar 2024 - 20:06

» Comment télécharger panoramic?
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar lepetitmarocain Sam 9 Mar 2024 - 13:31

» @lepetitmarocain <==> KGFGrid
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar Klaus Dim 3 Mar 2024 - 9:59

» Tangram-Toukaré
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar jjn4 Mer 28 Fév 2024 - 18:12

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar jjn4 Mer 28 Fév 2024 - 18:09

» KGF_dll - nouvelles versions
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar Klaus Mer 28 Fév 2024 - 17:01

» Mes souhaits d'amélioration de Panoramic.
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar Pedro Lun 26 Fév 2024 - 18:12

» Petit passage furtif
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar Yannick Lun 26 Fév 2024 - 13:47

» Testez-votre-QI
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar jjn4 Dim 25 Fév 2024 - 17:12

» Utilisation d'Élip
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar jjn4 Sam 24 Fév 2024 - 18:33

» Récapitulatif ludothèque panoramic jjn4
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar jjn4 Sam 24 Fév 2024 - 18:11

» Générateur de mots de passe
Exemple d'une nouvelle version d'un GRID - Page 2 Emptypar mindstorm Mar 20 Fév 2024 - 20:09

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mars 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier
Le deal à ne pas rater :
Manga Fire Force : où commander le Tome 34 Fire Force édition ...
11.50 €
Voir le deal

 

 Exemple d'une nouvelle version d'un GRID

Aller en bas 
+2
Jean Claude
Klaus
6 participants
Aller à la page : Précédent  1, 2, 3  Suivant
AuteurMessage
Klaus

Klaus


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMer 18 Avr 2018 - 10:08

Nouvelle version: on a maintenant une fonction permettant de retourner dans un mémo (qui peut être caché) l'ensemble des attributs d'une cellule, indiquée par ses coordonnées. Pour des raisons évidentes de cohérence de la configuration, il n'y aura pas la fonction symmétrique  en écriture, mais on peut avpir ainsi facilement une vue générale du paramétrage d'une cellule.

La nouvrlle version est dans mon WebDav dossier DLLs et sur les deux sites iinternet.

Le programme de facture intègre cette fonction lors d'un clic sur une cellule active quelconque. Bien sûr, on peut appeler cette fonction pour toutes les cellules, y compris les cellules inactives et/ou invisibles.
Code:
' test_KGFGrid_facture.bas

label UserEvent
dim res%, KG%, KGtot%, f1$, Types$(6), v$, f, img$
  Types$(0) = "Inconnu (traité comme Integer)"
  Types$(1) = "Chaîne"
  Types$(2) = "Entier"
  Types$(3) = "Flottant"
  Types$(4) = "Booléen"
  Types$(5) = "Image"
  Types$(6) = "Mémo"
  
full_space 0
memo 100 : top 100,100 : left 100,700 : width 100,300 : height 100,420 : bar_both 100  
  
dll_on "KGF.dll"

KG% = dll_call2("CreateKGFGrid",handle(0),13)                    
' res% = dll_call5("LocateKGFGrid",KG%,10,100,652,377)  : ' si l'on rend la ligne 15 visible            
res% = dll_call5("LocateKGFGrid",KG%,10,100,652,352)  : ' si la ligne 15 est invisible            
KGtot% = dll_call2("CreateKGFGrid",handle(0),13)                    
res% = dll_call5("LocateKGFGrid",KGtot%,10,490,652,27)              
' colonnes:
'  Libellé, quantité, Prix unitaire HT, total HT, taux TVA, total TTC
res% = dll_call5("SetGlobalKGFGridDimensions",KG%,15,7,50,25)    
res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,7,7,0)    : ' servira pour les liens vers une autre table
res% = dll_call4("SetKGFGridRowRangeVisible",KG%,15,15,0)      
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,1,6,hex("FFFFFF"))
res% = dll_call5("SetGlobalKGFGridDimensions",KGtot%,1,7,50,25)    
res% = dll_call4("SetKGFGridColumnRangeVisible",KGtot%,7,7,0)    : ' servira pour les liens vers une autre table
res% = dll_call6("SetKGFGridCellRangeColor",KGtot%,1,11,1,6,hex("C0C0FF"))
v$ = "Arial"
res% = dll_call6("SetKGFGridCellRangeFontName",KG%,1,15,1,6,adr(v$))
res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,1,15,1,6,12)    
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,15,1,6,2)
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,15,2,6,7)
res% = dll_call6("SetKGFGridCellRangeFontName",KGtot%,1,1,1,6,adr(v$))
res% = dll_call6("SetKGFGridCellRangeFontSize",KGtot%,1,1,1,6,12)    
res% = dll_call6("SetKGFGridCellRangeJustification",KGtot%,1,1,1,6,2)
res% = dll_call6("SetKGFGridCellRangeJustification",KGtot%,1,1,2,6,7)

res% = dll_call6("SetKGFGridCellRangeType",KG%,1,1,1,6,1)      : ' ligne des titres de colonnes
res% = dll_call6("SetKGFGridCellRangeBorderStyle",KG%,1,1,1,6,1)
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,1,1,1,6,1)
res% = dll_call6("SetKGFGridCellRangeActive",KG%,1,1,1,6,0)
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,200)     : ' libellé
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,1,1,200)    
v$ = "Libellé"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,1,1,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,80)      : ' quantité
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,2,2,80)    
v$ = "Qté"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,2,2,adr(v$))
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,100)     : ' prix unitaire
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,3,3,100)    
v$ = "Prix U."
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,3,3,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,100)     : ' total HT
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,4,4,100)    
v$ = "Total HT"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,4,4,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,70)      : ' taux TVA
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,5,5,70)    
v$ = "Tx TVA"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,5,5,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,100)      : ' total TTC
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,6,6,100)    
v$ = "Total TTC"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,6,6,adr(v$))  

res% = dll_call6("SetKGFGridCellRangeType",KG%,2,15,1,1,1)      : ' colonne des libéllées
res% = dll_call6("SetKGFGridCellRangeType",KG%,2,15,2,7,3)      : ' colonnes de valeurs
res% = dll_call6("SetKGFGridCellRangeBorderColor",KG%,2,15,2,2,hex("FF0000"))  : ' colonne des quantités: bordures bleues
res% = dll_call6("SetKGFGridCellRangeBorderWidth",KG%,2,15,2,2,hex("FF03FF03"))  : ' largeurs des bordures colonne des quantités
res% = dll_call6("SetKGFGridCellRangeZeroAsSpace",KG%,2,15,2,7,1)    : ' ne pas afficher les valeurs zéro
res% = dll_call6("SetKGFGridCellRangeType",KGtot%,1,1,1,1,1)      : ' colonne des libéllées
res% = dll_call6("SetKGFGridCellRangeType",KGtot%,1,1,2,7,3)      : ' colonnes de valeurs

res% = dll_call6("SetKGFGridCellRangeActive",KG%,15,15,1,6,0)   : ' ligne des totaux
res% = dll_call6("SetKGFGridCellRangeActive",KGtot%,1,11,1,6,0)   : ' ligne des totaux
v$ = "Total"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,15,15,1,1,adr(v$))
res% = dll_call6("SetKGFGridCellRangeActive",KGtot%,1,11,1,6,0)   : ' ligne des totaux
res% = dll_call6("SetKGFGridCellRangeValue",KGtot%,1,1,1,1,adr(v$))

f1$ = "$RyC2^$RyC3^*;"                                          : ' calcul du HT par ligne
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,2,14,4,4,adr(f1$))
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,4,4,hex("C0C0FF"))

f1$ = "$RyC4^$RyC5^V100^+*V100^/;"                              : ' calcul du TTC par ligne
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,2,14,6,6,adr(f1$))
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,6,6,hex("C0C0FF"))

f1$ = "cR2C2|cR14C2|RScR1C2^V"+str$(KGtot%)+"^@;"                                        : ' calcul du nombre d'unités
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,2,2,adr(f1$))

f1$ = "cR2C4|cR14C4|RScR1C4^V"+str$(KGtot%)+"^@;"                                        : ' calcul du total HT
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,4,4,adr(f1$))

f1$ = "cR2C6|cR14C6|RScR1C6^V"+str$(KGtot%)+"^@;"                                        : ' calcul du total TTC
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,6,6,adr(f1$))

v$ = "Robinets de lavabo"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,1,1,adr(v$)) : ' chargement 1er produit
f = 3
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,2,adr(f))
f = 17.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,3,3,adr(f))
f = 20
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,5,5,adr(f))
  
v$ = "Parquet chêne"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,adr(v$)) : ' chargement 2ème produit
f = 2.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,2,adr(f))  
f = 50
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,3,3,adr(f))  
f = 20
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,5,5,adr(f))

v$ = "Raccords cuivre"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,1,1,adr(v$)) : ' chargement 3ème produit
f = 12
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,2,adr(f))  
f = 2.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,3,3,adr(f))  
f = 10
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,5,5,adr(f))


on_user_event UserEvent

end

UserEvent:
  UserEvent()
  return
  
sub UserEvent()
  dim_local lig%, col%, id%, type%, res$, f
  if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub
  if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub
  id% = bin_and(user_event_wparam,hex("0000FFFF"))
  col% = user_event_lparam/65536
  lig% = bin_and(user_event_lparam,hex("0000FFFF"))
'  delete 1
'  picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1
'  clear 2
  type% = dll_call3("GetKGFGridCellType",KG%,lig%,col%)               : ' ok
  select type%
    case 0: ' Inconnu
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)         : ' ok
      res$ = str$(res%)
    case 1: ' Chaîne
      res$ = string$(255," ")
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(res$)) : ' ok
      res$ = trim$(res$)
    case 2: ' Entier
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)         : ' ok
      res$ = str$(res%)
    case 3: ' flottant
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(f))    : ' ok
      res$ = str$(f)
    case 4: ' Booleen
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)         : ' ok
      res$ = str$(res%)
    case 5: ' Image
'      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)         : ' ok
'      clipboard_paste 1
    case 6: ' Mémo
'      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok
  end_select
  message "clic dans KGFGrid   ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+"  valeur="+res$
  if type%=4
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig%,lig%,col%,col%,1-res%)        : ' ok
  end_if
  res% = dll_call4("GetKGFGridCellAtributes",KG%,lig%,col%,handle(100))
end_sub


Et le résultat, en cliquant dans la ligne 3, colonne 2 (la quatité des raccords de cuivre):
Exemple d'une nouvelle version d'un GRID - Page 2 Aa180
Dans les attributs visibles dans le mémo, on distingue, par exemple, la couleur bleue de la bordure ainsi que les épaisseurs. On voit aussi les cellules dépendantes dont les veleurs seront recalculées automatiquement si cette quantité est modifiée: la cellule R4C4 représente le total HT de cette ligne, et la cellule R15C2, située dans une ligne invisible, représente le cumul du nombre d'unités facturées.
En cliquant dans la ligne 4 colonne 4 (total HT de cette ligne), on obtient les attributs suivants:
Exemple d'une nouvelle version d'un GRID - Page 2 Aa218
On voit la formule de calcul dans sa version "brute" telle que programmée ainsi que sa version "compilée" telle qu'elle sera exécutée. Dans les dépendances, on constate que la cellule R4C6 (total TTC de la ligne) doit être recalculée, ainsi que R15C4 (total HT de la facture dans la ligne 15 qui est invisible).
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMer 18 Avr 2018 - 12:51

Voici une brève liste de l'état actuel des fonctions de cet objet:
Code:
KG% = dll_call2("CreateKGFGrid",handle(dest%),ID%)
KG% = dll_call1("CreateKGFGrid",KG%)
res% = dll_call5("LocateKGFGrid",KG%,nlig%,x%,y%,w%,h%)
res% = dll_call5("SetGlobalKGFGridDimensions",KG%,nlig%,ncol%,cellW%,cellH%)
res% = dll_call2("SetGlobalKGFGridColors",KG%,RGB%)
res% = dll_call4("SetKGFGridRowRangeHeight",KG%,lig1%,lig2%,par%)
res% = dll_call4("SetKGFGridRowRangeVisible",KG%,lig1%,lig2%,act%)
    act%:  0=ligne invisible  1=ligne visible
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,lig1%,lig2%,par%)
res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,col1%,col2%,act%)
    act%:  0=colonne invisible  1=colonne visible
res% = dll_call6("SetKGFGridCellRangeType",KG%,lig1%,lig2%,col1%,col2%,type%)
    type%:  0=aucun  1=chaîne  2=entier  3=flottant  4=booléen  5=image  6=mémo
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,lig1%,lig2%,col1%,col2%,par%)
    par%: type de justification:
      aucune (en haut à gauche),
      en haut à gauche, centré verticalement à gauche, en bas à gauche,
      en haut centré horizontalement, centré partout, en bas centré horizontalement,
      en haut à droite, centré verticalement à drote, en bas à droite
res% = dll_call6("SetKGFGridCellRangeFormat",KG%,lig1%,lig2%,col1%,col2%,adr(format$))
res% = dll_call6("SetKGFGridCellRangeColor",KG%,lig1%,lig2%,col1%,col2%,RGB%)
res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig1%,lig2%,col1%,col2%,par%)
    par% en fonction du type de cellule: valeur%, adr(flottant), adr(fichier$), handle(memo%), ...
res% = dll_call6("SetKGFGridCellRangeFontName",KG%,lig1%,lig2%,col1%,col2%,adr(police$))
res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,lig1%,lig2%,col1%,col2%,size%)
res% = dll_call6("SetKGFGridCellRangeFontColor",KG%,lig1%,lig2%,col1%,col2%,RGB%)
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,lig1%,lig2%,col1%,col2%,par%)
    par%: 0=normal  1=gras
res% = dll_call6("SetKGFGridCellRangeFontItalic",KG%,lig1%,lig2%,col1%,col2%,par%)
    par%: 0=normal  1=italique
res% = dll_call6("SetKGFGridCellRangeFontUnderline",KG%,lig1%,lig2%,col1%,col2%,par%)
    par%: 0=normal  1=souligné
res% = dll_call6("SetKGFGridCellRangeFontStrikeout",KG%,lig1%,lig2%,col1%,col2%,par%)
    par%: 0=normal  1=barré
res% = dll_call4("SetKGFGridCellType",KG%,lig%,col%,type%)
    type%: type de cellule  0=inconnu  1=string  2=integer  3=flottant  4=booléen  5=image  6=mémo
res% = dll_call4("SetKGFGridCellValue",KG%,lig%,col%,par%)
    par% en fonction du type de cellule: valeur%, adr(flottant), adr(fichier$), handle(memo%), ...
res% = dll_call4("SetKGFGridCellName",KG%,lig%,col%,adr(nom$))
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,lig1%,lig2%,col1%,col2%,adr(formule$))
res% = dll_call6("SetKGFGridCellRangeActive",KG%,lig1%,lig2%,col1%,col2%,act%)
    act%: 0=cellule inactive  1=cellule active
res% = dll_call6("SetKGFGridCellRangeZeroAsSpace",KG%,lig1%,lig2%,col1%,col2%,act%)
    act%: 0="valeurs zéro afichées"  1="valeurs zéro non affichées'
res% = dll_call6("SetKGFGridCellRangeBorderStyle",KG%,lig1%,lig2%,col1%,col2%,style%)
    style%: 0=plat  1=3D
res% = dll_call6("SetKGFGridCellRangeBorderColor",KG%,lig1%,lig2%,col1%,col2%,RGB%)
    RGB%: couleur des bordures si style=0
    RGB% = hex("BBGGRR")
res% = dll_call6("SetKGFGridCellRangeBorderWidth",KG%,lig1%,lig2%,col1%,col2%,LTRB%)
    largeurs des bordures si style=0
    LTRB% = hex("BBRRTTLL")  si un des éléments est FF, la valeur est inchangée
 res% = dll_call4("GetKGFGridCellAtributes",KG%,lig%,col%,hmemo%)

Et voici les méta-codes utilisables dans les formules:
Code:
    V   ce qui suit est une valeur numérique jusqu'au signe ^, placer la valeur dans l'accumulateur jusqu'au signe ^
     C   ce qui suit est le nom d'une cellule jusqu'au signe ^, placer le contenu sur la pile
     c   ce qui suit est le nom d'une cellule jusqu'au signe ^, placer lig puis col sur la pile
     $   comme C mais le nom a la structure RyCx avec y=numéro de ligne, x=numéro de colonne
         x et/ou y peuvent être des constantes
         ou réellement ces lettres, auquel cas elles seront remplacées par les vraies valeurs lors de la définition
     |   délimiteur de nom de variable dans une fourchette
     ^   pousser l'accumulateur sur la pile
     v   dépiler les deux derniers éléments de la pile, les utiliser comme lig,col d'une cellule et empiler le contenu de la cellule
         ATTENTION:
         si ces deux derniers éléments ne sont pas issus d'un méta-code "c" suivi d'un nom de cellule, alors la cellule source
         ainsi visée sera bien utilisée, mais la cellule actuelle ne figurera pas dans ses dépendances :
     +-*/  opération duale: r1:=@sp sp-- r2:=@sp  @sp:=r2 oper r1
     R   range (fourchette): les 4 éléments sur la pile sont les identifiants lig0,col0,lig1,col1 d'un rectangle ce cellules
             dépiler et placer dans l'identifiant de fourchette
             ajouter la cellule actuelle dans les dépendances de toutes les cellules de la fourchette lors de l'exécution de R
     S   somme:  des cellules de la fourchette identifiée, à empiler dans la pile
     Z   zéro: remettre les cellules de la fourchette identifiée à zéro
     ;   fin de formule    sp doit être 0 (pile vide) ou 1 (l'unique élémént de la pile sera copié dans la cellule actuelle)
     @   déposer une valeur dans un autre KGFGrid. La pile contient: @SP=ID du KGFGrid visé
                                                                     @SP-1=col de cellule (issue de c...^)
                                                                     @SP-2=lig de cellule (issue de c...^)
                                                                     @SP-3=valeur à déposer

  Exemple:
    avec: Prix=(2,9))  Total=(3,9)   Resultat=(4,9)  Premier=(2,2)  Dernier=(4,4)  Suite=(5,9)
    V10^CPrix^*;
    VV2^V2^V2^V4^RS;
    cPremier|cDernier|RS;
  Compilé:
    V10^V9^V2^v*;
    V2^V2^V2^V4^RS
    V2^V2^V4^V4^RS;
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMer 18 Avr 2018 - 21:40

Nouvelle version: j'avais oublié une fonction de suppression d'un tel objet. Voilà qui est corrigé. La nouvelle version est dans mon WebDav dossier DLLs et sur les deux sites internet.

Voici l'ancien programme de démo qui montre la création détaillée d'un KGFGrid, puis sa sauvegarde dans un fichier. Ensuite, il va supprimer l'objet complètement, avant de le restaurer à partir de la sauvegarde:
Code:
' test_KGFGrid.bas

label UserEvent
dim res%, KG%, f1$, Types$(6), v$, f, img$
  Types$(0) = "Inconnu (traité comme Integer)"
  Types$(1) = "Chaîne"
  Types$(2) = "Entier"
  Types$(3) = "Flottant"
  Types$(4) = "Booléen"
  Types$(5) = "Image"
  Types$(6) = "Mémo"
 
picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 
memo 2 : top 2,10 : left 2,10 : width 2,400 : bar_both 2
dll_on "KGF.dll"

KG% = dll_call2("CreateKGFGrid",handle(0),13)                      : ' ok
res% = dll_call2("SetGlobalKGFGridColors",KG%,hex("FFFF"))        : ' ok
res% = dll_call5("LocateKGFGrid",KG%,10,100,400,300)              : ' ok
res% = dll_call5("SetGlobalKGFGridDimensions",KG%,15,20,50,25)    : ' ok
res% = dll_call4("SetKGFGridRowRangeHeight",KG%,2,4,45)            : ' ok
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,10,20)        : ' ok
res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,2,5,2)          : ' ok
res% = dll_call6("SetKGFGridCellRangeType",KG%,5,7,2,5,1)          : ' ok
res% = dll_call6("SetKGFGridCellRangeType",KG%,8,9,2,5,3)          : ' ok
res% = dll_call6("SetKGFGridCellRangeType",KG%,9,9,6,6,3)          : ' ok
res% = dll_call6("SetKGFGridCellRangeType",KG%,5,8,6,6,4)          : ' ok
res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,6,6,5)          : ' ok
res% = dll_call6("SetKGFGridCellRangeType",KG%,3,3,1,1,6)          : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,4,2,5,5) : ' ok
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,4,2,5,hex("FF8080")) : ' ok
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,2,2,4,hex("8080FF")) : ' ok
res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,2,2,hex("8080FF")) : ' ok
res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,4,4,hex("8080FF")) : ' ok
res% = dll_call6("SetKGFGridCellRangeColor",KG%,4,4,2,4,hex("8080FF")) : ' ok

res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,2,2,1) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,2,2,2) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,2,2,3) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,3,3,4) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,3,3,6) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,4,4,7) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,4,4,8) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,4,4,9) : ' ok
f1$ = "%d €"                                                               
res% = dll_call6("SetKGFGridCellRangeFormat",KG%,2,4,2,5,adr(f1$)) : ' ok

res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,4,17)        : ' ok
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,4,0-23)      : ' ok
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,4,123)      : ' ok
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,4,5,5,0-12)      : ' ok
v$ = "Salut"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,5,5,2,4,adr(v$))  : ' ok
v$ = "les"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,6,6,2,4,adr(v$))  : ' ok
v$ = "copains"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,7,7,2,4,adr(v$))  : ' ok
f = pi
res% = dll_call6("SetKGFGridCellRangeValue",KG%,8,8,2,4,adr(f))    : ' ok

img$ = "Android.bmp"
 res% = dll_call1("LoadAnyImageFile",adr(img$))
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,6,6,0)        : ' ok
img$ = "marche_1_1_1_2.jpg"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,6,6,adr(img$)) : ' ok
img$ = "crane.bmp"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,6,6,adr(img$)) : ' ok

font_names_load 2
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,handle(2)) : ' ok
clear 2

res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,5,5,2,4,1)      : ' ok
res% = dll_call6("SetKGFGridCellRangeFontItalic",KG%,5,5,2,4,1)    : ' ok

v$ = "Arial Black"
res% = dll_call6("SetKGFGridCellRangeFontName",KG%,6,6,2,4,adr(v$)) : ' ok
res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,6,6,2,4,12)    : ' ok

res% = dll_call6("SetKGFGridCellRangeFontColor",KG%,7,7,2,4,hex("FF0000"))  : ' ok


v$ = "Prix"
res% = dll_call4("SetKGFGridCellName",KG%,9,2,adr(v$))            : ' ok
v$ = "Total"
res% = dll_call4("SetKGFGridCellName",KG%,9,3,adr(v$))            : ' ok
v$ = "Resultat"
res% = dll_call4("SetKGFGridCellName",KG%,9,4,adr(v$))            : ' ok
v$ = "Premier"
res% = dll_call4("SetKGFGridCellName",KG%,2,2,adr(v$))            : ' ok
v$ = "Dernier"
res% = dll_call4("SetKGFGridCellName",KG%,4,4,adr(v$))            : ' ok
v$ = "Suite"
res% = dll_call4("SetKGFGridCellName",KG%,9,5,adr(v$))            : ' ok

f1$ = "V10^CPrix^*;"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,3,3,adr(f1$))  : ' ok
f1$ = "V2^V2^V2^V4^RS;"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,4,4,adr(f1$))  : ' ok
f1$ = "cPremier|cDernier|RS;"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,5,5,adr(f1$))  : ' ok
f1$ = "CTotal^V2^*;"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,6,6,adr(f1$))  : ' ok

f = 23.45
res% = dll_call6("SetKGFGridCellRangeValue",KG%,9,9,2,2,adr(f))    : ' ok

message "Les lignes 2 et 3 vont disparaître..."
res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,0)            : ' ok
message "Les lignes 2 et 3 on disparu, et vont réapparaître..."
res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,1)            : ' ok

message "Les colonnes 4 et 5 vont disparaître..."
res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,0)        : ' ok
message "Les lignes 4 et 5 on disparu, et vont réapparaître..."
res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,1)        : ' ok

f1$ = "KGFGrid_backup.txt"
res% = dll_call2("SaveKGFGridToFile",KG%,adr(f1$))                : ' ok
if res%<0
  message "Erreur en sauvegarde du KGFGrid"
else
  message "Le KGFGrid est sauvegardé dans "+f1$
end_if

on_user_event UserEvent

message "On va supprimer le KGFGrid..."
KG% = dll_call1("DeleteKGFGrid",KG%)
message "Supprimé"
KG% = dll_call2("CreateKGFGrid",handle(0),13)                      : ' ok
f1$ = "KGFGrid_backup.txt"
res% = dll_call2("LoadKGFGridFromFile",KG%,adr(f1$))
message "Recréé à partir de la sauvegarde"

end

UserEvent:
  UserEvent()
  return
 
sub UserEvent()
  dim_local lig%, col%, id%, type%, res$, f
  if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub
  if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub
  id% = bin_and(user_event_wparam,hex("0000FFFF"))
  col% = user_event_lparam/65536
  lig% = bin_and(user_event_lparam,hex("0000FFFF"))
  delete 1
  picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1
  clear 2
  type% = dll_call3("GetKGFGridCellType",KG%,lig%,col%)              : ' ok
  select type%
    case 0: ' Inconnu
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)        : ' ok
      res$ = str$(res%)
    case 1: ' Chaîne
      res$ = string$(255," ")
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(res$)) : ' ok
      res$ = trim$(res$)
    case 2: ' Entier
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)        : ' ok
      res$ = str$(res%)
    case 3: ' flottant
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(f))    : ' ok
      res$ = str$(f)
    case 4: ' Booleen
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)        : ' ok
      res$ = str$(res%)
    case 5: ' Image
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)        : ' ok
      clipboard_paste 1
    case 6: ' Mémo
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok
  end_select
  message "clic dans KGFGrid  ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+"  valeur="+res$
  if type%=4
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig%,lig%,col%,col%,1-res%)        : ' ok
  end_if
end_sub
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMar 24 Avr 2018 - 11:46

Rapport d'étape:

Je travaille toujours sur l'objet KGFGrid. Les fonctions de calcul automatique marchent bien, y compris entre plusieurs objets KGFGrid. Mais il faut les coder en notation polonaise inverse ce qui peut être non intuitif pou certains (ceux qui ont eu le HP35 vont se régaler...).

Mais je travaille sur une façon plus "intuitive" de coder ces formules, et j'ai réussi à mettre au point un interpréteur de formules arithmétiques dont j'ai trouvé sur le net de très anciennes sources (datant de la période entre 1993 et 1997). Je les ai adaptées à KGF.dll et j'ai étendu les fonctionnalités de sorte à pouvoir gérer les cellules de plusieurs KGFGrid.

Tout cela marche maintenant, avec de très bonnes performances. Alors, maintenant, je suis en train d'y intégrer la gestion des dépendances entre les cellules, de sorte à avoir les actualisations automatiques telles qu'on les a aijourd'hui.

Les deux types de formules (notation anti-polonaise et expression arithmétique) existeront simultanément. Cepdendant, pour chaque objet KGFGrid particulier, le choix du format de la formule est fait globalement et ne devra pas être modifié en cours d'existence du tableau.

Je vous donne un avant-goût de ce nouveau type de formules. Dans le programme de démo de facture ci-dessus, on a deux objets KGFGrid: le premier est le tableau de 15 lignes dont la 15ème (les totaux) est invisible, et le second est un autre tableau contenant juste une seule ligne reprenant les titaux de la 15ème ligne du premier tableau. Alors, la formule
writecell(grid(1)+CellValue(3,6),grid(2)+cellref(1,3))
installée dans une des cellules du premier tableau fait ceci:
- prendre le contenu de la cellule (3,6) du tableau 1
- copier cette valeur dans la cellule (1,3) du tableau 2

On disposera dans cette version des formules des opérations suivantes:
   + - * / ^DIV MOD
constantes prédéfinies:
   PI
et les fonctions intrinsèques suivantes:
   COS, SIN, SINH, COSH, TAN, COTAN, ARCTAN, ARG,
   EXP, LN, LOG10, LOG2, LOGN,
   SQRT, SQR, POWER, INTPOWER,
   MIN, MAX, ABS, TRUNC, INT, CEIL, FLOOR,

   HEAV (heav(x) is =1 for x>0 and =0 for x<=0),
   SIGN (sign(x) is 1 for x>1, 0 for x=0, -1 for x<0),
   ZERO (zero(x) is 0 for x=0, 1 for x<>0),
   PH (ph(x) = x - 2*pi*round(x/2/pi))
   RND (rnd(x) = int(x) * Random)
   RANDOM (random(X) = Random; the argument X is not used)
ainsi que des variables prééfinies:
   A, B, C, D, E, X, Y, T
On peut même définir ses propres variables avec des noms longs.
On a des parenthèses (imbrication jusqu'à 20 parenthèses !)
Fonctions spécifiques pour lien avec KGFGrid:
   CELLVALUE, CELLREF, CELLSUM, GRID, WRITECELL

La longueur des expressione n'est pas limitée.

Cette version est disponible sur mon WebDav, dossier DLLs, et sur les deux sites internet. Et voici une version du programme de facturation pemettant de tester ces expressions. Ce n'est pas encore présent dans les formules de calcul des deux objets KGFGrid, mais on peut évaluer une formule directement, saisie dans un EDIT en bas de la fenêtre. Une formule par defaut est proposée, et dans le source, ligne 23, ul y en a une autre. Un bouton permet d'exécuter la formule et d'observer le résultat:
Code:
' test_KGFGrid_facture.bas

label UserEvent, TestParse

dim res%, KG%, KGtot%, f1$, Types$(6), v$, f, img$, expression$
  Types$(0) = "Inconnu (traité comme Integer)"
  Types$(1) = "Chaîne"
  Types$(2) = "Entier"
  Types$(3) = "Flottant"
  Types$(4) = "Booléen"
  Types$(5) = "Image"
  Types$(6) = "Mémo"
  
full_space 0
memo 100 : top 100,100 : left 100,700 : width 100,300 : height 100,420 : bar_both 100  
  
alpha 201 : top 201,540 : left 201,10 : caption 201,"Ligne:"
spin 202 : top 202,540 : left 202,60 : width 202,80 : min 202,2 : max 202,15 : position 202,2
alpha 203 : top 203,540 : left 203,170 : caption 203,"Colonne:"
spin 204 : top 204,540 : left 204,220 : width 204,80 : min 204,2 : max 204,7 : position 204,2
alpha 205 : top 205,570 : left 205,10 : caption 205,"Formule:"
edit 206 : top 206,570 : left 206,70 : width 206,300
'  text 206,"Cellsum(CellRef(2,2),CellRef(14,2))"
  text 206,"writecell(grid(1)+CellValue(3,6),grid(2)+cellref(1,3))"
button 207 : top 207,570 : left 207,390 : caption 207,"Parse" : on_click 207,TestParse
memo 208 : hide 208 : bar_both 208
  
dll_on "KGF.dll"

KG% = dll_call2("CreateKGFGrid",handle(0),13)                    
' res% = dll_call5("LocateKGFGrid",KG%,10,100,652,377)  : ' si l'on rend la ligne 15 visible            
res% = dll_call5("LocateKGFGrid",KG%,10,100,652,352)  : ' si la ligne 15 est invisible            
KGtot% = dll_call2("CreateKGFGrid",handle(0),17)                    
res% = dll_call5("LocateKGFGrid",KGtot%,10,490,652,27)
' liens pour les formules
item_add 208,str$(KG%)
item_add 208,str$(KGtot%)
              
' colonnes:
'  Libellé, quantité, Prix unitaire HT, total HT, taux TVA, total TTC
res% = dll_call5("SetGlobalKGFGridDimensions",KG%,15,7,50,25)    
res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,7,7,0)    : ' servira pour les liens vers une autre table
res% = dll_call4("SetKGFGridRowRangeVisible",KG%,15,15,0)      
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,1,6,hex("FFFFFF"))
res% = dll_call5("SetGlobalKGFGridDimensions",KGtot%,1,7,50,25)    
res% = dll_call4("SetKGFGridColumnRangeVisible",KGtot%,7,7,0)    : ' servira pour les liens vers une autre table
res% = dll_call6("SetKGFGridCellRangeColor",KGtot%,1,11,1,6,hex("C0C0FF"))
v$ = "Arial"
res% = dll_call6("SetKGFGridCellRangeFontName",KG%,1,15,1,6,adr(v$))
res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,1,15,1,6,12)    
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,15,1,6,2)
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,15,2,6,7)
res% = dll_call6("SetKGFGridCellRangeFontName",KGtot%,1,1,1,6,adr(v$))
res% = dll_call6("SetKGFGridCellRangeFontSize",KGtot%,1,1,1,6,12)    
res% = dll_call6("SetKGFGridCellRangeJustification",KGtot%,1,1,1,6,2)
res% = dll_call6("SetKGFGridCellRangeJustification",KGtot%,1,1,2,6,7)

res% = dll_call6("SetKGFGridCellRangeType",KG%,1,1,1,6,1)      : ' ligne des titres de colonnes
res% = dll_call6("SetKGFGridCellRangeBorderStyle",KG%,1,1,1,6,1)
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,1,1,1,6,1)
res% = dll_call6("SetKGFGridCellRangeActive",KG%,1,1,1,6,0)
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,200)     : ' libellé
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,1,1,200)    
v$ = "Libellé"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,1,1,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,80)      : ' quantité
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,2,2,80)    
v$ = "Qté"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,2,2,adr(v$))
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,100)     : ' prix unitaire
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,3,3,100)    
v$ = "Prix U."
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,3,3,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,100)     : ' total HT
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,4,4,100)    
v$ = "Total HT"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,4,4,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,70)      : ' taux TVA
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,5,5,70)    
v$ = "Tx TVA"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,5,5,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,100)      : ' total TTC
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,6,6,100)    
v$ = "Total TTC"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,6,6,adr(v$))  

res% = dll_call6("SetKGFGridCellRangeType",KG%,2,15,1,1,1)      : ' colonne des libéllées
res% = dll_call6("SetKGFGridCellRangeType",KG%,2,15,2,7,3)      : ' colonnes de valeurs
res% = dll_call6("SetKGFGridCellRangeBorderColor",KG%,2,15,2,2,hex("FF0000"))  : ' colonne des quantités: bordures bleues
res% = dll_call6("SetKGFGridCellRangeBorderWidth",KG%,2,15,2,2,hex("FF03FF03"))  : ' largeurs des bordures colonne des quantités
res% = dll_call6("SetKGFGridCellRangeZeroAsSpace",KG%,2,15,2,7,1)    : ' ne pas afficher les valeurs zéro
res% = dll_call6("SetKGFGridCellRangeType",KGtot%,1,1,1,1,1)      : ' colonne des libéllées
res% = dll_call6("SetKGFGridCellRangeType",KGtot%,1,1,2,7,3)      : ' colonnes de valeurs

res% = dll_call6("SetKGFGridCellRangeActive",KG%,15,15,1,6,0)   : ' ligne des totaux
res% = dll_call6("SetKGFGridCellRangeActive",KGtot%,1,11,1,6,0)   : ' ligne des totaux
v$ = "Total"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,15,15,1,1,adr(v$))
res% = dll_call6("SetKGFGridCellRangeActive",KGtot%,1,11,1,6,0)   : ' ligne des totaux
res% = dll_call6("SetKGFGridCellRangeValue",KGtot%,1,1,1,1,adr(v$))

f1$ = "$RyC2^$RyC3^*;"                                          : ' calcul du HT par ligne
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,2,14,4,4,adr(f1$))
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,4,4,hex("C0C0FF"))

f1$ = "$RyC4^$RyC5^V100^+*V100^/;"                              : ' calcul du TTC par ligne
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,2,14,6,6,adr(f1$))
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,6,6,hex("C0C0FF"))

f1$ = "cR2C2|cR14C2|RScR1C2^V"+str$(KGtot%)+"^@;"                                        : ' calcul du nombre d'unités
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,2,2,adr(f1$))

f1$ = "cR2C4|cR14C4|RScR1C4^V"+str$(KGtot%)+"^@;"                                        : ' calcul du total HT
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,4,4,adr(f1$))

f1$ = "cR2C6|cR14C6|RScR1C6^V"+str$(KGtot%)+"^@;"                                        : ' calcul du total TTC
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,6,6,adr(f1$))

v$ = "Robinets de lavabo"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,1,1,adr(v$)) : ' chargement 1er produit
f = 3
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,2,adr(f))
f = 17.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,3,3,adr(f))
f = 20
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,5,5,adr(f))
  
v$ = "Parquet chêne"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,adr(v$)) : ' chargement 2ème produit
f = 2.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,2,adr(f))  
f = 50
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,3,3,adr(f))  
f = 20
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,5,5,adr(f))

v$ = "Raccords cuivre"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,1,1,adr(v$)) : ' chargement 3ème produit
f = 12
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,2,adr(f))  
f = 2.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,3,3,adr(f))  
f = 10
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,5,5,adr(f))


on_user_event UserEvent

end

UserEvent:
  UserEvent()
  return
  
sub UserEvent()
  dim_local lig%, col%, id%, type%, res$, f, KGclick%
  if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub
  if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub
  id% = bin_and(user_event_wparam,hex("0000FFFF"))
  col% = user_event_lparam/65536
  lig% = bin_and(user_event_lparam,hex("0000FFFF"))
  select id%
   case 13
     KGclick% = KG%
   case 17
     KGclick% = KGtot%
  end_select
'  delete 1
'  picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1
'  clear 2
  type% = dll_call3("GetKGFGridCellType",KGclick%,lig%,col%)               : ' ok
  select type%
    case 0: ' Inconnu
      res% = dll_call4("GetKGFGridCellValue",KGclick%,lig%,col%,0)         : ' ok
      res$ = str$(res%)
    case 1: ' Chaîne
      res$ = string$(255," ")
      res% = dll_call4("GetKGFGridCellValue",KGclick%,lig%,col%,adr(res$)) : ' ok
      res$ = trim$(res$)
    case 2: ' Entier
      res% = dll_call4("GetKGFGridCellValue",KGclick%,lig%,col%,0)         : ' ok
      res$ = str$(res%)
    case 3: ' flottant
      res% = dll_call4("GetKGFGridCellValue",KGclick%,lig%,col%,adr(f))    : ' ok
      res$ = str$(f)
    case 4: ' Booleen
      res% = dll_call4("GetKGFGridCellValue",KGclick%,lig%,col%,0)         : ' ok
      res$ = str$(res%)
    case 5: ' Image
'      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)         : ' ok
'      clipboard_paste 1
    case 6: ' Mémo
'      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok
  end_select
  message "clic dans KGFGrid   ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+"  valeur="+res$
  if type%=4
    res% = dll_call6("SetKGFGridCellRangeValue",KGclick%,lig%,lig%,col%,col%,1-res%)        : ' ok
  end_if
  res% = dll_call4("GetKGFGridCellAtributes",KGclick%,lig%,col%,handle(100))
end_sub

TestParse:
'  expression$ = "CellValue(CellRow,CellCol)"
  expression$ = text$(206)
  res% = dll_call4("TestParser",handle(208),adr(expression$),position(202),position(204))
  return

Note supplémentaire:
Je rendrai l'accès à ce type de formules accessible via une fonction spécifique, indépendante des objets KGFGrid, un peu à l'image de l'actuelle fonction TestParser. Ceci permettra d'avoir des formules de calcul dans n'importe quelle application, et même d'y accéder un KGFGrid !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
pascal10000

pascal10000


Nombre de messages : 812
Localisation : Troyes
Date d'inscription : 05/02/2011

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMar 24 Avr 2018 - 18:50

bjr klaus
ça a l’air intéressante
je vais tenter de mettre ça dans mon programme TourD à la place
du grid de panoramic
merci a+
Revenir en haut Aller en bas
Minibug

Minibug


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMar 24 Avr 2018 - 19:07

Houlala, là c'est trop pour moi ! Tu m'as perdu Klaus. Wink

Maintenant avec tout cela tu va pouvoir nous créer un super tableur ! Laughing Laughing Laughing
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
pascal10000

pascal10000


Nombre de messages : 812
Localisation : Troyes
Date d'inscription : 05/02/2011

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyVen 27 Avr 2018 - 20:59

bsr

Heuuu!!!!!!!!!
Je n'ai pas trouvé KgfGrid dans kgf.dll et ni dans ton site
aurais-je raté quelque chose? ou se trouve ta librairie
pour la tetecharger?

j'ai telecharger kgf le 24 avr
Revenir en haut Aller en bas
Klaus

Klaus


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyVen 27 Avr 2018 - 21:16

C'est dans KGF.dll. La doc n'est pas encore faite - c'est en cours. Mais j'ai publié une liste synthétique des fonctions, et il y a le programme de démo.

Voici celle liste synthétique à nouveau:
Code:
//KG% = dll_call5("CreateKGFGrid",handle(dest%),ID%)
//KG% = dll_call1("DeleteKGFGrid",KG%)
//res% = dll_call5("LocateKGFGrid",KG%,nlig%,x%,y%,w%,h%)
//res% = dll_call5("SetGlobalKGFGridDimensions",KG%,nlig%,ncol%,cellW%,cellH%)
//res% = dll_call2("SetGlobalKGFGridColors",KG%,RGB%)
//res% = dll_call4("SetKGFGridRowRangeHeight",KG%,lig1%,lig2%,par%)
//res% = dll_call4("SetKGFGridRowRangeVisible",KG%,lig1%,lig2%,act%)
//    act%:  0=ligne invisible  1=ligne visible
//res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,lig1%,lig2%,par%)
//res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,col1%,col2%,act%)
//    act%:  0=colonne invisible  1=colonne visible
//res% = dll_call6("SetKGFGridCellRangeType",KG%,lig1%,lig2%,col1%,col2%,type%)
//    type%:  0=aucun  1=chaîne  2=entier  3=flottant  4=booléen  5=image  6=mémo
//res% = dll_call6("SetKGFGridCellRangeJustification",KG%,lig1%,lig2%,col1%,col2%,par%)
//    par%: type de justification:
//      aucune (en haut à gauche),
//      en haut à gauche, centré verticalement à gauche, en bas à gauche,
//      en haut centré horizontalement, centré partout, en bas centré horizontalement,
//      en haut à droite, centré verticalement à drote, en bas à droite
//res% = dll_call6("SetKGFGridCellRangeFormat",KG%,lig1%,lig2%,col1%,col2%,adr(format$))
//res% = dll_call6("SetKGFGridCellRangeColor",KG%,lig1%,lig2%,col1%,col2%,RGB%)
//res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig1%,lig2%,col1%,col2%,par%)
//    par% en fonction du type de cellule: valeur%, adr(flottant), adr(fichier$), handle(memo%), ...
//res% = dll_call6("SetKGFGridCellRangeFontName",KG%,lig1%,lig2%,col1%,col2%,adr(police$))
//res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,lig1%,lig2%,col1%,col2%,size%)
//res% = dll_call6("SetKGFGridCellRangeFontColor",KG%,lig1%,lig2%,col1%,col2%,RGB%)
//res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,lig1%,lig2%,col1%,col2%,par%)
//    par%: 0=normal  1=gras
//res% = dll_call6("SetKGFGridCellRangeFontItalic",KG%,lig1%,lig2%,col1%,col2%,par%)
//    par%: 0=normal  1=italique
//res% = dll_call6("SetKGFGridCellRangeFontUnderline",KG%,lig1%,lig2%,col1%,col2%,par%)
//    par%: 0=normal  1=souligné
//res% = dll_call6("SetKGFGridCellRangeFontStrikeout",KG%,lig1%,lig2%,col1%,col2%,par%)
//    par%: 0=normal  1=barré
//res% = dll_call4("SetKGFGridCellType",KG%,lig%,col%,type%)
//    type%: type de cellule  0=inconnu  1=string  2=integer  3=flottant  4=booléen  5=image  6=mémo
//res% = dll_call4("SetKGFGridCellValue",KG%,lig%,col%,par%)
//    par% en fonction du type de cellule: valeur%, adr(flottant), adr(fichier$), handle(memo%), ...
//res% = dll_call4("SetKGFGridCellName",KG%,lig%,col%,adr(nom$))
//res% = dll_call6("SetKGFGridCellRangeFormula",KG%,lig1%,lig2%,col1%,col2%,adr(formule$))
//res% = dll_call6("SetKGFGridCellRangeActive",KG%,lig1%,lig2%,col1%,col2%,act%)
//    act%: 0=cellule inactive  1=cellule active
//res% = dll_call6("SetKGFGridCellRangeZeroAsSpace",KG%,lig1%,lig2%,col1%,col2%,act%)
//    act%: 0="valeurs zéro afichées"  1="valeurs zéro non affichées'
//res% = dll_call6("SetKGFGridCellRangeBorderStyle",KG%,lig1%,lig2%,col1%,col2%,style%)
//    style%: 0=plat  1=3D
//res% = dll_call6("SetKGFGridCellRangeBorderColor",KG%,lig1%,lig2%,col1%,col2%,RGB%)
//    RGB%: couleur des bordures si style=0
//    RGB% = hex("BBGGRR")
//res% = dll_call6("SetKGFGridCellRangeBorderWidth",KG%,lig1%,lig2%,col1%,col2%,LTRB%)
//    largeurs des bordures si style=0
//    LTRB% = hex("BBRRTTLL")  si un des éléments est FF, la valeur est inchangée
// res% = dll_call4("GetKGFGridCellAtributes",KG%,lig%,col%,hmemo%)
// res% = dll_call2("SaveKGFGridToFile(KG%,adr(fichier$))
// res% = dll_call2("LoadKGFGridFromFile(KG%,adr(fichier$))

Regarde les deux démos:
Code:
' test_KGFGrid_avec_LoadFromFile.bas

label UserEvent
dim res%, KG%, f1$, Types$(6), v$, f, img$
  Types$(0) = "Inconnu (traité comme Integer)"
  Types$(1) = "Chaîne"
  Types$(2) = "Entier"
  Types$(3) = "Flottant"
  Types$(4) = "Booléen"
  Types$(5) = "Image"
  Types$(6) = "Mémo"
 
picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 
memo 2 : top 2,10 : left 2,10 : width 2,400 : bar_both 2
dll_on "KGF.dll"

KG% = dll_call2("CreateKGFGrid",handle(0),13)                      : ' ok

f1$ = "KGFGrid_backup.txt"
res% = dll_call2("LoadKGFGridFromFile",KG%,adr(f1$))
message str$(res%)

on_user_event UserEvent 

end

UserEvent:
  UserEvent()
  return
 
sub UserEvent()
  dim_local lig%, col%, id%, type%, res$, f
  if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub
  if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub
  id% = bin_and(user_event_wparam,hex("0000FFFF"))
  col% = user_event_lparam/65536
  lig% = bin_and(user_event_lparam,hex("0000FFFF"))
  delete 1
  picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1
  clear 2
  type% = dll_call3("GetKGFGridCellType",KG%,lig%,col%)              : ' ok
  select type%
    case 0: ' Inconnu
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)        : ' ok
      res$ = str$(res%)
    case 1: ' Chaîne
      res$ = string$(255," ")
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(res$)) : ' ok
      res$ = trim$(res$)
    case 2: ' Entier
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)        : ' ok
      res$ = str$(res%)
    case 3: ' flottant
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(f))    : ' ok
      res$ = str$(f)
    case 4: ' Booleen
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)        : ' ok
      res$ = str$(res%)
    case 5: ' Image
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)        : ' ok
      clipboard_paste 1
    case 6: ' Mémo
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok
  end_select
  message "clic dans KGFGrid  ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+"  valeur="+res$
  if type%=4
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig%,lig%,col%,col%,1-res%)        : ' ok
  end_if
end_sub
et
Code:
' test_KGFGrid_facture.bas

label UserEvent, TestParse

dim res%, KG%, KGtot%, f1$, Types$(6), v$, f, img$, expression$
  Types$(0) = "Inconnu (traité comme Integer)"
  Types$(1) = "Chaîne"
  Types$(2) = "Entier"
  Types$(3) = "Flottant"
  Types$(4) = "Booléen"
  Types$(5) = "Image"
  Types$(6) = "Mémo"
 
full_space 0
memo 100 : top 100,100 : left 100,700 : width 100,300 : height 100,420 : bar_both 100 
 
alpha 201 : top 201,540 : left 201,10 : caption 201,"Ligne:"
spin 202 : top 202,540 : left 202,60 : width 202,80 : min 202,2 : max 202,15 : position 202,2
alpha 203 : top 203,540 : left 203,170 : caption 203,"Colonne:"
spin 204 : top 204,540 : left 204,220 : width 204,80 : min 204,2 : max 204,7 : position 204,2
alpha 205 : top 205,570 : left 205,10 : caption 205,"Formule:"
edit 206 : top 206,570 : left 206,70 : width 206,300
'  text 206,"Cellsum(CellRef(2,2),CellRef(14,2))"
  text 206,"writecell(grid(1)+CellValue(3,6),grid(2)+cellref(1,3))"
button 207 : top 207,570 : left 207,390 : caption 207,"Parse" : on_click 207,TestParse
memo 208 : hide 208 : bar_both 208
 
dll_on "KGF.dll"

KG% = dll_call2("CreateKGFGrid",handle(0),13)                   
' res% = dll_call5("LocateKGFGrid",KG%,10,100,652,377)  : ' si l'on rend la ligne 15 visible           
res% = dll_call5("LocateKGFGrid",KG%,10,100,652,352)  : ' si la ligne 15 est invisible           
KGtot% = dll_call2("CreateKGFGrid",handle(0),17)                   
res% = dll_call5("LocateKGFGrid",KGtot%,10,490,652,27)
' liens pour les formules
item_add 208,str$(KG%)
item_add 208,str$(KGtot%)
             
' colonnes:
'  Libellé, quantité, Prix unitaire HT, total HT, taux TVA, total TTC
res% = dll_call5("SetGlobalKGFGridDimensions",KG%,15,7,50,25)   
res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,7,7,0)    : ' servira pour les liens vers une autre table
res% = dll_call4("SetKGFGridRowRangeVisible",KG%,15,15,0)     
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,1,6,hex("FFFFFF"))
res% = dll_call5("SetGlobalKGFGridDimensions",KGtot%,1,7,50,25)   
res% = dll_call4("SetKGFGridColumnRangeVisible",KGtot%,7,7,0)    : ' servira pour les liens vers une autre table
res% = dll_call6("SetKGFGridCellRangeColor",KGtot%,1,11,1,6,hex("C0C0FF"))
v$ = "Arial"
res% = dll_call6("SetKGFGridCellRangeFontName",KG%,1,15,1,6,adr(v$))
res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,1,15,1,6,12)   
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,15,1,6,2)
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,15,2,6,7)
res% = dll_call6("SetKGFGridCellRangeFontName",KGtot%,1,1,1,6,adr(v$))
res% = dll_call6("SetKGFGridCellRangeFontSize",KGtot%,1,1,1,6,12)   
res% = dll_call6("SetKGFGridCellRangeJustification",KGtot%,1,1,1,6,2)
res% = dll_call6("SetKGFGridCellRangeJustification",KGtot%,1,1,2,6,7)

res% = dll_call6("SetKGFGridCellRangeType",KG%,1,1,1,6,1)      : ' ligne des titres de colonnes
res% = dll_call6("SetKGFGridCellRangeBorderStyle",KG%,1,1,1,6,1)
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,1,1,1,6,1)
res% = dll_call6("SetKGFGridCellRangeActive",KG%,1,1,1,6,0)
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,200)    : ' libellé
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,1,1,200)   
v$ = "Libellé"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,1,1,adr(v$)) 
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,80)      : ' quantité
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,2,2,80)   
v$ = "Qté"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,2,2,adr(v$))
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,100)    : ' prix unitaire
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,3,3,100)   
v$ = "Prix U."
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,3,3,adr(v$)) 
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,100)    : ' total HT
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,4,4,100)   
v$ = "Total HT"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,4,4,adr(v$)) 
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,70)      : ' taux TVA
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,5,5,70)   
v$ = "Tx TVA"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,5,5,adr(v$)) 
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,100)      : ' total TTC
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,6,6,100)   
v$ = "Total TTC"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,6,6,adr(v$)) 

res% = dll_call6("SetKGFGridCellRangeType",KG%,2,15,1,1,1)      : ' colonne des libéllées
res% = dll_call6("SetKGFGridCellRangeType",KG%,2,15,2,7,3)      : ' colonnes de valeurs
res% = dll_call6("SetKGFGridCellRangeBorderColor",KG%,2,15,2,2,hex("FF0000"))  : ' colonne des quantités: bordures bleues
res% = dll_call6("SetKGFGridCellRangeBorderWidth",KG%,2,15,2,2,hex("FF03FF03"))  : ' largeurs des bordures colonne des quantités
res% = dll_call6("SetKGFGridCellRangeZeroAsSpace",KG%,2,15,2,7,1)    : ' ne pas afficher les valeurs zéro
res% = dll_call6("SetKGFGridCellRangeType",KGtot%,1,1,1,1,1)      : ' colonne des libéllées
res% = dll_call6("SetKGFGridCellRangeType",KGtot%,1,1,2,7,3)      : ' colonnes de valeurs

res% = dll_call6("SetKGFGridCellRangeActive",KG%,15,15,1,6,0)  : ' ligne des totaux
res% = dll_call6("SetKGFGridCellRangeActive",KGtot%,1,11,1,6,0)  : ' ligne des totaux
v$ = "Total"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,15,15,1,1,adr(v$))
res% = dll_call6("SetKGFGridCellRangeActive",KGtot%,1,11,1,6,0)  : ' ligne des totaux
res% = dll_call6("SetKGFGridCellRangeValue",KGtot%,1,1,1,1,adr(v$))

f1$ = "$RyC2^$RyC3^*;"                                          : ' calcul du HT par ligne
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,2,14,4,4,adr(f1$))
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,4,4,hex("C0C0FF"))

f1$ = "$RyC4^$RyC5^V100^+*V100^/;"                              : ' calcul du TTC par ligne
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,2,14,6,6,adr(f1$))
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,6,6,hex("C0C0FF"))

f1$ = "cR2C2|cR14C2|RScR1C2^V"+str$(KGtot%)+"^@;"                                        : ' calcul du nombre d'unités
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,2,2,adr(f1$))

f1$ = "cR2C4|cR14C4|RScR1C4^V"+str$(KGtot%)+"^@;"                                        : ' calcul du total HT
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,4,4,adr(f1$))

f1$ = "cR2C6|cR14C6|RScR1C6^V"+str$(KGtot%)+"^@;"                                        : ' calcul du total TTC
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,6,6,adr(f1$))

v$ = "Robinets de lavabo"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,1,1,adr(v$)) : ' chargement 1er produit
f = 3
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,2,adr(f))
f = 17.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,3,3,adr(f))
f = 20
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,5,5,adr(f))
 
v$ = "Parquet chêne"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,adr(v$)) : ' chargement 2ème produit
f = 2.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,2,adr(f)) 
f = 50
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,3,3,adr(f)) 
f = 20
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,5,5,adr(f))

v$ = "Raccords cuivre"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,1,1,adr(v$)) : ' chargement 3ème produit
f = 12
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,2,adr(f)) 
f = 2.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,3,3,adr(f)) 
f = 10
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,5,5,adr(f))


on_user_event UserEvent

end

UserEvent:
  UserEvent()
  return
 
sub UserEvent()
  dim_local lig%, col%, id%, type%, res$, f, KGclick%
  if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub
  if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub
  id% = bin_and(user_event_wparam,hex("0000FFFF"))
  col% = user_event_lparam/65536
  lig% = bin_and(user_event_lparam,hex("0000FFFF"))
  select id%
  case 13
    KGclick% = KG%
  case 17
    KGclick% = KGtot%
  end_select
'  delete 1
'  picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1
'  clear 2
  type% = dll_call3("GetKGFGridCellType",KGclick%,lig%,col%)              : ' ok
  select type%
    case 0: ' Inconnu
      res% = dll_call4("GetKGFGridCellValue",KGclick%,lig%,col%,0)        : ' ok
      res$ = str$(res%)
    case 1: ' Chaîne
      res$ = string$(255," ")
      res% = dll_call4("GetKGFGridCellValue",KGclick%,lig%,col%,adr(res$)) : ' ok
      res$ = trim$(res$)
    case 2: ' Entier
      res% = dll_call4("GetKGFGridCellValue",KGclick%,lig%,col%,0)        : ' ok
      res$ = str$(res%)
    case 3: ' flottant
      res% = dll_call4("GetKGFGridCellValue",KGclick%,lig%,col%,adr(f))    : ' ok
      res$ = str$(f)
    case 4: ' Booleen
      res% = dll_call4("GetKGFGridCellValue",KGclick%,lig%,col%,0)        : ' ok
      res$ = str$(res%)
    case 5: ' Image
'      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)        : ' ok
'      clipboard_paste 1
    case 6: ' Mémo
'      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok
  end_select
  message "clic dans KGFGrid  ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+"  valeur="+res$
  if type%=4
    res% = dll_call6("SetKGFGridCellRangeValue",KGclick%,lig%,lig%,col%,col%,1-res%)        : ' ok
  end_if
  res% = dll_call4("GetKGFGridCellAtributes",KGclick%,lig%,col%,handle(100))
end_sub

TestParse:
'  expression$ = "CellValue(CellRow,CellCol)"
  expression$ = text$(206)
  res% = dll_call4("TestParser",handle(208),adr(expression$),position(202),position(204))
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
pascal10000

pascal10000


Nombre de messages : 812
Localisation : Troyes
Date d'inscription : 05/02/2011

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyVen 27 Avr 2018 - 21:47

ok
voila le pourquoi je ne trouvai pas les
commande dans la doc
merci pour cette info
bonsoir
Revenir en haut Aller en bas
Klaus

Klaus


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptySam 28 Avr 2018 - 21:47

Nouvelle version de l'objet KGFGrid. KGF.dll est à jour sur le WebDav dossier DLLs et sur les deux sites internet.

Cette version apporte une amélioration visuelle. Si l'on a défini un KGFGrid dont le contenu dépasse le rectangle de visualisation, des ascenseurs apparaissent et permettent de déplacer la grille à volonte. Mais si l'on clique dans une cellle qui n'est que partiellement visible, le clic et la celule sont bien identifiées, mais l'affichage est inchangé.

Maintenant, l'affichage est automatiquement déplacé de sorte à placer la cellule entière dans le cadre de visualisation, aussi bien horizontalement que verticalement. Ceci apporte un meilleur confort d'utilisation mais ne change rien en programmation Panoramic. Tout se joue à l'intérieur de KGF.dll. Donc, pas de nouvelles versions des programmes de démo.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 326
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Documentation sur KFGRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyJeu 12 Juil 2018 - 13:38

Bonjour.
J'ai essayé le Nouveau Grid, KFGRID, et je le trouve vraiment formidable.

Y aurait il quelque part une Documentation. Question  Question

Il y a un fichier HLP, que je n'arrive pas à Lire sur Seven

Merci beaucoup

Lepetitmarocain
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyVen 13 Juil 2018 - 10:32

Bonjour Lepetitmarocain,

Quand tu es connecté, tu trouves tout ce dont tu as besoin dans la signature de Klaus.

Pour l'aide de KGF c'est ici => http://klauspanoramic.esy.es/KGF.html?SommaireIndex.html

A+

Revenir en haut Aller en bas
lepetitmarocain




Nombre de messages : 326
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Grid KGF   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMar 24 Juil 2018 - 16:39

bonjour

je persiste à demander s'il y a un tuto du KFGRID, pour expliquer toutes les zones des différents appel

dll_call6("SET...rangefontnam,Kg%
dll_call4("Set...  rangewith", KGtot%


J’espère que ma demande est compréhensible.

vous me direz qu'il faudrait que je lises tout pour trouver, mais je pense qu'il doit y avoir des âmes charitables

Merci par avance

lepetitmarocain : Smile Smile
Revenir en haut Aller en bas
lepetitmarocain




Nombre de messages : 326
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: KGFGRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMar 11 Déc 2018 - 18:05

Bonjour Klaus.

Depuis quelques temps, en regardant tes exemples, j'essaie de créer un Grid simple en prenant ton

 KGFgrid comme exemple.

J'y arrive mais en tâtonnant

Peux tu me dire STP à quel endroit nous pouvons avoir les explications pour avoir toutes les fonctions.

Y a t-il un PDF ou un Word.

Merci pour ta réponse.

Lepetitmarocain
Revenir en haut Aller en bas
Minibug

Minibug


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMar 11 Déc 2018 - 18:21

Salut Lepetitmarocain !

tu peux trouver toute l'aide sur KGF dans ce lien.

J'espère que Klaus va nous redonner de ses nouvelles bientôt... sunny
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
lepetitmarocain




Nombre de messages : 326
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: aide sur KGFGRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyJeu 13 Déc 2018 - 14:00

Bonjour Minibug.

Merci pour ta réponse, mais je ne trouve rien concernant le KGFGRID.

Vois je mal ou il n'y a rien?

Bonne journée à tous

Lepetitmarocain
Revenir en haut Aller en bas
Minibug

Minibug


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyJeu 13 Déc 2018 - 17:36

Hummm, tu as raison, je viens de passer toutes les fonctions du site et il n'y a rien sur le GRID.

Attendons de revoir passer Klaus sur le site pour lui demander.
Je pense que c'est la meilleure solution... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
lepetitmarocain




Nombre de messages : 326
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: KFGRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMer 19 Déc 2018 - 20:21

Bonsoir Minibug et bonsoir à tous

Je viens de trouver à la date du 27 avril, une explication mise par Klaus pour l'explication du KFGRID.

J' ai donc réussi à remplir un KFGRID avec couleurs etc etc ...,

et il ne me manque plus que la possibilité de saisie dans un KFGRID.

Merci pour ta réaction rapide.

Bonne soirée à tous

Lepetitmarocain
Revenir en haut Aller en bas
lepetitmarocain




Nombre de messages : 326
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Ecrire dans un KGFgrid directement   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMer 16 Jan 2019 - 18:11

Bonjour à tous.

Tout d'abord je vous souhaite une très bonne Année 2019.

Du Bonheur et de L'amour.

Je suis toujours en attente de modifs pour le KGFGRID, afin de pouvoir écrire directement sur celui ci, (par exemple pour mettre un

code de suppression de ligne ou ajouter une ligne en plus), et de pouvoir le lire ligne par ligne.

Merci de toutes vos réponses qui pourront servir à toutes & à tous.

Lepetitmarocain
Revenir en haut Aller en bas
Minibug

Minibug


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyMer 16 Jan 2019 - 18:23

bonjour et bonne année a toi aussi lepetitmarocain.

Pour ce qui est de KGFGRID, tu n'as pas de chance, car Klaus n'est plus vraiment présent actuellement sur le forum.
Il faut dire qu'il a eu pas mal de soucis ces derniers temps !

Espérons que tout se passe bien pour lui. Peut être aura t-on des nouvelles bientôt... Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyDim 27 Jan 2019 - 0:40

Klaus,

Comme tu es de retour et que tes outils sont opérationnels, tu pourrai peut être répondre aux différentes questions posés sur ce fil de discussion par lepetitmarocain au sujet de ta dernière réalisation KGFGRID...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyDim 27 Jan 2019 - 2:28

Oh la la, c'est vieux, ça ... Je vais regarder cela.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyDim 27 Jan 2019 - 11:10

A l'attention de lepetitmarocain:
Il n'y a pas encore de documentation détaillée des fonctions de cet objet. Mais la documentation est contenue, de façon synthétique, dans ce fil de discussion:
https://panoramic.1fr1.net/t5736p25-exemple-d-une-nouvelle-version-d-un-grid
ainsi que des programmes de démo assez complets et parlants. Je regrette de ne rien avoir de plus "accessible" à l'heure actuelle - j'ai été "descendu en plein vol" l'année dernière, et je ne reprends que petit à petit. Cependant, l'objet et les fonctions associées sont opérationnels, et c'est spectaclaire !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 326
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: KGFGRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyLun 28 Jan 2019 - 15:47

Bonjour KLAUS.

Merci pour ta réponse.

J' ai copié le programme qui permet de visualiser l'ensemble des attributs d'une cellule.

Mais il ne se passe rien lorsque je clique sur une ligne....

Est ce normal ou ne fais je pas ce qu'il faut.

Merci par avance.

Bien entendu lorsque tu auras du temps....

Lepetitmarocain
Revenir en haut Aller en bas
Klaus

Klaus


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

Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 EmptyLun 28 Jan 2019 - 15:58

Je viens de tester cela - tout marche bien, chez moi.

Par sécurité, je te remets le programme (que je n'ai pas modifié !):
Code:
' test_KGFGrid_facture.bas

label UserEvent
dim res%, KG%, KGtot%, f1$, Types$(6), v$, f, img$
  Types$(0) = "Inconnu (traité comme Integer)"
  Types$(1) = "Chaîne"
  Types$(2) = "Entier"
  Types$(3) = "Flottant"
  Types$(4) = "Booléen"
  Types$(5) = "Image"
  Types$(6) = "Mémo"
  
full_space 0
memo 100 : top 100,100 : left 100,700 : width 100,300 : height 100,420 : bar_both 100  
  
dll_on "KGF.dll"

KG% = dll_call2("CreateKGFGrid",handle(0),13)                    
' res% = dll_call5("LocateKGFGrid",KG%,10,100,652,377)  : ' si l'on rend la ligne 15 visible            
res% = dll_call5("LocateKGFGrid",KG%,10,100,652,352)  : ' si la ligne 15 est invisible            
KGtot% = dll_call2("CreateKGFGrid",handle(0),13)                    
res% = dll_call5("LocateKGFGrid",KGtot%,10,490,652,27)              
' colonnes:
'  Libellé, quantité, Prix unitaire HT, total HT, taux TVA, total TTC
res% = dll_call5("SetGlobalKGFGridDimensions",KG%,15,7,50,25)    
res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,7,7,0)    : ' servira pour les liens vers une autre table
res% = dll_call4("SetKGFGridRowRangeVisible",KG%,15,15,0)      
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,1,6,hex("FFFFFF"))
res% = dll_call5("SetGlobalKGFGridDimensions",KGtot%,1,7,50,25)    
res% = dll_call4("SetKGFGridColumnRangeVisible",KGtot%,7,7,0)    : ' servira pour les liens vers une autre table
res% = dll_call6("SetKGFGridCellRangeColor",KGtot%,1,11,1,6,hex("C0C0FF"))
v$ = "Arial"
res% = dll_call6("SetKGFGridCellRangeFontName",KG%,1,15,1,6,adr(v$))
res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,1,15,1,6,12)    
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,15,1,6,2)
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,15,2,6,7)
res% = dll_call6("SetKGFGridCellRangeFontName",KGtot%,1,1,1,6,adr(v$))
res% = dll_call6("SetKGFGridCellRangeFontSize",KGtot%,1,1,1,6,12)    
res% = dll_call6("SetKGFGridCellRangeJustification",KGtot%,1,1,1,6,2)
res% = dll_call6("SetKGFGridCellRangeJustification",KGtot%,1,1,2,6,7)

res% = dll_call6("SetKGFGridCellRangeType",KG%,1,1,1,6,1)      : ' ligne des titres de colonnes
res% = dll_call6("SetKGFGridCellRangeBorderStyle",KG%,1,1,1,6,1)
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,1,1,1,6,1)
res% = dll_call6("SetKGFGridCellRangeActive",KG%,1,1,1,6,0)
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,200)     : ' libellé
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,1,1,200)    
v$ = "Libellé"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,1,1,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,80)      : ' quantité
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,2,2,80)    
v$ = "Qté"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,2,2,adr(v$))
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,100)     : ' prix unitaire
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,3,3,100)    
v$ = "Prix U."
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,3,3,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,100)     : ' total HT
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,4,4,100)    
v$ = "Total HT"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,4,4,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,70)      : ' taux TVA
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,5,5,70)    
v$ = "Tx TVA"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,5,5,adr(v$))  
res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,100)      : ' total TTC
res% = dll_call4("SetKGFGridColumnRangeWidth",KGtot%,6,6,100)    
v$ = "Total TTC"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,6,6,adr(v$))  

res% = dll_call6("SetKGFGridCellRangeType",KG%,2,15,1,1,1)      : ' colonne des libéllées
res% = dll_call6("SetKGFGridCellRangeType",KG%,2,15,2,7,3)      : ' colonnes de valeurs
res% = dll_call6("SetKGFGridCellRangeBorderColor",KG%,2,15,2,2,hex("FF0000"))  : ' colonne des quantités: bordures bleues
res% = dll_call6("SetKGFGridCellRangeBorderWidth",KG%,2,15,2,2,hex("FF03FF03"))  : ' largeurs des bordures colonne des quantités
res% = dll_call6("SetKGFGridCellRangeZeroAsSpace",KG%,2,15,2,7,1)    : ' ne pas afficher les valeurs zéro
res% = dll_call6("SetKGFGridCellRangeType",KGtot%,1,1,1,1,1)      : ' colonne des libéllées
res% = dll_call6("SetKGFGridCellRangeType",KGtot%,1,1,2,7,3)      : ' colonnes de valeurs

res% = dll_call6("SetKGFGridCellRangeActive",KG%,15,15,1,6,0)   : ' ligne des totaux
res% = dll_call6("SetKGFGridCellRangeActive",KGtot%,1,11,1,6,0)   : ' ligne des totaux
v$ = "Total"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,15,15,1,1,adr(v$))
res% = dll_call6("SetKGFGridCellRangeActive",KGtot%,1,11,1,6,0)   : ' ligne des totaux
res% = dll_call6("SetKGFGridCellRangeValue",KGtot%,1,1,1,1,adr(v$))

f1$ = "$RyC2^$RyC3^*;"                                          : ' calcul du HT par ligne
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,2,14,4,4,adr(f1$))
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,4,4,hex("C0C0FF"))

f1$ = "$RyC4^$RyC5^V100^+*V100^/;"                              : ' calcul du TTC par ligne
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,2,14,6,6,adr(f1$))
res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,14,6,6,hex("C0C0FF"))

f1$ = "cR2C2|cR14C2|RScR1C2^V"+str$(KGtot%)+"^@;"                                        : ' calcul du nombre d'unités
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,2,2,adr(f1$))

f1$ = "cR2C4|cR14C4|RScR1C4^V"+str$(KGtot%)+"^@;"                                        : ' calcul du total HT
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,4,4,adr(f1$))

f1$ = "cR2C6|cR14C6|RScR1C6^V"+str$(KGtot%)+"^@;"                                        : ' calcul du total TTC
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,15,15,6,6,adr(f1$))

v$ = "Robinets de lavabo"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,1,1,adr(v$)) : ' chargement 1er produit
f = 3
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,2,adr(f))
f = 17.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,3,3,adr(f))
f = 20
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,5,5,adr(f))
  
v$ = "Parquet chêne"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,adr(v$)) : ' chargement 2ème produit
f = 2.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,2,adr(f))  
f = 50
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,3,3,adr(f))  
f = 20
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,5,5,adr(f))

v$ = "Raccords cuivre"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,1,1,adr(v$)) : ' chargement 3ème produit
f = 12
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,2,adr(f))  
f = 2.5
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,3,3,adr(f))  
f = 10
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,5,5,adr(f))


on_user_event UserEvent

end

UserEvent:
  UserEvent()
  return
  
sub UserEvent()
  dim_local lig%, col%, id%, type%, res$, f
  if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub
  if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub
  id% = bin_and(user_event_wparam,hex("0000FFFF"))
  col% = user_event_lparam/65536
  lig% = bin_and(user_event_lparam,hex("0000FFFF"))
'  delete 1
'  picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1
'  clear 2
  type% = dll_call3("GetKGFGridCellType",KG%,lig%,col%)               : ' ok
  select type%
    case 0: ' Inconnu
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)         : ' ok
      res$ = str$(res%)
    case 1: ' Chaîne
      res$ = string$(255," ")
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(res$)) : ' ok
      res$ = trim$(res$)
    case 2: ' Entier
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)         : ' ok
      res$ = str$(res%)
    case 3: ' flottant
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(f))    : ' ok
      res$ = str$(f)
    case 4: ' Booleen
      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)         : ' ok
      res$ = str$(res%)
    case 5: ' Image
'      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0)         : ' ok
'      clipboard_paste 1
    case 6: ' Mémo
'      res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok
  end_select
  message "clic dans KGFGrid   ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+"  valeur="+res$
  if type%=4
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig%,lig%,col%,col%,1-res%)        : ' ok
  end_if
  res% = dll_call4("GetKGFGridCellAtributes",KG%,lig%,col%,handle(100))
end_sub

Et je te conseille de recharger KGF.dll à partir de mon site internet (pas le WebDav !) pour avoir la bonne version de la DLL. Pour cela, il suffit de cliquer sur l'icône à gauche du libellé " KGF.dll (en format ZIP)" dans ma signature. Notons que la version actuelle (datée de ce jour) contient une seule modification par rapport à la version précédente, et elle concerne la fonction SaveStringList, sans aucun rapport avec KGFGrig qui est inchangé.

EDIT

Le WebDav est à jour également. Donc, c'est au choix...
Bonne chance !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Exemple d'une nouvelle version d'un GRID - Page 2 Empty
MessageSujet: Re: Exemple d'une nouvelle version d'un GRID   Exemple d'une nouvelle version d'un GRID - Page 2 Empty

Revenir en haut Aller en bas
 
Exemple d'une nouvelle version d'un GRID
Revenir en haut 
Page 2 sur 3Aller à la page : Précédent  1, 2, 3  Suivant
 Sujets similaires
-
» PANORAMIC V 0.9.22 est disponible
» nouvelle version
» Version instantanée du 8 février 2013 : PANORAMIC V 0.9.24i8
» Version instantanée du 14 décembre 2013 PANORAMIC V 0.9.25i6
» Nouvelle version 0.33

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: