Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| KGF_dll - nouvelles versions | |
|
+8JL35 Marc papydall Jicehel Yannick pascal10000 Minibug Klaus 12 participants | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 31 Mar 2016 - 15:01 | |
| Une petite question avant un gros bug...
Si je dois créer 12 grids Puis je me servir du même memo ?
Le retour dans l' Edit est apparemment composé de "SG"+handle(objet)+Action$=column%+","+Row% donc il est réutilisable. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 31 Mar 2016 - 15:13 | |
| Oui... mais...
C'est conçu pour qu'on puisse créer un nombre "illimité" de ces objets. Mais je sais que techniquement, j'ai encore un endroit qui va s'appliquer globalement sur tous les StingGrids créés, ce qui n'est pas l'idée derrière cette cobstruction. Il faut encore que je lève cet obstacle. Mais à partir de là, oui, pas de problème. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 31 Mar 2016 - 15:22 | |
| J' ai voulu créer un tab avec 12 feuilles contenant chacune un objet grid et...rien. - Code:
-
variables()
dim kgf$ kgf$ = "C:\KGF\KGF.dll" dll_on kgf$
label clic
main_menu mm% sub_menu sm1% : parent sm1%,mm% : Caption sm1%,"Ajouter" : on_click sm1%,clic sub_menu sm2% : parent sm2%,mm% : Caption sm2%,"Supprimer" : on_click sm2%,clic
memo mem% full_space mem% bar_both mem% height mem%,height(mem%)-30
edit SGedit% top SGedit%,height(mem%)+2
FormF2() end ' ------------------------------------------------------------------------------ sub variables() dim_local i% dim no% dim mm% : no%=no%+1 : mm%=no% dim sm1%: no%=no%+1 : sm1%=no% dim sm2%: no%=no%+1 : sm2%=no% dim mem%: no%=no%+1 : mem%=no% dim f2% : no%=no%+1 : f2%=no% dim Pan%: no%=no%+1 : Pan%=no% dim Feuille%(12) for i%=1 to 12 : no%=no%+1 : feuille%(i%)=no% : next i% dim SG%(12) dim SGedit% : no%=no%+1 : SGedit%=no% end_sub
sub FormF2() dim_local h%,w%,i%,res% if object_exists(F2%)=1 show F2% else form F2% height F2%,500 width F2%,800 left F2%,width(0) clear mem% item_add mem%,"Width="+str$(w%) item_add mem%,"Height="+str$(h%-30) item_add mem%,"Rows=2" item_add mem%,"Columns=10" item_add mem%,"FixedRows=1" item_add mem%,"FixedColumns=0" container_tab Pan% parent Pan%,F2% full_space Pan% h%=height(Pan%) w%=width(Pan%)
for i%=1 to 12 tab feuille%(i%) parent feuille%(i%),pan% height feuille%(i%),h%-30 width feuille%(i%),w% SG%(i%) = dll_call3("CreateStringGrid",handle(feuille%(i%)),handle(mem%),handle(SGedit%)) next i% end_if end_sub
clic: if number_click = sm1% AddRowToGrid(SG%) return end_if if number_click = sm2% DelRowFromGrid(SG%) return end_if return
sub AddRowToGrid(obj%) dim_local res% res% = DLL_call6("GridFunction",obj%,19,0,0,0,0) end_sub
sub DelRowFromGrid(obj%) dim_local res% res% = DLL_call6("GridFunction",obj%,21,3,0,0,0) end_sub
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 31 Mar 2016 - 15:44 | |
| Apparemment, les objets sont créés mais ne s' affichent pas. - Code:
-
dim no%,i%,h%,w%,a$ dim mm% : no%=no%+1 : mm%=no% dim sm1%: no%=no%+1 : sm1%=no% dim sm2%: no%=no%+1 : sm2%=no% dim mem%: no%=no%+1 : mem%=no% dim f2% : no%=no%+1 : f2%=no% dim Pan%: no%=no%+1 : Pan%=no% dim Feuille%(12) for i%=1 to 12 : no%=no%+1 : feuille%(i%)=no% : next i% dim SG%(12) dim SGedit% : no%=no%+1 : SGedit%=no% dim kgf$ kgf$ = "C:\KGF\KGF.dll" dll_on kgf$
label clic
height 0,500 width 0,800
main_menu mm% sub_menu sm1% : parent sm1%,mm% : Caption sm1%,"Ajouter" : on_click sm1%,clic sub_menu sm2% : parent sm2%,mm% : Caption sm2%,"Supprimer" : on_click sm2%,clic
memo mem% full_space mem% bar_both mem% height mem%,height(mem%)-30 hide mem%
clear mem% item_add mem%,"Width="+str$(w%) item_add mem%,"Height="+str$(h%-30) item_add mem%,"Rows=2" item_add mem%,"Columns=10" item_add mem%,"FixedRows=1" item_add mem%,"FixedColumns=0"
edit SGedit% top SGedit%,height(mem%)+2
container_tab Pan% full_space Pan% h%=height(Pan%) w%=width(Pan%)
for i%=1 to 12 tab feuille%(i%) parent feuille%(i%),pan% height feuille%(i%),h%-30 width feuille%(i%),w% caption feuille%(i%),"Feuil N°: "+str$(i%) SG%(i%) = dll_call3("CreateStringGrid",handle(feuille%(i%)),handle(mem%),handle(SGedit%)) a$ = a$+"String Grid : "+str$(SG%(i%))+chr$(13) next i%
message a$
end ' ------------------------------------------------------------------------------
clic: if number_click = sm1% AddRowToGrid(SG%) return end_if if number_click = sm2% DelRowFromGrid(SG%) return end_if return
sub AddRowToGrid(obj%) dim_local res% res% = DLL_call6("GridFunction",obj%,19,0,0,0,0) end_sub
sub DelRowFromGrid(obj%) dim_local res% res% = DLL_call6("GridFunction",obj%,21,3,0,0,0) end_sub
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 31 Mar 2016 - 15:48 | |
| Essaie déjà avec une seule feulle. Et meux, un seul grid directement sur une form, sans feuille. Et regarde si tu vois la grille apparaître.
Dans mon post ci-dessus, j'avais bien dit que pour le moment, il y a un problème avec des grilles multiples et que je suis en train de le résoudre. Non ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 31 Mar 2016 - 15:55 | |
| Aïe, c' est un post qui a du m' échapper. Dans le cas d' une grille sur un Form simple, il n' y a pas de souci. D' où le fait de vouloir compliquer la tâche... Non, en fait, je faisais des essais pour voir si je pouvais l' intégrer et comment l' intégrer dans GestCompte. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 31 Mar 2016 - 16:03 | |
| C'est un peu trop tôt.
Mais tu peux déjà essayer d'inclure un seul exemplaire dans une fiche. Voir si ça marche, au lieu d'être simplement dans une form... ça devrait, tout au moins. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 31 Mar 2016 - 16:16 | |
| Apparement c' est avec Tab que cela coince : 1 seul grid dans le tab 1, pas d' affichage - Code:
-
dim no%,i%,h%,w%,a$ dim mm% : no%=no%+1 : mm%=no% dim sm1%: no%=no%+1 : sm1%=no% dim sm2%: no%=no%+1 : sm2%=no% dim mem%: no%=no%+1 : mem%=no% dim f2% : no%=no%+1 : f2%=no% dim Pan%: no%=no%+1 : Pan%=no% dim Feuille%(12) for i%=1 to 12 : no%=no%+1 : feuille%(i%)=no% : next i% dim SG% dim SGedit% : no%=no%+1 : SGedit%=no% dim kgf$ kgf$ = "C:\KGF\KGF.dll" dll_on kgf$
label clic
height 0,500 width 0,800
main_menu mm% sub_menu sm1% : parent sm1%,mm% : Caption sm1%,"Ajouter" : on_click sm1%,clic sub_menu sm2% : parent sm2%,mm% : Caption sm2%,"Supprimer" : on_click sm2%,clic
memo mem% full_space mem% bar_both mem% height mem%,height(mem%)-30 hide mem%
clear mem% item_add mem%,"Width="+str$(w%) item_add mem%,"Height="+str$(h%-30) item_add mem%,"Rows=2" item_add mem%,"Columns=10" item_add mem%,"FixedRows=1" item_add mem%,"FixedColumns=0"
edit SGedit% top SGedit%,height(mem%)+2
container_tab Pan% full_space Pan% h%=height(Pan%) w%=width(Pan%)
for i%=1 to 12 tab feuille%(i%) parent feuille%(i%),pan% height feuille%(i%),h%-30 width feuille%(i%),w% caption feuille%(i%),"Feuil N°: "+str$(i%) next i%
SG% = dll_call3("CreateStringGrid",handle(feuille%(1)),handle(mem%),handle(SGedit%)) a$ = a$+"String Grid : "+str$(SG%)+chr$(13)
message "Handle Tab 1 : "+str$(handle(feuille%(1)))+chr$(13)+a$
end ' ------------------------------------------------------------------------------
clic: if number_click = sm1% AddRowToGrid(SG%) return end_if if number_click = sm2% DelRowFromGrid(SG%) return end_if return
sub AddRowToGrid(obj%) dim_local res% res% = DLL_call6("GridFunction",obj%,19,0,0,0,0) end_sub
sub DelRowFromGrid(obj%) dim_local res% res% = DLL_call6("GridFunction",obj%,21,3,0,0,0) end_sub
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 31 Mar 2016 - 17:52 | |
| MDR... C'est normal ! Tu lui demandes de créer un StringGrid avec une largeur de 0 pixels et une hauteur de 0 pixels ! Et c'est ce qu'il fait... En fait, ce sont tes variables w% et h% qui sont charges après avoir été utilisées pour créer le mémo de commande. Essaie plutôt comme ceci: - Code:
-
dim no%,i%,h%,w%,a$ dim mm% : no%=no%+1 : mm%=no% dim sm1%: no%=no%+1 : sm1%=no% dim sm2%: no%=no%+1 : sm2%=no% dim mem%: no%=no%+1 : mem%=no% dim f2% : no%=no%+1 : f2%=no% dim Pan%: no%=no%+1 : Pan%=no% dim Feuille%(12) for i%=1 to 12 : no%=no%+1 : feuille%(i%)=no% : next i% dim SG% dim SGedit% : no%=no%+1 : SGedit%=no% dim kgf$ kgf$ = "KGF.dll" dll_on kgf$
label clic
height 0,500 width 0,800
main_menu mm% sub_menu sm1% : parent sm1%,mm% : Caption sm1%,"Ajouter" : on_click sm1%,clic sub_menu sm2% : parent sm2%,mm% : Caption sm2%,"Supprimer" : on_click sm2%,clic
memo mem% full_space mem% bar_both mem% height mem%,height(mem%)-30 hide mem%
edit SGedit% top SGedit%,height(mem%)+2
container_tab Pan% full_space Pan% h%=height(Pan%) w%=width(Pan%)
clear mem% item_add mem%,"Width="+str$(w%) item_add mem%,"Height="+str$(h%-30) item_add mem%,"Rows=2" item_add mem%,"Columns=10" item_add mem%,"FixedRows=1" item_add mem%,"FixedColumns=0"
for i%=1 to 12 tab feuille%(i%) parent feuille%(i%),pan% height feuille%(i%),h%-30 width feuille%(i%),w% caption feuille%(i%),"Feuil N°: "+str$(i%) next i%
SG% = dll_call3("CreateStringGrid",handle(feuille%(1)),handle(mem%),handle(SGedit%)) a$ = a$+"String Grid : "+str$(SG%)+chr$(13)
message "Handle Tab 1 : "+str$(handle(feuille%(1)))+chr$(13)+a$
end ' ------------------------------------------------------------------------------
clic: if number_click = sm1% AddRowToGrid(SG%) return end_if if number_click = sm2% DelRowFromGrid(SG%) return end_if return
sub AddRowToGrid(obj%) dim_local res% res% = DLL_call6("GridFunction",obj%,19,0,0,0,0) end_sub
sub DelRowFromGrid(obj%) dim_local res% res% = DLL_call6("GridFunction",obj%,21,3,0,0,0) end_sub | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 31 Mar 2016 - 17:55 | |
| KGF.dll V6.23 du 31/03/2016
Nouveautés: - StringGrid: rendre possible l'utilisation simultanée de plusieurs StringGrid
Modules modifiés: KGF.dll KGF.chm
La doc est inchangée. Les sources sont à jour. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 31 Mar 2016 - 18:03 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 31 Mar 2016 - 18:24 | |
| - Citation :
- Dans la doc, j' ai vu la création d' un checkbox.
As tu prévu, de pouvoir le cocher par programme (remplissage automatique du grid) et de pouvoir récupérer son état ( coché/non coché) ? Cela se fait par le contenu de la cellule concerné. Si elle est représentée comme une CheckBox, le premier caractère est obligatoirement un "0" ou un "1" (qu'est-ce que ça pourrait bien vouloir signifier ?). Et en fait, de façon interne, on ajoute un "²" devant, pour bien signifier qu'il s'agit du texte pour un CheckBox. Donc, si tu envoies "²1Une option" dans une telle cellule, tu obtiens l'image d'une CheckBox cochée, à côté du texte "Une option". Tu en déduis ce qu'il faut faire pour décocher la CheckBox... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 31 Mar 2016 - 19:48 | |
| Ok Klaus.
Petite apport pour la doc. Il est écris .. sub RGB(R%,G%,B%) : ' produire une valeur RGB valide RGB% = (B%*256+R%)*256+G% end_sub
à corriger par : .. sub RGB(R%,G%,B%) : ' produire une valeur RGB valide if variable("RGB%")=0 then dim RGB% RGB% = (B%*256+G%)*256+R% end_sub | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 31 Mar 2016 - 19:56 | |
| - Ygeronimi a écrit:
- Je crois que c' est le coup de tel pour un entretien d' embauche demain qui a du me perturber.
Je te dis M.... ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 31 Mar 2016 - 21:16 | |
| J'ai fait la petite modif de la doc, Ygeronimi. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 31 Mar 2016 - 23:22 | |
| @ Jean Claude, Merci. @ Klaus, Par hasard, tu n' aurais pas une fonction "GridRead",SG%,C%,L% dans ton escarcelle ?... J' ai essayé de me servir de GetSelectedGridIndexes suivit de GetSelectedGridText mais sans succès. - Code:
-
sub POINTAGE_ENRGT(grd%,lng%) dim_local etat$,res%,m$,txt$,L%,x1%,x2% L% = lng% x1% = 1 x2% = 9 message str$(l%)+chr$(13)+str$(grd%) res% = DLL_call5("GetSelectedGridIndexes",grd%,adr(x1%),adr(L%),adr(x2%),adr(L%)) message str$(res%) txt$ =string$(2000," ") res% = DLL_call2("GetSelectedGridText",grd%,adr(txt$)) txt$ = trim$(txt$) message txt$ end_sub Lng%=7 | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 1 Avr 2016 - 0:30 | |
| Je vois... Ca manque parce que je suis parti de fonctions "extension" au GRID de Panoramic, et là, il y avait une fonction native de lecture. Ce n'est évidemment plus vrai maintenant. Donc, je vais faire ça tout de suite. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 1 Avr 2016 - 1:06 | |
| KGF.dll V6.24 du 01/04/2016Nouveautés: - nouvelle fonction GetGridCellTextModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Voici le programme de démo qui utilise cette nouvelle fonction pour afficher, entre autres, le contenu de la cellule sélectionné lors d'un clic dans une cellule: - 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% 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%
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, ona 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$) return
Dernière édition par Klaus le Ven 1 Avr 2016 - 13:29, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 1 Avr 2016 - 13:29 | |
| KGF.dll V6.25 du 01/04/2016Nouveautés: - nouvelles fonctions GetGridRowText et GetGridColumnTextModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Le programme de démo affiche maintenant dans un message, le texte le la ligne et le texte de la colonne, lors d'un clic dans une cellule: - 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% 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%
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, ona 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
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 1 Avr 2016 - 19:30 | |
| Comme tu es si bien partis, je vais user et abuser. Une chose qui serait bien, c' est de pouvoir définir l' alignement sur une colonne. Actuellement, si je ne me trompe pas, cela est possible mais sur l' ensemble du Grid. Cela permettrait d' aligner les cellules contenant des nombres à droite et celles contenant du texte à gauche. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 1 Avr 2016 - 20:08 | |
| J' ai un petit souci avec WriteGridCell, si un texte est déjà présent dans la cellule, il n' écrit pas par dessus celui ci.
Il faudrait donc, soit qu' il efface la cellule et écrive le nouveau texte. soit une fonction pour effacer une cellule remplie. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 1 Avr 2016 - 21:50 | |
| Plusieurs choses à dire. Prenons dans l'ordre: - Code:
-
Une chose qui serait bien, c' est de pouvoir définir l' alignement sur une colonne. Actuellement, si je ne me trompe pas, cela est possible mais sur l' ensemble du Grid. Essaie de définir "cadrage à droite" par GridFunction code 9, puis définir une couleur (même si c'est blanc...) par GridFunction code 4 ou 7 (pour une colonne). Puis tu remets "cadrage à gauche" pour le cas général. En principe, toutes les cellules de cette colonne devraient avoir "hérité" de l'attribut "cadrage à droite". La même technique s'applique pour des lignes entières, ou pour une cellule individuelle (code 2). - Citation :
- J' ai un petit souci avec WriteGridCell, si un texte est déjà présent dans la cellule,
il n' écrit pas par dessus celui ci. Là, je ne suis pas d'accord. Regarde mon programme de démo ci-après. Après avoir chargé toutes les cellules avec leurs valeurs initiales, je réécris spécifiquement la cellule ligne 3 colonne 9, en y mettant "ABCD". Et ça marche: - 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% 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$))
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, ona 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
Qu'est-ce que tu penses des 3 fonctions de lecture ? EDIT Il faut que je précise un point: Si une cellule est concerné par plusieurs paramétrages de couleur, attributs etc, chacun sera appliqué dans l'ordre de la création des paramètres. Et c'est donc le dernier qui restera visible. Exemple: ligne 3 en couleur rouge, colonne 7 en couleur bleue. La cellule en ligne 3 colonne 7 sera bleue. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Ven 1 Avr 2016 - 22:09 | |
| Je confirme pour WriteGridCell, sauf que pour effacer une cellule, txt$ = chr$(32) ou " ", si txt$ = "", je n' ai pas le résultat voulu. Je vais faire des essais pour l' alignement, mais demain, j' ai mon Mincrafter qui est de Week-end et qui me tanne pour prendre ma place. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 1 Avr 2016 - 22:19 | |
| - Citation :
- Je confirme pour WriteGridCell, sauf que pour effacer une cellule, txt$ = chr$(32) ou " ",
si txt$ = "", je n' ai pas le résultat voulu. Alors, pourquoi ce code de mon programme de démo marche: - Code:
-
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$)) Tu vois le remplissage de tout le tableau par les deux boucles imbriquées, suivi de la réécriture explicite de la cellule (9,4). | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 2 Avr 2016 - 8:38 | |
| Ta chaîne de caractères n' est pas vide, elle contient "ABCD". Dans mon cas, je gère le pointage d' une opération bancaire par "X" pour une opération pointée. Si je veux dépointer cette opération, je supprime ce "X". Au niveau du Grid, pour supprimer ce "X", il me faut le remplacer par " " ( chr$(32) ou espace ) si je mets "" (Chaîne vide ) le caractère "X" reste affiché. | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |