FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
KGF_dll - nouvelles versions - Page 17 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
KGF_dll - nouvelles versions - Page 17 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
KGF_dll - nouvelles versions - Page 17 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
KGF_dll - nouvelles versions - Page 17 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
KGF_dll - nouvelles versions - Page 17 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
KGF_dll - nouvelles versions - Page 17 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
KGF_dll - nouvelles versions - Page 17 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
KGF_dll - nouvelles versions - Page 17 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 17 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
KGF_dll - nouvelles versions - Page 17 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
KGF_dll - nouvelles versions - Page 17 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
KGF_dll - nouvelles versions - Page 17 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
KGF_dll - nouvelles versions - Page 17 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
KGF_dll - nouvelles versions - Page 17 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
KGF_dll - nouvelles versions - Page 17 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -38%
Ecran PC gaming 23,8″ – ACER KG241Y P3bip ...
Voir le deal
99.99 €

 

 KGF_dll - nouvelles versions

Aller en bas 
+8
JL35
Marc
papydall
Jicehel
Yannick
pascal10000
Minibug
Klaus
12 participants
Aller à la page : Précédent  1 ... 10 ... 16, 17, 18 ... 28 ... 40  Suivant
AuteurMessage
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptySam 2 Avr 2016 - 9:08

Ah, je vois enfin ce que tu veux dire... En effet, si je n'affiche "rien", je ne fais "rien", en ce moment... Je vais corriger cela. ca viendra en même temps que la justification et les attributs graphiques - c'est bien prévu dans le code, mais ça ne marche plus. Je travaille dessus.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 17 EmptySam 2 Avr 2016 - 10:12

J' ai essayé tes explications pour cadrer une seule colonne à droite.
Cela fonctionne.
En fait je dois définir chaque colonne, presque colonne par colonne.

Je vais mettre un zip sur mon webdav

Code:
      res% = DLL_call6("GridFunction",SG%(i%),9,0,10,adr(pol$),0)
      res% = DLL_call6("GridFunction",SG%(i%),4,1,parnul%,RGBfondNorm%,RGBpoliceNorm%)

      res% = DLL_call6("GridFunction",SG%(i%),9,1,10,adr(pol$),0)
      res% = DLL_call6("GridFunction",SG%(i%),4,2,parnul%,RGBfondDate%,RGBpoliceDate%)
     
      res% = DLL_call6("GridFunction",SG%(i%),9,0,10,adr(pol$),0)
      res% = DLL_call6("GridFunction",SG%(i%),4,3,parnul%,RGBfondNorm%,RGBpoliceNorm%)
      res% = DLL_call6("GridFunction",SG%(i%),4,4,parnul%,RGBfondNorm%,RGBpoliceNorm%)
      res% = DLL_call6("GridFunction",SG%(i%),4,5,parnul%,RGBfondNorm%,RGBpoliceNorm%)

      res% = DLL_call6("GridFunction",SG%(i%),9,2,10,adr(pol$),0)
      res% = DLL_call6("GridFunction",SG%(i%),4,6,parnul%,RGBfondDeb%,RGBpoliceDeb%)
      res% = DLL_call6("GridFunction",SG%(i%),4,7,parnul%,RGBfondCred%,RGBpoliceCred%)
     
      res% = DLL_call6("GridFunction",SG%(i%),9,1,10,adr(pol$),0)
      res% = DLL_call6("GridFunction",SG%(i%),4,8,parnul%,RGBfondNorm%,RGBpoliceNorm%)
      res% = DLL_call6("GridFunction",SG%(i%),4,9,parnul%,RGBfondNorm%,RGBpoliceNorm%)
     

donne :
KGF_dll - nouvelles versions - Page 17 Captur13
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 17 EmptySam 2 Avr 2016 - 10:35

Cette manière de remettre mes 12 grid à 0 te parait elle juste :
Code:
' -> mise à O des grids
  for i%=1 to 12
'    suppression des lignes >3
      for y%= 3 to NbR(i%)
        res% = DLL_call6("GridFunction",SG%(i%),21,3,0,0,0)
      next y%
'    suppression du contenu des cellules de la ligne 2
      txt$ = " "
      res% = DLL_call6("WriteGridCells",SG%(i%),1,2,9,2,adr(txt$))
'    initialisation du nombre de ligne du grid
      NbR%(i%)=2
'    initialisation des soldes du mois
      SoldeReel_mois(i%)=0
      SoldeBank_mois(i%)=0
  next i%
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptySam 2 Avr 2016 - 12:49

Oui, si tu veux supprimer dans chaque grille les lignes de 3 à la fin, effacer le contenu de la ligne 2 et garder la ligne 1. Ceci dit, il serait peut-etre plus simple de supprimer de la ligne 2 jusqu'à la fin, puis d'ajouter une nouvelle ligne à la fin ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptySam 2 Avr 2016 - 13:07

KGF.dll V6.26 du 02/04/2016

Nouveautés:
- GridFunction code 9: peut maintenant agir sur une seule cellule ou le tableau entier
- WriteGridCell: une chaîne vide à écrire efface maintenant réellement la cellule du tableau
- les attributs, polices et justifications sont prises en compte correctement


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sources sont à jour.

Dans le programme de démo ci-après, la cellule (9,5) est spécifiquement cadrée à droite et et en italique:
Code:
' test_GridFunction_code_12.bas

' Ce programme teste le code 12 de GridFunction.
' Ce code permet de définir des rectangles dans un GRID
' pour lesquels la sélection est interdite.

label clic

dim res%, l%, c%, RGB%, s$, x%, y%, status%, SG%, par1%, par2%, par3%, par4%
dim stat$(3)
  stat$(0) = "Normal"
  stat$(1) = "Libre"
  stat$(2) = "Sélectionnable"
  stat$(3) = "Bloqué"

dll_on "KGF.dll"

width 0,690 : height 0,310

edit 98 : ' hide 98
  top 98,300 : on_change 98,clic
height 0,380

memo 99 : hide 99
  item_add 99,"Width=660"
  item_add 99,"Height=260"
  item_add 99,"Rows=10"
  item_add 99,"Columns=10"
  item_add 99,"FixedRows=1"
  item_add 99,"FixedColumns=1"
SG% = dll_call3("CreateStringGrid",handle(0),handle(99),handle(98))


for l%=1 to 10
  for c%=1 to 10
    s$ = str$(c%)+","+str$(l%)
    res% = dll_call4("WriteGridCell",SG%,c%,l%,adr(s$))
  next c%
next l%
s$ = "ABCD"
res% = dll_call4("WriteGridCell",SG%,9,4,adr(s$))
res% = dll_call6("GridFunction",SG%,9,9*65536+5,256+512+8192,0,0-1)
res% = dll_call6("GridFunction",SG%,9,0,0,0,0)

width 0,920
memo 2 : width 2,200 : left 2,660+20   : ' width(1)+20
height 2,260 : ' height(1)
font_name 2,"Courier"
display

' première zone interdite totalement
res% = dll_call6("GridFunction",SG%,12,3,2,5,3)

' seconde zone interdite en saisie uniquement
res% = dll_call6("GridFunction",SG%,13,7,4,8,5)

' troisième zone CheckBox à gauche
res% = dll_call6("GridFunction",SG%,15,4,6,4,9)

' quatrième zone CheckBox à droite
res% = dll_call6("GridFunction",SG%,16,6,7,9,8)

' Cinquième zone CheckBox à gauche dans zone interdite
res% = dll_call6("GridFunction",SG%,15,4,2,4,3)

' Sixième zone CheckBox à droite dans zone protégée
res% = dll_call6("GridFunction",SG%,15,7,4,7,5)

' activer les couleurs personnalisées
res% = dll_call6("GridFunction",SG%,8,1,0,0,0)

RGB(255,200,200)
for l%=2 to 3
  for c%=3 to 3 : ' 5
    ' couleur de la première zone interdite
    res% = dll_call6("GridFunction",SG%,2,c%,l%,RGB%,0)
  next c%
next l%

RGB(200,200,255)
for l%=4 to 5
  for c%=7 to 8
    ' couleur de la seconde zone interdite
    res% = dll_call6("GridFunction",SG%,2,c%,l%,RGB%,0)
  next c%
next l%

' chercher la map du grid
s$ = string$(3000," ")
res% = dll_call2("GetGridCellMap",SG%,adr(s$))
text 2,trim$(s$)

' autoriser la saisie
res% = dll_call6("GridFunction",SG%,1,1,0,0,0)

end

sub RGB(R%,G%,B%) : ' produire une valeur RGB valide
 RGB% = (B%*256+R%)*256+G%
end_sub

clic:
'  caption 0,text$(98)    : ' ici, on a  déjà le numéro de ligne et de colonne dans Edit 98 !
  res% = dll_call6("GridFunction",SG%,14,adr(x%),adr(y%),adr(status%),0)
  s$ = string$(255," ")
  res% = dll_call4("GetGridCellText",SG%,x%,y%,adr(s$))
  caption 0, "click colonne "+str$(x%) +" ligne "+str$(y%)+"  "+stat$(status%+1)+" = "+trim$(s$)
  s$ = string$(255," ")
  res% = dll_call3("GetGridRowText",SG%,y%,adr(s$))
  message "Ligne="+trim$(s$)
  s$ = string$(255," ")
  res% = dll_call3("GetGridColumnText",SG%,x%,adr(s$))
  message "Colonne="+trim$(s$)
  return
  
  

Voici le résultat:
KGF_dll - nouvelles versions - Page 17 Aa114


Dernière édition par Klaus le Sam 2 Avr 2016 - 17:15, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 17 EmptySam 2 Avr 2016 - 14:41

Là, tu m' as perdu.

Le code 9:
KGF_dll - nouvelles versions - Page 17 Captur14

avant : 0 = gauche
           1 =  centré
           2 =  droite

Maintenant, je ne sais plus comment faire !  Sad
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 17 EmptySam 2 Avr 2016 - 14:51

Si ca y est, j' ai vu, mais tu compliques le schmilblick.
Pour affecter à une colonne, il va me falloir mettre çà dans chaque ajout de ligne.
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptySam 2 Avr 2016 - 16:49

Ben non ! Tu l'affectes à l'objet entier (par1%=0) et tu utilises une des fonctions de paramétrage de colonnes. Puis tu établis d'autres paramétrages et tu configures un autre colonne, etc. La construction x*65536+y ne sert que si l'on veut spécifiquement toucher une cellule précise.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 17 EmptyDim 3 Avr 2016 - 18:04

Peut être manquerait il une fonction GridClear...non ?... 
Embarassed
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptyDim 3 Avr 2016 - 18:07

Certes. Ca viendra avec la prochaine mise à jour, avec d'autres fonctions: sauvegarde/restauration du StringGrid entier et/ou des données seulement.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptyLun 4 Avr 2016 - 0:46

KGF.dll V6.27 du 03/04/2016

Nouveautés:
- GridFunction nouveau code 23: effacement des données du tableau entier
- nouveles fonctions: SaveGridToFile et LoadGridFromFile

Modules modifiés:
KGF.dll
KGF.chm

La doc et les sources sources sont à jour.

Le programme de démo ci-après utilise toutes ces nouveautés:
- chargement initial du StringGrid comme d'habitude
- sauvegarde complète du StringGrid, structure et données
- création d'une form avec un autre StringGrid, avec juste le minimum
- restauration complète du fichier de sauvegarde, mais dans le second StringGrid
- effacement des données du StringGrid d'origine
- effacement des données du second StringGrid (la structure persiste !)
- restauration des données uniquement dans le second stringGrid, utilisant la structure existante

Voici le code:
Code:
' test_GridFunction_code_12.bas

' Ce programme teste le code 12 de GridFunction.
' Ce code permet de définir des rectangles dans un GRID
' pour lesquels la sélection est interdite.

label clic, linup

dim res%, l%, c%, RGB%, s$, x%, y%, status%, SG%, SG2%
dim stat$(3)
  stat$(0) = "Normal"
  stat$(1) = "Libre"
  stat$(2) = "Sélectionnable"
  stat$(3) = "Bloqué"

dll_on "KGF.dll"

width 0,690 : height 0,310

edit 98 : ' hide 98
  top 98,300 : on_change 98,clic
height 0,380

memo 99 : hide 99
  item_add 99,"Width=660"
  item_add 99,"Height=260"
  item_add 99,"Rows=10"
  item_add 99,"Columns=10"
  item_add 99,"FixedRows=1"
  item_add 99,"FixedColumns=1"
SG% = dll_call3("CreateStringGrid",handle(0),handle(99),handle(98))


for l%=1 to 10
  for c%=1 to 10
    s$ = str$(c%)+","+str$(l%)
    res% = dll_call4("WriteGridCell",SG%,c%,l%,adr(s$))
  next c%
next l%
s$ = "ABCD"
res% = dll_call4("WriteGridCell",SG%,9,4,adr(s$))
res% = dll_call6("GridFunction",SG%,9,9*65536+5,256+512+8192,0,0-1)
res% = dll_call6("GridFunction",SG%,9,0,0,0,0)

width 0,920
memo 2 : width 2,200 : left 2,660+20  : ' width(1)+20
height 2,260 : ' height(1)
font_name 2,"Courier"
display

button 3 : top 3,300 : left 3,200 : caption 3,"Ligne ^^^" : on_click 3,linup

' première zone interdite totalement
res% = dll_call6("GridFunction",SG%,12,3,2,5,3)

' seconde zone interdite en saisie uniquement
res% = dll_call6("GridFunction",SG%,13,7,4,8,5)

' troisième zone CheckBox à gauche
res% = dll_call6("GridFunction",SG%,15,4,6,4,9)

' quatrième zone CheckBox à droite
res% = dll_call6("GridFunction",SG%,16,6,7,9,8)

' Cinquième zone CheckBox à gauche dans zone interdite
res% = dll_call6("GridFunction",SG%,15,4,2,4,3)

' Sixième zone CheckBox à droite dans zone protégée
res% = dll_call6("GridFunction",SG%,15,7,4,7,5)

' activer les couleurs personnalisées
res% = dll_call6("GridFunction",SG%,8,1,0,0,0)

RGB(255,200,200)
for l%=2 to 3
  for c%=3 to 3 : ' 5
    ' couleur de la première zone interdite
    res% = dll_call6("GridFunction",SG%,2,c%,l%,RGB%,0)
  next c%
next l%

RGB(200,200,255)
for l%=4 to 5
  for c%=7 to 8
    ' couleur de la seconde zone interdite
    res% = dll_call6("GridFunction",SG%,2,c%,l%,RGB%,0)
  next c%
next l%

' chercher la map du grid
s$ = string$(3000," ")
res% = dll_call2("GetGridCellMap",SG%,adr(s$))
text 2,trim$(s$)

' autoriser la saisie
res% = dll_call6("GridFunction",SG%,1,1,0,0,0)

' sauvegarder l'objet
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("SaveGridToFile",SG%,0,adr(s$))

' créer une autre form avec un autre grid
form 300 : width 300,690 : height 300,310 : caption 300,"Grille restaurée"
  top 300,200 : left 300,300
  clear 99
  item_add 99,"Width=100"
  item_add 99,"Height=100"
  item_add 99,"Rows=2"
  item_add 99,"Columns=2"
  item_add 99,"FixedRows=1"
  item_add 99,"FixedColumns=1"
SG2% = dll_call3("CreateStringGrid",handle(300),handle(99),handle(98))

' restaurer l'objet dans un autre grid
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("LoadGridFromFile",SG2%,0,adr(s$))

' effacer le grid d'origine
res% = dll_call6("GridFunction",SG%,23,0,0,0,0)

' effacer le grid copié
res% = dll_call6("GridFunction",SG2%,23,0,0,0,0)

' charger juste les données dans le grid copié (la structure est restée intacte)
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("LoadGridFromFile",SG2%,1,adr(s$))

end

sub RGB(R%,G%,B%) : ' produire une valeur RGB valide
 RGB% = (B%*256+R%)*256+G%
end_sub

clic:
'  caption 0,text$(98)    : ' ici, on a  déjà le numéro de ligne et de colonne dans Edit 98 !
  res% = dll_call6("GridFunction",SG%,14,adr(x%),adr(y%),adr(status%),0)
  s$ = string$(255," ")
  res% = dll_call4("GetGridCellText",SG%,x%,y%,adr(s$))
  caption 0, "click colonne "+str$(x%) +" ligne "+str$(y%)+"  "+stat$(status%+1)+" = "+trim$(s$)
  s$ = string$(255," ")
  res% = dll_call3("GetGridRowText",SG%,y%,adr(s$))
  message "Ligne="+trim$(s$)
  s$ = string$(255," ")
  res% = dll_call3("GetGridColumnText",SG%,x%,adr(s$))
  message "Colonne="+trim$(s$)
  return
 
linup:
  if y%<=1 then return
  res% = dll_call6("GridFunction",SG%,24,0,0,0,0)
  y% = y% - 1
  caption 0, "click colonne "+str$(x%) +" ligne "+str$(y%)+"  "+stat$(status%+1)
  return
 
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptyLun 4 Avr 2016 - 7:34

Bonjour Klaus !

Comme je n'ai pas besoin du grid pour l'instant, je n'ai donc pas testé mais je le ferais le moment venu car toutes ces fonctions semblent très intéressantes comme d'habitude. Wink

J'aime bien le principe des CHECKs sur les cases, ça c'est très bien!
J'ai peut être une idée d'utilisation dans GPP. a voir...  drunken
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 17 EmptyLun 4 Avr 2016 - 17:08

Voilà des fonctions bien intéressantes qui vont sécuriser certaines de mes fonctions
dans GestCompte.

Merci Klaus.
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptyJeu 7 Avr 2016 - 0:41

KGF.dll V6.28 du 06/04/2016

Nouveautés:
- GridFunction nouveau code 24: retourner une chaîne de caractères avec la version du StringGrid et sa date
- refonte totale de l'objet StringGrid, en intégrant tous les paramétrages dans des propriétés de l'objet
(non visible depuis Panoramic, mais techniquement une transformation majeure)

Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sources sont à jour.

La version actuelle nécessite la suppression d'un objet StringGrid présent sur la form 0, si l'on quitte par la croix rouge. Cette suppression se fait par la fonction DeleteStringGrid dans une routine ON_CLOSE de la form 0.

Le programme de démo ci-après montre tout cela (l'affichage de la version de l'objet et la fermeture propre du programme):
Code:
' test_GridFunction_code_12.bas

' Ce programme teste le code 12 de GridFunction.
' Ce code permet de définir des rectangles dans un GRID
' pour lesquels la sélection est interdite.




label clic, linup
label close0
GridConstants()      : ' définir des constantes pour le code fonction de GridFunction

dim res%, l%, c%, RGB%, s$, x%, y%, status%, SG%, SG2%, SGclic%
dim stat$(3)
  stat$(0) = "Normal"
  stat$(1) = "Libre"
  stat$(2) = "Sélectionnable"
  stat$(3) = "Bloqué"

dll_on "KGF.dll"

width 0,690 : height 0,310
  on_close 0,close0

edit 98 : ' hide 98
  top 98,300 : on_change 98,clic
height 0,380

memo 99 : hide 99
  item_add 99,"Width=660"
  item_add 99,"Height=260"
  item_add 99,"Rows=10"
  item_add 99,"Columns=10"
  item_add 99,"FixedRows=1"
  item_add 99,"FixedColumns=1"
SG% = dll_call3("CreateStringGrid",handle(0),handle(99),handle(98))
s$ = string$(255," ")
res% = dll_call6("GridFunction",SG%,GF_GetVersion,adr(s$),0,0,0)
caption 0,"Objet StringGrid "+trim$(s$)


for l%=1 to 10
  for c%=1 to 10
    s$ = str$(c%)+","+str$(l%)
    res% = dll_call4("WriteGridCell",SG%,c%,l%,adr(s$))
  next c%
next l%
s$ = "ABCD"
res% = dll_call4("WriteGridCell",SG%,9,4,adr(s$))
res% = dll_call6("GridFunction",SG%,GF_TextAttributes,9*65536+5,256+512+8192,0,0-1)
res% = dll_call6("GridFunction",SG%,GF_TextAttributes,0,0,0,0)

width 0,920
memo 2 : width 2,200 : left 2,660+20   : ' width(1)+20
height 2,260 : ' height(1)
font_name 2,"Courier"
display

button 3 : top 3,300 : left 3,200 : caption 3,"Ligne ^^^" : on_click 3,linup

' première zone interdite totalement
res% = dll_call6("GridFunction",SG%,GF_SetNonSelRect,3,2,5,3)

' seconde zone interdite en saisie uniquement
res% = dll_call6("GridFunction",SG%,GF_SetNonModRect,7,4,8,5)

' troisième zone CheckBox à gauche
res% = dll_call6("GridFunction",SG%,GF_SetLeftCB,4,6,4,9)

' quatrième zone CheckBox à droite
res% = dll_call6("GridFunction",SG%,GF_SetRightCB,6,7,9,8)

' Cinquième zone CheckBox à gauche dans zone interdite
res% = dll_call6("GridFunction",SG%,GF_SetLeftCB,4,2,4,3)

' Sixième zone CheckBox à droite dans zone protégée
res% = dll_call6("GridFunction",SG%,GF_SetLeftCB,7,4,7,5)

' activer les couleurs personnalisées
res% = dll_call6("GridFunction",SG%,GF_ActivateResetColor,1,0,0,0)

RGB(255,200,200)
for l%=2 to 3
  for c%=3 to 3 : ' 5
    ' couleur de la première zone interdite
    res% = dll_call6("GridFunction",SG%,GF_CellColor,c%,l%,RGB%,0)
  next c%
next l%

RGB(200,200,255)
for l%=4 to 5
  for c%=7 to 8
    ' couleur de la seconde zone interdite
    res% = dll_call6("GridFunction",SG%,GF_CellColor,c%,l%,RGB%,0)
  next c%
next l%

' chercher la map du grid
s$ = string$(3000," ")
res% = dll_call2("GetGridCellMap",SG%,adr(s$))
text 2,trim$(s$)

' autoriser la saisie
res% = dll_call6("GridFunction",SG%,GF_Edit,1,0,0,0)

' sauvegarder l'objet
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("SaveGridToFile",SG%,0,adr(s$))

' créer une autre form avec un autre grid
form 300 : width 300,690 : height 300,310 : caption 300,"Grille restaurée"
  top 300,200 : left 300,300
  clear 99
  item_add 99,"Width=100"
  item_add 99,"Height=100"
  item_add 99,"Rows=2"
  item_add 99,"Columns=2"
  item_add 99,"FixedRows=1"
  item_add 99,"FixedColumns=1"
SG2% = dll_call3("CreateStringGrid",handle(300),handle(99),handle(98))

' restaurer l'objet dans un autre grid
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("LoadGridFromFile",SG2%,0,adr(s$))

' effacer le grid d'origine
res% = dll_call6("GridFunction",SG%,GF_Clear,0,0,0,0)

' effacer le grid copié
res% = dll_call6("GridFunction",SG2%,GF_Clear,0,0,0,0)

' charger juste les données dans le grid copié (la structure est restée intacte)
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("LoadGridFromFile",SG2%,1,adr(s$))

end

sub RGB(R%,G%,B%) : ' produire une valeur RGB valide
 RGB% = (B%*256+R%)*256+G%
end_sub

close0:
'  res% = dll_call1("DeleteStringGrid",SG2%)      : ' <=== optionnel !
  res% = dll_call1("DeleteStringGrid",SG%)      : ' <=== indispensable !
  return

clic:
'  caption 0,text$(98)    : ' ici, on a  déjà le numéro de ligne et de colonne dans Edit 98 !
  s$ = text$(98)
  s$ = mid$(s$,3,len(s$))
  SGclic% = val(left$(s$,instr(s$,"click=")-1))

  res% = dll_call6("GridFunction",SGclic%,GF_GetActiveCell,adr(x%),adr(y%),adr(status%),0)
  s$ = string$(255," ")
  res% = dll_call4("GetGridCellText",SGclic%,x%,y%,adr(s$))
  caption 0, "click colonne "+str$(x%) +" ligne "+str$(y%)+"  "+stat$(status%+1)+" = "+trim$(s$)
  s$ = string$(255," ")
  res% = dll_call3("GetGridRowText",SGclic%,y%,adr(s$))
  message "Ligne="+trim$(s$)
  s$ = string$(255," ")
  res% = dll_call3("GetGridColumnText",SGclic%,x%,adr(s$))
  message "Colonne="+trim$(s$)
  return
  
linup:
  if y%<=1 then return
  res% = dll_call6("GridFunction",SG%,25,0,0,0,0)
  y% = y% - 1
  caption 0, "click colonne "+str$(x%) +" ligne "+str$(y%)+"  "+stat$(status%+1)
  return
  
  
  
' définition de constantes pour le code fonction de GridFunction
sub GridConstants()
  if variable("GF_Edit")=1 then exit_sub
  dim GF_Edit               : GF_Edit                =  1  : ' saisie directe dans le GRID
  dim GF_CellColor          : GF_CellColor           =  2  : ' couleur d'une cellule
  dim GF_RowColor           : GF_RowColor            =  3  : ' couleur d'une ligne
  dim GF_ColColor           : GF_ColColor            =  4  : ' couleur d'une colonne
  dim GF_ActivateColor      : GF_ActivateColor       =  5  : ' activer les couleurs personnalisées
  dim GF_NormalRowColor     : GF_NormalRowColor      =  6  : ' couleur d'une ligne (sans parties fixes)
  dim GF_NormalColColor     : GF_NormalColColor      =  7  : ' couleur d'une colonne (sans parties fixes)
  dim GF_ActivateResetColor : GF_ActivateResetColor  =  8  : ' activer les couleurs personnalisées (effacer liste existante)
  dim GF_TextAttributes     : GF_TextAttributes      =  9  : ' attributs du texte
  dim GF_ClearTextAttrib    : GF_ClearTextAttrib     = 10  : ' effacer tous les attributs pour le GRID
  dim GF_GetDimensions      : GF_GetDimensions       = 11  : ' retourner les dimensions du GRID
  dim GF_SetNonSelRect      : GF_SetNonSelRect       = 12  : ' définir un rectangle intouchable
  dim GF_SetNonModRect      : GF_SetNonModRect       = 13  : ' définir un rectangle non modifiable
  dim GF_GetActiveCell      : GF_GetActiveCell       = 14  : ' retourner les infos de la cellule active
  dim GF_SetLeftCB          : GF_SetLeftCB           = 15  : ' définir un rectangle de CheckBox gauches
  dim GF_SetRightCB         : GF_SetRightCB          = 16  : ' définir un rectangle de CheckBox droites
  dim GF_SetRowHeight       : GF_SetRowHeight        = 17  : ' définit la hauteur de lignes
  dim GF_SetColWidth        : GF_SetColWidth         = 18  : ' définir la largeur de colonnes
  dim GF_InsertRow          : GF_InsertRow           = 19  : ' insérer une ligne
  dim GF_InsertCol          : GF_InsertCol           = 20  : ' insérer une colonne
  dim GF_RemoveRow          : GF_RemoveRow           = 21  : ' supprimer une ligne
  dim GF_RemoveCol          : GF_RemoveCol           = 22  : ' supprimer une colonne
  dim GF_Clear              : GF_Clear               = 23  : ' effacer toutes les données
  dim GF_GetVersion         : GF_GetVersion          = 24  : ' retourner la version dans un string
end_sub


EDIT

Le programme de démo contient maintenant une exemple d'une technique pour rendre le code plus lisible, en particulier au sujet de GridFuunction au a maintenant 24 codes action. On définit une "constante" pour chacun de ces codes, à l'aide d'une SUB qui est appelée en début de programme.

Ce n'est évidemment qu'une suggestion. Chacun peut utiliser cela à son idée: codes fonctions numériques ou définition de "constantes" aux noms personnalisés.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptyJeu 7 Avr 2016 - 12:44

Bonjour Klaus !

Concernant la fonction res% = dll_call5("SendSingleKey",hnd%,65,1,0,0)

Est il possible de l'utilisé dans la fenêtre de Synedit ?
En sachant que le CTRL-C fontionne parfaitement avec les 'vrais touches' du clavier.

J'ai essayé la fonction res% = dll_call5("SendSingleKey",hnd%,65,1,0,0) mais sans résultat. Aurais je (encore...) loupé quelque chose ??

Merci pour ta réponse. Wink

EDIT :

J'ai fais un petit programme de test rapide et ca fonctionne.

Code:
DIM a% , res%

LABEL menu

DLL_ON "C:\Users\ricoh\Documents\Panoramic\GPP\systeme\dll\KGF.dll"

MAIN_MENU 1
SUB_MENU 2 : CAPTION 2,"couper" : PARENT 2,1 : ON_CLICK 2,menu
SUB_MENU 3 : CAPTION 3,"copier" : PARENT 3,1 : ON_CLICK 3,menu
SUB_MENU 4 : CAPTION 4,"coller" : PARENT 4,1 : ON_CLICK 4,menu

EDIT 5 : PARENT 5,0 : FULL_SPACE  5

END

menu:
  a%=HANDLE(5)
  IF NUMBER_CLICK=2 THEN  res% = dll_call5("SendSingleKey",a%,88,1,0,0)
  IF NUMBER_CLICK=3 THEN  res% = dll_call5("SendSingleKey",a%,67,1,0,0)
  IF NUMBER_CLICK=4 THEN  res% = dll_call5("SendSingleKey",a%,86,1,0,0)
RETURN

Est ce donc reellement un probleme avec Synedit ?
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptyJeu 7 Avr 2016 - 15:42

Non, ce n'est pas un problème de Synedit. Regarde à quel objet tu envoies le caractère: c'est l'objet 5, donc l'objet EDIT caché qui est supposé recevoir les évènements déclenchés par le Synedit... Donc, il est normal que le Synedit ne réagisse pas.

Regarde SyneditFunction - un des codes action permet de récupérer le handle du Synedit. Et en utilisant la valeur retournée, ça devrait marcher.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptyJeu 7 Avr 2016 - 16:23

Ok Klaus ! Je viens de comprendre...

Là je n'ai pas trop de temps mais je regarde d'ici ce soir.
Encore merci pour ton message Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptyJeu 7 Avr 2016 - 18:06

Ça y est j'ai compris Exclamation
Je suis en train d’implanter toutes les fonctions basiques sur le texte (COPIER-COLLER - RECHERCHER-REMPLACER...)

En fait, j'avais complètement zappé le principe du handle dans la fonction correspondante. geek
Merci pour ton aide Klaus. sunny
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptyJeu 7 Avr 2016 - 21:25

Smile Smile Smile Smile De rien. C'est toujours un plaisir !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptyJeu 7 Avr 2016 - 21:41

KGF.dll V6.29 du 07/04/2016

Nouveautés:
- DeleteStringGrid: si l'unique paramètre grid% est passé comme 0, alors on supprime tous les StringGrids existants
- StringGrid en général: correction du problème de violation de mémoire sortie par la croix rouge


Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sources sont à jour.

La petite modif de la fonction DeleteStringGrid est juste une opération "cosmétique" pour une plus grande facilité de programmation. Mais la correction de la violation de mémoire est une modification majeure. En effet, si un ou plusieurs StringGrid étaient placés sur la form 0 ou un objet de type container quelconque, sur la form 0, alors il fallait faire une routine ON_CLOSE pour la form 0 et supprimer tous ces StringGrid dans cette routine. Tout cela, bien que restant valide et possible, est maintenant obsolète. On peut maintenant terminer un programme dans n'importe quelle condition, par la croix rouge, et il n'y aura plus de problème.

Cela porte l'objet StringGrid à la version V2 du 07/04/2016. Voici le programme de démo avec cette simplification:
Code:
' test_GridFunction_code_12.bas

' Ce programme teste le code 12 de GridFunction.
' Ce code permet de définir des rectangles dans un GRID
' pour lesquels la sélection est interdite.




label clic

GridConstants()      : ' définir des constantes pour le code fonction de GridFunction

dim res%, l%, c%, RGB%, s$, x%, y%, status%, SG%, SG2%, SGclic%
dim stat$(3)
  stat$(0) = "Normal"
  stat$(1) = "Libre"
  stat$(2) = "Sélectionnable"
  stat$(3) = "Bloqué"

dll_on "KGF.dll"

width 0,690 : height 0,310

edit 98 : ' hide 98
  top 98,300 : on_change 98,clic
height 0,380

memo 99 : hide 99
  item_add 99,"Width=660"
  item_add 99,"Height=260"
  item_add 99,"Rows=10"
  item_add 99,"Columns=10"
  item_add 99,"FixedRows=1"
  item_add 99,"FixedColumns=1"
SG% = dll_call3("CreateStringGrid",handle(0),handle(99),handle(98))
s$ = string$(255," ")
res% = dll_call6("GridFunction",SG%,GF_GetVersion,adr(s$),0,0,0)
caption 0,"Objet StringGrid "+trim$(s$)


for l%=1 to 10
  for c%=1 to 10
    s$ = str$(c%)+","+str$(l%)
    res% = dll_call4("WriteGridCell",SG%,c%,l%,adr(s$))
  next c%
next l%
s$ = "ABCD"
res% = dll_call4("WriteGridCell",SG%,9,4,adr(s$))
res% = dll_call6("GridFunction",SG%,GF_TextAttributes,9*65536+5,256+512+8192,0,0-1)
res% = dll_call6("GridFunction",SG%,GF_TextAttributes,0,0,0,0)

width 0,920
memo 2 : width 2,200 : left 2,660+20  : ' width(1)+20
height 2,260 : ' height(1)
font_name 2,"Courier"
display

' première zone interdite totalement
res% = dll_call6("GridFunction",SG%,GF_SetNonSelRect,3,2,5,3)

' seconde zone interdite en saisie uniquement
res% = dll_call6("GridFunction",SG%,GF_SetNonModRect,7,4,8,5)

' troisième zone CheckBox à gauche
res% = dll_call6("GridFunction",SG%,GF_SetLeftCB,4,6,4,9)

' quatrième zone CheckBox à droite
res% = dll_call6("GridFunction",SG%,GF_SetRightCB,6,7,9,8)

' Cinquième zone CheckBox à gauche dans zone interdite
res% = dll_call6("GridFunction",SG%,GF_SetLeftCB,4,2,4,3)

' Sixième zone CheckBox à droite dans zone protégée
res% = dll_call6("GridFunction",SG%,GF_SetLeftCB,7,4,7,5)

' activer les couleurs personnalisées
res% = dll_call6("GridFunction",SG%,GF_ActivateResetColor,1,0,0,0)

RGB(255,200,200)
for l%=2 to 3
  for c%=3 to 3 : ' 5
    ' couleur de la première zone interdite
    res% = dll_call6("GridFunction",SG%,GF_CellColor,c%,l%,RGB%,0)
  next c%
next l%

RGB(200,200,255)
for l%=4 to 5
  for c%=7 to 8
    ' couleur de la seconde zone interdite
    res% = dll_call6("GridFunction",SG%,GF_CellColor,c%,l%,RGB%,0)
  next c%
next l%

' chercher la map du grid
s$ = string$(3000," ")
res% = dll_call2("GetGridCellMap",SG%,adr(s$))
text 2,trim$(s$)

' autoriser la saisie
res% = dll_call6("GridFunction",SG%,GF_Edit,1,0,0,0)

' sauvegarder l'objet
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("SaveGridToFile",SG%,0,adr(s$))

' créer une autre form avec un autre grid
form 300 : width 300,690 : height 300,310 : caption 300,"Grille restaurée"
  top 300,200 : left 300,300
  clear 99
  item_add 99,"Width=100"
  item_add 99,"Height=100"
  item_add 99,"Rows=2"
  item_add 99,"Columns=2"
  item_add 99,"FixedRows=1"
  item_add 99,"FixedColumns=1"
SG2% = dll_call3("CreateStringGrid",handle(300),handle(99),handle(98))

' restaurer l'objet dans un autre grid
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("LoadGridFromFile",SG2%,0,adr(s$))

' effacer le grid d'origine
res% = dll_call6("GridFunction",SG%,GF_Clear,0,0,0,0)

' effacer le grid copié
res% = dll_call6("GridFunction",SG2%,GF_Clear,0,0,0,0)

' charger juste les données dans le grid copié (la structure est restée intacte)
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("LoadGridFromFile",SG2%,1,adr(s$))

end

sub RGB(R%,G%,B%) : ' produire une valeur RGB valide
 RGB% = (B%*256+R%)*256+G%
end_sub

clic:
'  caption 0,text$(98)    : ' ici, on a  déjà le numéro de ligne et de colonne dans Edit 98 !
  s$ = text$(98)
  s$ = mid$(s$,3,len(s$))
  SGclic% = val(left$(s$,instr(s$,"click=")-1))

  res% = dll_call6("GridFunction",SGclic%,GF_GetActiveCell,adr(x%),adr(y%),adr(status%),0)
  s$ = string$(255," ")
  res% = dll_call4("GetGridCellText",SGclic%,x%,y%,adr(s$))
  caption 0, "click colonne "+str$(x%) +" ligne "+str$(y%)+"  "+stat$(status%+1)+" = "+trim$(s$)
  s$ = string$(255," ")
  res% = dll_call3("GetGridRowText",SGclic%,y%,adr(s$))
  message "Ligne="+trim$(s$)
  s$ = string$(255," ")
  res% = dll_call3("GetGridColumnText",SGclic%,x%,adr(s$))
  message "Colonne="+trim$(s$)
  return
 
 
 
' définition de constantes pour le code fonction de GridFunction
sub GridConstants()
  if variable("GF_Edit")=1 then exit_sub
  dim GF_Edit              : GF_Edit                =  1  : ' saisie directe dans le GRID
  dim GF_CellColor          : GF_CellColor          =  2  : ' couleur d'une cellule
  dim GF_RowColor          : GF_RowColor            =  3  : ' couleur d'une ligne
  dim GF_ColColor          : GF_ColColor            =  4  : ' couleur d'une colonne
  dim GF_ActivateColor      : GF_ActivateColor      =  5  : ' activer les couleurs personnalisées
  dim GF_NormalRowColor    : GF_NormalRowColor      =  6  : ' couleur d'une ligne (sans parties fixes)
  dim GF_NormalColColor    : GF_NormalColColor      =  7  : ' couleur d'une colonne (sans parties fixes)
  dim GF_ActivateResetColor : GF_ActivateResetColor  =  8  : ' activer les couleurs personnalisées (effacer liste existante)
  dim GF_TextAttributes    : GF_TextAttributes      =  9  : ' attributs du texte
  dim GF_ClearTextAttrib    : GF_ClearTextAttrib    = 10  : ' effacer tous les attributs pour le GRID
  dim GF_GetDimensions      : GF_GetDimensions      = 11  : ' retourner les dimensions du GRID
  dim GF_SetNonSelRect      : GF_SetNonSelRect      = 12  : ' définir un rectangle intouchable
  dim GF_SetNonModRect      : GF_SetNonModRect      = 13  : ' définir un rectangle non modifiable
  dim GF_GetActiveCell      : GF_GetActiveCell      = 14  : ' retourner les infos de la cellule active
  dim GF_SetLeftCB          : GF_SetLeftCB          = 15  : ' définir un rectangle de CheckBox gauches
  dim GF_SetRightCB        : GF_SetRightCB          = 16  : ' définir un rectangle de CheckBox droites
  dim GF_SetRowHeight      : GF_SetRowHeight        = 17  : ' définit la hauteur de lignes
  dim GF_SetColWidth        : GF_SetColWidth        = 18  : ' définir la largeur de colonnes
  dim GF_InsertRow          : GF_InsertRow          = 19  : ' insérer une ligne
  dim GF_InsertCol          : GF_InsertCol          = 20  : ' insérer une colonne
  dim GF_RemoveRow          : GF_RemoveRow          = 21  : ' supprimer une ligne
  dim GF_RemoveCol          : GF_RemoveCol          = 22  : ' supprimer une colonne
  dim GF_Clear              : GF_Clear              = 23  : ' effacer toutes les données
  dim GF_GetVersion        : GF_GetVersion          = 24  : ' retourner la version dans un string
end_sub

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptySam 9 Avr 2016 - 17:00

KGF.dll V6.30 du 09/04/2016

Nouveautés:
- GridFunction: nouveau code 25: définir un rectangle de ProgressBars

Modules modifiés:
KGF.dll
KGF.chm


La doc et les sources sources sont à jour.

Ce nouveau code permet de définir un  rectangle de cellules comme ProgressBars, de la même manière que pour les CheckBox. Le contenu des cellules concernées doit être une chaîne de caractères numérique, représentant une valeur entre 0 et 100. La chaîne vide ou une chaîne invalide sont traitées comme une valeur zéro. L'image de la cellule sera remplacée par une ProgressBar ainsi que l'affichage de la valeur du pourcentage.

Dans le programme de démo qui suit, les cellules (6,10) et (7,10) sont définies comme un rectangle de ProgressBars, avec les valeurs 10 et 80, respectivement:
Code:
' test_GridFunction_code_12.bas

' Ce programme teste le code 12 de GridFunction.
' Ce code permet de définir des rectangles dans un GRID
' pour lesquels la sélection est interdite.




label clic

GridConstants()      : ' définir des constantes pour le code fonction de GridFunction

dim res%, l%, c%, RGB%, s$, x%, y%, status%, SG%, SG2%, SGclic%
dim stat$(3)
  stat$(0) = "Normal"
  stat$(1) = "Libre"
  stat$(2) = "Sélectionnable"
  stat$(3) = "Bloqué"

dll_on "KGF.dll"

width 0,690 : height 0,310

edit 98 : ' hide 98
  top 98,300 : on_change 98,clic
height 0,380

memo 99 : hide 99
  item_add 99,"Width=660"
  item_add 99,"Height=260"
  item_add 99,"Rows=10"
  item_add 99,"Columns=10"
  item_add 99,"FixedRows=1"
  item_add 99,"FixedColumns=1"
SG% = dll_call3("CreateStringGrid",handle(0),handle(99),handle(98))
s$ = string$(255," ")
res% = dll_call6("GridFunction",SG%,GF_GetVersion,adr(s$),0,0,0)
caption 0,"Objet StringGrid "+trim$(s$)


for l%=1 to 10
  for c%=1 to 10
    s$ = str$(c%)+","+str$(l%)
    res% = dll_call4("WriteGridCell",SG%,c%,l%,adr(s$))
  next c%
next l%
s$ = "ABCD"
res% = dll_call4("WriteGridCell",SG%,9,4,adr(s$))
res% = dll_call6("GridFunction",SG%,GF_TextAttributes,9*65536+5,256+512+8192,0,0-1)
res% = dll_call6("GridFunction",SG%,GF_TextAttributes,0,0,0,0)

s$ = "10"
res% = dll_call4("WriteGridCell",SG%,6,10,adr(s$))
s$ = "80"
res% = dll_call4("WriteGridCell",SG%,7,10,adr(s$))

width 0,920
memo 2 : width 2,200 : left 2,660+20  : ' width(1)+20
height 2,260 : ' height(1)
font_name 2,"Courier"
display

' première zone interdite totalement
res% = dll_call6("GridFunction",SG%,GF_SetNonSelRect,3,2,5,3)

' seconde zone interdite en saisie uniquement
res% = dll_call6("GridFunction",SG%,GF_SetNonModRect,7,4,8,5)

' troisième zone CheckBox à gauche
res% = dll_call6("GridFunction",SG%,GF_SetLeftCB,4,6,4,9)

' quatrième zone CheckBox à droite
res% = dll_call6("GridFunction",SG%,GF_SetRightCB,6,7,9,8)

' Cinquième zone CheckBox à gauche dans zone interdite
res% = dll_call6("GridFunction",SG%,GF_SetLeftCB,4,2,4,3)

' Sixième zone CheckBox à droite dans zone protégée
res% = dll_call6("GridFunction",SG%,GF_SetLeftCB,7,4,7,5)

' Septième zone ProgressBar
res% = dll_call6("GridFunction",SG%,GF_SetProgressBar,6,10,7,10)

' activer les couleurs personnalisées
res% = dll_call6("GridFunction",SG%,GF_ActivateResetColor,1,0,0,0)

RGB(255,200,200)
for l%=2 to 3
  for c%=3 to 3 : ' 5
    ' couleur de la première zone interdite
    res% = dll_call6("GridFunction",SG%,GF_CellColor,c%,l%,RGB%,0)
  next c%
next l%

RGB(200,200,255)
for l%=4 to 5
  for c%=7 to 8
    ' couleur de la seconde zone interdite
    res% = dll_call6("GridFunction",SG%,GF_CellColor,c%,l%,RGB%,0)
  next c%
next l%

' chercher la map du grid
s$ = string$(3000," ")
res% = dll_call2("GetGridCellMap",SG%,adr(s$))
text 2,trim$(s$)

' autoriser la saisie
res% = dll_call6("GridFunction",SG%,GF_Edit,1,0,0,0)

' sauvegarder l'objet
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("SaveGridToFile",SG%,0,adr(s$))

' créer une autre form avec un autre grid
form 300 : width 300,690 : height 300,310 : caption 300,"Grille restaurée"
  top 300,200 : left 300,300
  clear 99
  item_add 99,"Width=100"
  item_add 99,"Height=100"
  item_add 99,"Rows=2"
  item_add 99,"Columns=2"
  item_add 99,"FixedRows=1"
  item_add 99,"FixedColumns=1"
SG2% = dll_call3("CreateStringGrid",handle(300),handle(99),handle(98))

' restaurer l'objet dans un autre grid
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("LoadGridFromFile",SG2%,0,adr(s$))

' effacer le grid d'origine
res% = dll_call6("GridFunction",SG%,GF_Clear,0,0,0,0)

' effacer le grid copié
res% = dll_call6("GridFunction",SG2%,GF_Clear,0,0,0,0)

' charger juste les données dans le grid copié (la structure est restée intacte)
s$ = "Sauvegarde_StringGrid.txt"
res% = dll_call3("LoadGridFromFile",SG2%,1,adr(s$))

end

sub RGB(R%,G%,B%) : ' produire une valeur RGB valide
 RGB% = (B%*256+R%)*256+G%
end_sub

clic:
'  caption 0,text$(98)    : ' ici, on a  déjà le numéro de ligne et de colonne dans Edit 98 !
  s$ = text$(98)
  s$ = mid$(s$,3,len(s$))
  SGclic% = val(left$(s$,instr(s$,"click=")-1))

  res% = dll_call6("GridFunction",SGclic%,GF_GetActiveCell,adr(x%),adr(y%),adr(status%),0)
  s$ = string$(255," ")
  res% = dll_call4("GetGridCellText",SGclic%,x%,y%,adr(s$))
  caption 0, "click colonne "+str$(x%) +" ligne "+str$(y%)+"  "+stat$(status%+1)+" = "+trim$(s$)
  s$ = string$(255," ")
  res% = dll_call3("GetGridRowText",SGclic%,y%,adr(s$))
  message "Ligne="+trim$(s$)
  s$ = string$(255," ")
  res% = dll_call3("GetGridColumnText",SGclic%,x%,adr(s$))
  message "Colonne="+trim$(s$)
  return
 
' définition de constantes pour le code fonction de GridFunction
sub GridConstants()
  if variable("GF_Edit")=1 then exit_sub
  dim GF_Edit              : GF_Edit                =  1  : ' saisie directe dans le GRID
  dim GF_CellColor          : GF_CellColor          =  2  : ' couleur d'une cellule
  dim GF_RowColor          : GF_RowColor            =  3  : ' couleur d'une ligne
  dim GF_ColColor          : GF_ColColor            =  4  : ' couleur d'une colonne
  dim GF_ActivateColor      : GF_ActivateColor      =  5  : ' activer les couleurs personnalisées
  dim GF_NormalRowColor    : GF_NormalRowColor      =  6  : ' couleur d'une ligne (sans parties fixes)
  dim GF_NormalColColor    : GF_NormalColColor      =  7  : ' couleur d'une colonne (sans parties fixes)
  dim GF_ActivateResetColor : GF_ActivateResetColor  =  8  : ' activer les couleurs personnalisées (effacer liste existante)
  dim GF_TextAttributes    : GF_TextAttributes      =  9  : ' attributs du texte
  dim GF_ClearTextAttrib    : GF_ClearTextAttrib    = 10  : ' effacer tous les attributs pour le GRID
  dim GF_GetDimensions      : GF_GetDimensions      = 11  : ' retourner les dimensions du GRID
  dim GF_SetNonSelRect      : GF_SetNonSelRect      = 12  : ' définir un rectangle intouchable
  dim GF_SetNonModRect      : GF_SetNonModRect      = 13  : ' définir un rectangle non modifiable
  dim GF_GetActiveCell      : GF_GetActiveCell      = 14  : ' retourner les infos de la cellule active
  dim GF_SetLeftCB          : GF_SetLeftCB          = 15  : ' définir un rectangle de CheckBox gauches
  dim GF_SetRightCB        : GF_SetRightCB          = 16  : ' définir un rectangle de CheckBox droites
  dim GF_SetRowHeight      : GF_SetRowHeight        = 17  : ' définit la hauteur de lignes
  dim GF_SetColWidth        : GF_SetColWidth        = 18  : ' définir la largeur de colonnes
  dim GF_InsertRow          : GF_InsertRow          = 19  : ' insérer une ligne
  dim GF_InsertCol          : GF_InsertCol          = 20  : ' insérer une colonne
  dim GF_RemoveRow          : GF_RemoveRow          = 21  : ' supprimer une ligne
  dim GF_RemoveCol          : GF_RemoveCol          = 22  : ' supprimer une colonne
  dim GF_Clear              : GF_Clear              = 23  : ' effacer toutes les données
  dim GF_GetVersion        : GF_GetVersion          = 24  : ' retourner la version dans un string
  dim GF_SetProgressBar    : GF_SetProgressBar      = 25  : ' définir un rectangle de ProgressBar
end_sub

L'effet est assez sympa...


Dernière édition par Klaus le Dim 10 Avr 2016 - 12:13, édité 2 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 17 EmptySam 9 Avr 2016 - 17:57

La doc *.chm du webdav est toujours celle du 07/04...
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptySam 9 Avr 2016 - 18:02

Merci, Ygeronimi. C'est corrigé.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 17 EmptySam 9 Avr 2016 - 18:06

KGF_dll - nouvelles versions - Page 17 Captur16

Si je clique sur une case 0%
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 EmptySam 9 Avr 2016 - 18:18

Je vais regarder cela.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





KGF_dll - nouvelles versions - Page 17 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 17 Empty

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 17 sur 40Aller à la page : Précédent  1 ... 10 ... 16, 17, 18 ... 28 ... 40  Suivant
 Sujets similaires
-
» Nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: