Avril 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 | |
|
+6papydall Marc jean_debord Minibug JP06 Klaus 10 participants | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 22 Fév 2024 - 12:33 | |
| KGF.dll V10.01 du 22/02/2024Nouveautés: - KGFGrid; nouvelles fonctions: SetKGFGridDefaultFixedCellFont et SetKGFGridDefaultFixedCellAttributesModules modifiés: KGF.dllLa doc est inchangée - ça viendra prochainement. Syntaxe: - Code:
-
res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(police$),taille%,couleur%) res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,gras%,italique%,souligne%,barre%) Cette version est en principe complète. On peut gérer correctement des colonnes ou des lignes fixes. Pas les deux en même temps - cela n'aurait pas de sens, et c'est bloqué par la DLL. Le type des cellules dans les lignes ou colonnes bloquées doit être de type texte - ce sont juste des libellés. On peut choisir la couleur par défaut des cellules dixes ainsi que la police avec ses attributs. Voici le programme de démo, auquel j'ai ajouté un mémo affichant des instructions et informations suivant la situation. - Code:
-
' prototype_KGFGrid.bas
label gauche, haut, sgauche, shaut
dim res%, KG%, r%, c%, s$
dll_on "KGF.dll"
full_space 0 button 1 : top 1,10 : left 1,10 : width 1,100 : caption 1,"A gauche" : on_click 1,gauche button 2 : top 2,10 : left 2,120 : width 2,100 : caption 2,"En haut" : on_click 2,haut button 11 : top 11,40 : left 11,10 : width 11,100 : caption 11,"Fixer 2 colonnes" : on_click 11,sgauche inactive 11 button 21 : top 21,40 : left 21,120 : width 21,100 : caption 21,"Fixer 2 lignes" : on_click 21,shaut inactive 21 memo 30 : top 30,300 : left 30,200 : width 30,500 : height 30,300 : bar_both 30 font_name 30,"Courier" : font_size 30,12 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" end
sub tableau_initial() KG% = dll_call1("DeleteKGFGrid",KG%) KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),1,1) res% = dll_call5("LocateKGFGrid",KG%,200,80,500,200) res% = dll_call5("SetGlobalKGFGridDimensions",KG%,20,10,80,25) res% = dll_call6("SetKGFGridCellRangeType",KG%,1,20,1,10,1) display end_sub
sub charge() for r%=1 to 20 for c%=1 to 10 s$ = "r"+str$(r%)+" c"+str$(c%) res% = dll_call6("SetKGFGridCellRangeValue",KG%,r%,r%,c%,c%,adr(s$)) display next c% next r% end_sub
gauche: inactive 11 inactive 21 tableau_initial() charge() active 11 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Fixer 2 colonnes = installer les 2 colonnes fixes" return
sgauche: s$ = "Arial Black" : ' défaut: texte en Arial Black pour cellules fixes c% = ((0*0)+255)*256+255 : ' défaut: texte en jaune pour cellules fixes res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%) res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes res% = dll_call2("SetKGFGridFixedColumns",KG%,2) : ' <=== fixer les deux colonnes de gauche inactive 11 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Colonnes fixes sur fond par défaut (clAqua=FFFF00)" item_add 30,"Police: Arial Black 12 jaune gras italique" return
haut: inactive 11 inactive 21 tableau_initial() charge() active 21 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Fixer 2 Lignes = installer les 2 lignes fixes" return
shaut: c% = ((0*256)+255)*256+255 : ' défaut: fond jaune pour cellules fixes res% = dll_call2("SetKGFGridFixedDefaultCellColor",KG%,c%) s$ = "Arial Black" : ' défaut: texte en Arial Black pour cellules fixes c% = ((255*256)+0)*256+0 : ' défaut: texte en bleu pour cellules fixes res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%) res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes res% = dll_call2("SetKGFGridFixedRows",KG%,2) : ' <=== fixer les deux lignes du haut inactive 21 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Lignes fixes sur fond jaune (clYellow=00FFFF)" item_add 30,"Police: Arial Black 12 bleu gras italique" return
end
Ecran de départ: Choix A Gauche: Choix Fixer 2 colonnes: Choix En haut: Choix Fixer 2 lignes: | |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 23 Fév 2024 - 10:53 | |
| KGF.dll V10.02 du 23/02/2024Nouveautés: - nouvel objet: ListBoxGroup et ses fonctions de gestionModules modifiés: KGF.dllLa doc est inchangée - ça viendra prochainement. Cet objet réalise un de mes vieux rêves: avoir deux ou plusieurs objets LIST Panoramic synchronisés. Pour cela, il faut avoir 2 ou plusieurs LISTS ayant le même nombre d'enregsitrements et les mêmes dimensions WIDYH et HEIGHT. Une de ces listes est le "maître", les autres sont les "esclaves". On peu faire défiler toutes ces listes indépendemment par l'ascenseur vertical. Mais dans le cas de la liste maître, cela fait défiler également les listes esclaves de façon synchronisée, et ce même si elles étaient décalées au départ ! On ne peut pas ajouter 2 fois la même LIST dans un objet ListBoxGroup. On ne peut pas ajouter un objet LIST dans plus d'un seul objet ListBoxGroup. On ne peut pas supprimer un objet "maître" d'un objet ListBpxGroup. ATTENTION: Avant de fermer le programme, il faut supprimer tous les objets LisBoxGroup (évènement ON_CLOSE).Ceci permet d'avoir des listes pouvant servir de colonnes dans un tableau constitué à l'écran, avec un onèclick sur chacune d'elles. L'effet est assez bluffant. La syntaxe des fonctions de gestion est la suivante: - Code:
-
LBG1% = dll_call0("CreateListBoxGroup") : ' crée un nouveau groupe de listes res% = dll_call3("ElementForListBoxGroup",LBG%,1,handle(lst%)) : ' ajout d'une liste maître à un groupe res% = dll_call3("ElementForListBoxGroup",LBG%,2,handle(1)) : ' ajout d'une liste esclave à unn groupe res% = dll_call3("ElementForListBoxGroup",LBG%,0,handle(1)) : ' supprimer une liste d'un groupe res% = dll_call1("DeleteListBoxGroup",LBG%) : ' supprimer un groupe de listes
Voici une petite démo. Le programme montre 2 groupes de 3 listes chacun. La liste maître du premier groupe est celle de gauche. Le maître du second groupe esy la liste du milieu. - Code:
-
label close0
dim res%, LBG1%, LBG2%
full_space 0 : on_close 0,close0 list 1 : top 1,10 : left 1, 10 : width 1,200 : height 1,300 list 2 : top 2,10 : left 2,220 : width 2,200 : height 2,300 list 3 : top 3,10 : left 3,430 : width 3,200 : height 3,300 font_names_load 1 font_names_load 2 font_names_load 3
list 11 : top 11,330 : left 11,110 : width 11,200 : height 11,300 list 12 : top 12,330 : left 12,320 : width 12,200 : height 12,300 list 13 : top 13,330 : left 13,530 : width 13,200 : height 13,300 font_names_load 11 font_names_load 12 font_names_load 13
dll_on "KGF.dll" LBG1% = dll_call0("CreateListBoxGroup") res% = dll_call3("ElementForListBoxGroup",LBG1%,1,handle(1)) : ' <== la liste de gauche est le maître ! res% = dll_call3("ElementForListBoxGroup",LBG1%,2,handle(2)) res% = dll_call3("ElementForListBoxGroup",LBG1%,2,handle(3))
LBG2% = dll_call0("CreateListBoxGroup") res% = dll_call3("ElementForListBoxGroup",LBG2%,2,handle(11)) res% = dll_call3("ElementForListBoxGroup",LBG2%,1,handle(12)) : ' <== la liste du milieu est le maître ! res% = dll_call3("ElementForListBoxGroup",LBG2%,2,handle(13)) end
close0: res% = dll_call1("DeleteListBoxGroup",LBG1%) res% = dll_call1("DeleteListBoxGroup",LBG2%) return
| |
| | | lepetitmarocain
Nombre de messages : 333 Age : 81 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Ven 23 Fév 2024 - 19:16 | |
| Bonsoir à tous @Klaus. Merci pour la modif concernant les lignes et colonnes fixes. J' ai fait un essai en ne prenant que le minimum de ton programme, et cela fonctionne. Par contre, si j'ajoute don juste les mêmes lignes dans mon programme, les lignes qui devaient etre fixes sont blanches Merci par avance Bonne soirée - Code:
-
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" dim a$ , lignes% full_space 0 dll_on "KGF.dll" dim s$ dim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y% , ecran_base_x% , ecran_base_y% , x_program, y_program dim nb_enr% dim xx_program$,xx_program , yy_program$ , yy_program , y_program$ , OUI_NOM$
' dim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y% , ecran_base_x% , ecran_base_y% , x_program, y_programdim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y% , ecran_base_x% , ecran_base_y% , x_program, y_programdim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y% , ecran_base_x% , ecran_base_y% , x_program, y_program****************************************** ' calcul de la grandeur de l'ecran pour ajuster le grid et les boutons ' *******************************************
ecran_base_x%=1280 : ' 1280 ecran_base_y%=720 : ' 720
ecran_ordi_x%=screen_x ecran_ordi_y%=screen_y
' pour tester **** ' ecran_ordi_x%=1280 ' ecran_ordi_y%=720 ' ************
x_program= ecran_ordi_x%/ecran_base_x% y_program= ecran_ordi_y%/ecran_base_y%
xx_program$=x_program yy_program$=x_program
xx_program$=mid$(xx_program$,1,3) yy_program$= mid$(yy_program$,1,3)
xx_program=val(xx_program$) yy_program= val(yy_program$) nb_enr%=25 KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) res% = dll_call5("LocateKGFGrid",KG%,10,50,1100 , 600 ) : ' position ' message 1100 * x_program res% = dll_call5("SetGlobalKGFGridDimensions",KG%,25,18,10,25) : ' nbre de lignes nbre de colonnes res% = dll_call6("SetKGFGridCellRangeColor",KG%,1,1,1,9,hex("008000")) : ' couleur des lignes ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,5,5,10,10,hex("FF8080")) : ' couleur de la colonne 10 ligne 5 ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,nb_enr%,10,10,hex("FF8080")) : ' couleur colonne 10 ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,nb_enr%,12,12,hex("FF8080")) : ' couleur colonne 12 ' autoriser la saisie les cellules ************ : ' 03/01/2024 res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,7,13,1) : ' 03/01/2024 res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,17,17,1) : ' 03/01/2024 ' if S=40 ' nb_enr%=3 ' res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,1,2,17,1) ' res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,7,13,1) : ' 03/01/2024 ' res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,17,17,1) ' end_if
' ******************************************* ' ************************************* res% = dll_call6("SetKGFGridCellRangeType",KG%,1,1,1,18,1) : ' ligne des titres de colonnes res% = dll_call6("SetKGFGridCellRangeActive",KG%,2,nb_enr%,1,18,1) : ' nbre de lignes pouvant etre ecrites res% = dll_call6("SetKGFGridCellRangeType",KG%,2,nb_enr%,1,18,1) res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,1,1,1,18,1) ' libéllé dans saisie cellule ****************************** ' ********************************* s$ = "date affectation.D.A" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,7,7,adr(s$)) : ' date affectation D.A s$ = "date demande de Prix" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,8,8,adr(s$)) : ' date demande de prix s$ = "date Reception Devis" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,9,9,adr(s$)) : ' date reception devis s$ = "N° de Commande" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,10,10,adr(s$)) : ' N° de Commande s$ = "date Envoi Commande" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,11,11,adr(s$)) : ' date envoi Commande s$ = "Date A.R Saisie" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,12,12,adr(s$)) : ' date A.R s$ = "Date A.R Saisie" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,13,13,adr(s$)) : ' date A.R Saisie s$ = "Saisie Fournisseur" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,6,6,adr(s$)) : ' saisie ou modif Fournisseur depuisligne 2 à X et cellule 6 ' saisie dans commentaire s$ = "Saisie Commentaire" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,14,14,adr(s$)) : ' commentraire ' saisie dans commentaire 2 s$ = "Saisie Commentaire 2" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,17,17,adr(s$)) : ' commentraire ' res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,i%,i%,j%,j%,adr(s$))
' largeur des colonnes res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,1) : ' avant 100 res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,100) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,80) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,95) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,350) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,350) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,7,100) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,8,13,90) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,14,14,1) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,15,15,1) : ' avant 90 res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,16,16,1) : ' avant 50 res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,17,17,600) : ' commentairen 2 res% = dll_call4("SetKGFGridRowRangeHeight",KG%,1,1,50) : ' hauteur ligne res% = dll_call6("SetKGFGridCellRangeColor",KG%,1,1,1,17,hex("66FF66")) ' img$ = "Android.bmp" ' res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,2,adr(img$)) : ' ok v$ = "Arial" res% = dll_call6("SetKGFGridCellRangeFontName",KG%,1,18,1,6,adr(v$)) res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,1,1,1,16,10) : ' taille font 1ere ligne v$ = "Date du Jour" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,2,2,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,2,2,5) v$ = "DA" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,3,3,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,3,3,5) v$ = "Ref." res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,4,4,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,4,4,5) v$ = "Désignation." res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,5,5,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,5,5,5) v$ = "Fournisseur" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,6,6,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,6,6,5) v$ = "DateAf.DA " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,7,7,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,5) v$ = "Date Dde Prix" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,8,8,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,8,8,5) v$ = "Dat.rec dev " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,9,9,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "N°.cde " : ' cette ligne etait avnt 08/01/2024 Date de Commande res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,10,10,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Dat.env cde " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,11,11,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Dat.AR " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,12,12,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "AR Saisie" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,13,13,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Commentaire 1 ne sert plus " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,14,14,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Matr." res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,15,15,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Ligne" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,16,16,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Commentaire 2 " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,17,17,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) ' **** ajout du 23/02/2024 pour fixer des colonnes dim c% s$ = "Arial Black" : ' défaut: texte en Arial Black pour cellules fixes c% = ((0*0)+255)*256+255 : ' défaut: texte en jaune pour cellules fixes res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%) res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes res% = dll_call2("SetKGFGridFixedColumns",KG%,2) : ' <=== fixer les colonnes de gauche le libelle dans chaque ligne ne sont pas visibles
Ci dessous, un morceau de programme avec le grids uniquement
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" dim a$ , lignes% full_space 0 dll_on "KGF.dll" dim s$ dim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y% , ecran_base_x% , ecran_base_y% , x_program, y_program dim nb_enr% dim xx_program$,xx_program , yy_program$ , yy_program , y_program$ , OUI_NOM$
' dim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y% , ecran_base_x% , ecran_base_y% , x_program, y_programdim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y% , ecran_base_x% , ecran_base_y% , x_program, y_programdim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y% , ecran_base_x% , ecran_base_y% , x_program, y_program****************************************** ' calcul de la grandeur de l'ecran pour ajuster le grid et les boutons ' *******************************************
ecran_base_x%=1280 : ' 1280 ecran_base_y%=720 : ' 720
ecran_ordi_x%=screen_x ecran_ordi_y%=screen_y
' pour tester **** ' ecran_ordi_x%=1280 ' ecran_ordi_y%=720 ' ************
x_program= ecran_ordi_x%/ecran_base_x% y_program= ecran_ordi_y%/ecran_base_y%
xx_program$=x_program yy_program$=x_program
xx_program$=mid$(xx_program$,1,3) yy_program$= mid$(yy_program$,1,3)
xx_program=val(xx_program$) yy_program= val(yy_program$) nb_enr%=25 KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) res% = dll_call5("LocateKGFGrid",KG%,10,50,1100 , 600 ) : ' position ' message 1100 * x_program res% = dll_call5("SetGlobalKGFGridDimensions",KG%,25,18,10,25) : ' nbre de lignes nbre de colonnes res% = dll_call6("SetKGFGridCellRangeColor",KG%,1,1,1,9,hex("008000")) : ' couleur des lignes ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,5,5,10,10,hex("FF8080")) : ' couleur de la colonne 10 ligne 5 ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,nb_enr%,10,10,hex("FF8080")) : ' couleur colonne 10 ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,nb_enr%,12,12,hex("FF8080")) : ' couleur colonne 12 ' autoriser la saisie les cellules ************ : ' 03/01/2024 res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,7,13,1) : ' 03/01/2024 res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,17,17,1) : ' 03/01/2024 ' if S=40 ' nb_enr%=3 ' res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,1,2,17,1) ' res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,7,13,1) : ' 03/01/2024 ' res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,17,17,1) ' end_if
' ******************************************* ' ************************************* res% = dll_call6("SetKGFGridCellRangeType",KG%,1,1,1,18,1) : ' ligne des titres de colonnes res% = dll_call6("SetKGFGridCellRangeActive",KG%,2,nb_enr%,1,18,1) : ' nbre de lignes pouvant etre ecrites res% = dll_call6("SetKGFGridCellRangeType",KG%,2,nb_enr%,1,18,1) res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,1,1,1,18,1) ' libéllé dans saisie cellule ****************************** ' ********************************* s$ = "date affectation.D.A" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,7,7,adr(s$)) : ' date affectation D.A s$ = "date demande de Prix" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,8,8,adr(s$)) : ' date demande de prix s$ = "date Reception Devis" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,9,9,adr(s$)) : ' date reception devis s$ = "N° de Commande" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,10,10,adr(s$)) : ' N° de Commande s$ = "date Envoi Commande" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,11,11,adr(s$)) : ' date envoi Commande s$ = "Date A.R Saisie" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,12,12,adr(s$)) : ' date A.R s$ = "Date A.R Saisie" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,13,13,adr(s$)) : ' date A.R Saisie s$ = "Saisie Fournisseur" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,6,6,adr(s$)) : ' saisie ou modif Fournisseur depuisligne 2 à X et cellule 6 ' saisie dans commentaire s$ = "Saisie Commentaire" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,14,14,adr(s$)) : ' commentraire ' saisie dans commentaire 2 s$ = "Saisie Commentaire 2" : ' cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,17,17,adr(s$)) : ' commentraire ' res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,i%,i%,j%,j%,adr(s$))
' largeur des colonnes res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,1) : ' avant 100 res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,100) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,80) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,95) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,350) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,350) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,7,100) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,8,13,90) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,14,14,1) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,15,15,1) : ' avant 90 res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,16,16,1) : ' avant 50 res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,17,17,600) : ' commentairen 2 res% = dll_call4("SetKGFGridRowRangeHeight",KG%,1,1,50) : ' hauteur ligne res% = dll_call6("SetKGFGridCellRangeColor",KG%,1,1,1,17,hex("66FF66")) ' img$ = "Android.bmp" ' res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,2,adr(img$)) : ' ok v$ = "Arial" res% = dll_call6("SetKGFGridCellRangeFontName",KG%,1,18,1,6,adr(v$)) res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,1,1,1,16,10) : ' taille font 1ere ligne v$ = "Date du Jour" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,2,2,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,2,2,5) v$ = "DA" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,3,3,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,3,3,5) v$ = "Ref." res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,4,4,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,4,4,5) v$ = "Désignation." res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,5,5,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,5,5,5) v$ = "Fournisseur" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,6,6,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,6,6,5) v$ = "DateAf.DA " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,7,7,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,5) v$ = "Date Dde Prix" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,8,8,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,8,8,5) v$ = "Dat.rec dev " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,9,9,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "N°.cde " : ' cette ligne etait avnt 08/01/2024 Date de Commande res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,10,10,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Dat.env cde " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,11,11,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Dat.AR " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,12,12,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "AR Saisie" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,13,13,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Commentaire 1 ne sert plus " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,14,14,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Matr." res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,15,15,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Ligne" res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,16,16,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) v$ = "Commentaire 2 " res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,17,17,adr(v$)) res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6) ' **** ajout du 23/02/2024 pour fixer des colonnes dim c% s$ = "Arial Black" : ' défaut: texte en Arial Black pour cellules fixes c% = ((0*0)+255)*256+255 : ' défaut: texte en jaune pour cellules fixes res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%) res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes res% = dll_call2("SetKGFGridFixedColumns",KG%,2) : ' <=== fixer les colonnes de gauche
| |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 23 Fév 2024 - 23:35 | |
| C'est très difficile de juger d'après ces morceaux de code fragmentaire.
Ce que le vois (à la fin du code que tu as posté), c'est que tu déclares les DEUX premières colonnes comme fixe, exactement comme dans ma démo. Bien. Sauf que j'ai bien précisé que TOUTES les cellules et TOUTES les colonnes fixes doivent être du type TEXTE (code 2 !) et non pas du type numérique (code 1). Je pense que c'est pourquoi la lecture de ces cellules échoue et le résultat est un string vide, et donc la cellule s'affiche en blanc (vide).
Quelques conseils: - regarde la structure de mn programme: la place des labels, des DIM, des constantes, des définitions des objets visuels etc. Essaie de structurer ton programme de fa_on similaire - regrouper au début, et par nature, toutes les déclarations de base qui ne participent pas à la logique d'exécution du programme. - respecte les règles relatives aux fonctions de lignes/colonnes fixes - elles sont décrites dans mon post. En particulier, je ne suis pas sûr que ton intention était bien d'avoir les deux premières colonnes fixes... - essaie de produire un code restraint, SANS tous les détails ne concernant pas les zones cncernées par le problème, et un code complet exécutable de sorte que je puisse reproduire le problème ici. Réalise également des captures d'écran afin d'illustrer la situation. | |
| | | Marc
Nombre de messages : 2379 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Dim 25 Fév 2024 - 9:30 | |
| Bonjour à tous ! @Klaus Sujet : ListBoxGroupTesté avec succès ! Merci Klaus ! Il y a aussi une alternative 100% Panoramic que j’utilise lorsque que j’ai une base de données qui est éclatée à différents endroits d’un programme. Un ascenseur maître, sous forme de SCROLL_BAR, établit la synchronisation et le défilement des LISTs. Démonstration : - Code:
-
label choixList_1, choixList_2, choixList_3 ,choixList_4, scroll
dim ligne%
width 0,330 : height 0,350 form 30 : left 30,315 : top 30,150 : width 30,330 : height 30,350
list 1 : top 1,10 : left 1, 30 : width 1,110 : height 1,130 : color 1,255,255,200 list 2 : top 2,160 : left 2,140 : width 2,150 : height 2,120 list 3 : parent 3,30 : top 3,10 : left 3,10 : width 3,110 : height 3,260 list 4 : parent 4,30 : top 4,110 : left 4,150 : width 4,150 : height 4,80 : font_size 4,12
scroll_bar 5 : vertical 5 : top 5,10 : left 5,10 : width 5,15 : height 5,height(1)
container 8 : top 8,170 : left 8,20 : width 8,90 : height 8,90 alpha 9 : parent 9,8 : left 9,10 : top 9,20 alpha 10 : left 10,35 : top 10,145 alpha 11 : left 11,145 : top 11,285 alpha 12 : parent 12,30 : left 12,15 : top 12,275 alpha 13 : parent 13,30 : left 13,155 : top 13,195
for ligne% = 1 to 20 item_add 1,"LIST 1, ligne " + str$(ligne%) item_add 2,"LIST 2, ligne " + str$(ligne%) item_add 3,"LIST 3, ligne " + str$(ligne%) item_add 4,"LIST 4, ligne " + str$(ligne%) next ligne%
min 5,1 : max 5,count(1) : on_change 5,scroll
on_click 1,choixList_1 on_click 2,choixList_2 on_click 3,choixList_3 on_click 4,choixList_4 end
choixList_1: item_select 2,item_index(1) item_select 3,item_index(1) item_select 4,item_index(1)
caption 9,item_index$(1) + chr$(13) + item_index$(2) + chr$(13) + item_index$(3) + chr$(13) + item_index$(4) caption 10,item_index$(1)
off_change 5 position 5,item_index(1) on_change 5,scroll return
choixList_2: caption 11,item_index$(2) return
choixList_3: caption 12,item_index$(3) return
choixList_4: caption 13,item_index$(4) return
scroll: item_select 1,position(5) item_select 2,position(5) item_select 3,position(5) item_select 4,position(5) return | |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 25 Fév 2024 - 14:36 | |
| Oui, tu as raison - la même ligne apparaît dans la fenêtre de visualisation.
Mais il y a une grande différence: la ligne sélectionnée n'a pas la même position relative dans les différentes fenêtres de visualisation. Ceci interdit d'avoir des listes parallèles, un peu comme des colonnes d'un tableau, et de les scroller de façon sunchrone.
Il y a aussi une autre différence: les LIST esclaves ne se déplacent pas lorsqu'on scrolle avec la barre de défilement de la liste maître !Et c'est cela l'objectif principal de ListBoxGroup...
EDIT
Est-ce que tu as vu KGF.dll V10.01 du 22/02/2024 publié à 11:33, avec la nouveauté pour KGFGrid ? | |
| | | Marc
Nombre de messages : 2379 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Dim 25 Fév 2024 - 17:23 | |
| @Klaus - Citation :
- Mais il y a une grande différence: la ligne sélectionnée n'a pas la même position relative dans les différentes fenêtres de visualisation. Ceci interdit d'avoir des listes parallèles, un peu comme des colonnes d'un tableau, et de les scroller de façon sunchrone.
Il y a aussi une autre différence: les LIST esclaves ne se déplacent pas lorsqu'on scrolle avec la barre de défilement de la liste maître !Et c'est cela l'objectif principal de ListBoxGroup... Oui, effectivement, c’est indéniable, ListBoxGroup possède des caractéristiques intéressantes qui sont très pratiques voire incontournables suivant le résultat final souhaité. - Citation :
- Est-ce que tu as vu KGF.dll V10.01 du 22/02/2024 publié à 11:33, avec la nouveauté pour KGFGrid
Oui, j’ai l’ai vu, mais je n’ai pas encore pris le temps d’essayer le nouveau KGFGrid.C'est vraiment un plus d'avoir ajouté la possibilité de figer les premières colonnes / lignes.Bravo et merci ! | |
| | | Marc
Nombre de messages : 2379 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Dim 25 Fév 2024 - 22:28 | |
| @Klaus Sujet : KGFGridJ'ai pris une petite partie du source ci-dessus de Lepetitmarocain pour effectuer des tests. Lorsque je fixe la première ligne de KGFGrid, elle perd son formatage : toutes les colonnes de la première ligne prennent la largeur de la première cellule. - Code:
-
dim res%, KG% width 0,width(0)-width_client(0)+1120 height 0,height(0)-height_client(0)+620
dll_on "kgf"
creerKGFgrid()
end ' ------------------------------------------------------------------------------ sub creerKGFgrid() ' Configuration générale KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),1,1) res% = dll_call5("LocateKGFGrid",KG%,10,10,1100,600) res% = dll_call5("SetGlobalKGFGridDimensions",KG%,10,6,100,25) ' largeur des colonnes res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,20) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,100) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,80) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,95) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,350) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,350)
' fixer la première ligne res% = dll_call2("SetKGFGridFixedRows",KG%,1) end_sub - Capture d'écran:
| |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 26 Fév 2024 - 1:11 | |
| KGF.dll V10.03 du 26/02/2024Nouveautés: - KGFGrid - correction d'un bug de hauteur/largeur des lignes/colonnes fixesModules modifiés: KGF.dllLa doc est inchangée - ça viendra prochainement. Ce bug est corrigé. Un oubli de ma part - cela n'aurait pas dû arriver. Merci pour le signalement, Marc ! Voici le programme de démo qui génère la colonne 4 plus large et la ligne 4 plus haute: - Code:
-
' prototype_KGFGrid.bas
label gauche, haut, sgauche, shaut
dim res%, KG%, r%, c%, s$
dll_on "KGF.dll"
full_space 0 button 1 : top 1,10 : left 1,10 : width 1,100 : caption 1,"A gauche" : on_click 1,gauche button 2 : top 2,10 : left 2,120 : width 2,100 : caption 2,"En haut" : on_click 2,haut button 11 : top 11,40 : left 11,10 : width 11,100 : caption 11,"Fixer 2 colonnes" : on_click 11,sgauche inactive 11 button 21 : top 21,40 : left 21,120 : width 21,100 : caption 21,"Fixer 2 lignes" : on_click 21,shaut inactive 21 memo 30 : top 30,300 : left 30,200 : width 30,500 : height 30,300 : bar_both 30 font_name 30,"Courier" : font_size 30,12 item_add 30,"Choisir le mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" end
sub tableau_initial() KG% = dll_call1("DeleteKGFGrid",KG%) KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),1,1) res% = dll_call5("LocateKGFGrid",KG%,200,80,500,200) res% = dll_call5("SetGlobalKGFGridDimensions",KG%,20,10,80,25) res% = dll_call6("SetKGFGridCellRangeType",KG%,1,20,1,10,1) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,120) res% = dll_call4("SetKGFGridRowRangeHeight",KG%,4,4,50) display end_sub
sub charge() for r%=1 to 20 for c%=1 to 10 s$ = "r"+str$(r%)+" c"+str$(c%) res% = dll_call6("SetKGFGridCellRangeValue",KG%,r%,r%,c%,c%,adr(s$)) display next c% next r% end_sub
gauche: inactive 11 inactive 21 tableau_initial() charge() active 11 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Fixer 2 colonnes = installer les 2 colonnes fixes" return
sgauche: s$ = "Arial Black" : ' défaut: texte en Arial Black pour cellules fixes c% = ((0*0)+255)*256+255 : ' défaut: texte en jaune pour cellules fixes res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%) res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes res% = dll_call2("SetKGFGridFixedColumns",KG%,2) : ' <=== fixer les deux colonnes de gauche inactive 11 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Colonnes fixes sur fond par défaut (clAqua=FFFF00)" item_add 30,"Police: Arial Black 12 jaune gras italique" return
haut: inactive 11 inactive 21 tableau_initial() charge() active 21 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Fixer 2 Lignes = installer les 2 lignes fixes" return
shaut: c% = ((0*256)+255)*256+255 : ' défaut: fond jaune pour cellules fixes res% = dll_call2("SetKGFGridFixedDefaultCellColor",KG%,c%) s$ = "Arial Black" : ' défaut: texte en Arial Black pour cellules fixes c% = ((255*256)+0)*256+0 : ' défaut: texte en bleu pour cellules fixes res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%) res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes res% = dll_call2("SetKGFGridFixedRows",KG%,2) : ' <=== fixer les deux lignes du haut inactive 21 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Lignes fixes sur fond jaune (clYellow=00FFFF)" item_add 30,"Police: Arial Black 12 bleu gras italique" return
end
| |
| | | Marc
Nombre de messages : 2379 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Lun 26 Fév 2024 - 1:31 | |
| - Citation :
- Ce bug est corrigé.
Merci Klaus ! C'est tout bon ! Je continuerai demain les tests des différentes fonctions. | |
| | | Marc
Nombre de messages : 2379 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Lun 26 Fév 2024 - 15:18 | |
| @Klaus : Idée d'amélioration de l'objet KGFGrid : - Etendre la fonction SetKGFGridCellRangeJustification aux cellules fixes. - Lors d'un redimensionnement de l'objet KGFGrid complet, les lignes fixes disparaissent (voir le programme ci-dessous). Programme test où l'objet KGFGrid est asservi au redimensionnement du FORM 0 : - Code:
-
' Test_KGFGrid.bas dim res%, KG%, r%, c%, s$
label redim0
dll_on "KGF.dll"
tableau_initial() charge() fixerLigne()
on_resize 0,redim0
end
sub tableau_initial() dim_local largeur%, hauteur% largeur% = width_client(0) - 20 :' 20 ==> marges : 10 pixels à droite + 10 pixels à gauche hauteur% = height_client(0) - 20 : ' 20 ==> marges : 10 pixels en haut + 10 pixels en bas KG% = dll_call1("DeleteKGFGrid",KG%) KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),1,1) res% = dll_call5("LocateKGFGrid",KG%,10,10,largeur%,hauteur%) res% = dll_call5("SetGlobalKGFGridDimensions",KG%,20,10,80,25) res% = dll_call6("SetKGFGridCellRangeType",KG%,1,20,1,10,1) res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,120) res% = dll_call4("SetKGFGridRowRangeHeight",KG%,4,4,50) display end_sub
sub charge() for r%=1 to 20 for c%=1 to 10 s$ = "r"+str$(r%)+" c"+str$(c%) res% = dll_call6("SetKGFGridCellRangeValue",KG%,r%,r%,c%,c%,adr(s$)) display next c% next r% end_sub
sub fixerLigne() c% = ((0*256)+255)*256+255 : ' défaut: fond jaune pour cellules fixes res% = dll_call2("SetKGFGridFixedDefaultCellColor",KG%,c%) s$ = "Arial Black" : ' défaut: texte en Arial Black pour cellules fixes c% = ((255*256)+0)*256+0 : ' défaut: texte en bleu pour cellules fixes res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%) res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes res% = dll_call2("SetKGFGridFixedRows",KG%,2) : ' <=== fixer les deux lignes du haut end_sub
redim0: redimensionnementKGFGrid() return
sub redimensionnementKGFGrid() ' Redimensionnement de KGFGrid en fonction des dimensions de la fenetre 0 dim_local largeur%, hauteur% largeur% = width_client(0) - 20 :' 20 ==> marges : 10 pixels à droite + 10 pixels à gauche hauteur% = height_client(0) - 20 : ' 20 ==> marges : 10 pixels en haut + 10 pixels en bas
res% = dll_call5("LocateKGFGrid",KG%,10,10,largeur%,hauteur%) :' position x, y, largeur, hauteur end_sub
| |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 26 Fév 2024 - 15:48 | |
| Les cellules fixes disparaissent - oui, il faut les redemander.
L'extension des attributs aux cellules fixes - c'est en gestation.
En fait, j'ai utilisé une petite astuce technique pour réaliser les lignes et colonnes fixes. Je rend invisibles ces colonnes, je crée un KGFGris suplémentaire avec les dimenions de zones fices et je le olace à l'endroit du KGFGrid d'origine qui, de son côté, est déplacé horizontalement ou verticalement, selon le cas.
Ceci signifie que le dois copier le contenu des cellules rendues jn visibles dans celles dunouveau KGFGrid. Mes données, c'était facile. Tu as pu constater qu'au début, des dimensions manquaient... c'est fait. Police, attributs et couleurs - c'est fait. Le format d'affichage et la justification - c'est en cours.
Pour le moment, j'ai semé la pagaille dans mon code - faudra que je corrige cela d'abord avant de continuer. | |
| | | Marc
Nombre de messages : 2379 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Lun 26 Fév 2024 - 17:25 | |
| @Klaus : Merci pour les explications. J’ai restructuré le programme de Lepetitmarocain et je constate une anomalie : Lors d’un clic sur une cellule partiellement visible, le tableau se décale pour obtenir une vue complète de la cellule, mais la ligne fixe ne se décale pas. Avec des captures d’écran, se sera plus parlant : - Situation de départ:
- Après avoir cliqué, la ligne fixe n’a pas suivi le reste du tableau:
Une action sur l'ascenseur horizontal rétablit la situation. | |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 26 Fév 2024 - 23:13 | |
| Intéressant. Je pense savoir d'où ça vient, mais il faut d'abord que je répare la pagaille que j'y ai mise... mais je m'en occupe. | |
| | | lepetitmarocain
Nombre de messages : 333 Age : 81 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Mar 27 Fév 2024 - 10:49 | |
| Bonjour à tous.
@Marc. Merci beaucoup d'avoir testé mon morceau de programme. Je ne savais pas comment expliquer le problème à Klaus.
@Klaus Merci pour ton travail.
Bonne journée. | |
| | | lepetitmarocain
Nombre de messages : 333 Age : 81 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Mar 27 Fév 2024 - 11:03 | |
| Bonjour de nouveau. @Klaus Je constate que sur les lignes fixes, il n'y a toujours pas de libellé, alors qu'il y en a dans le programme. Je pense donc qu'il n'y aura également pas de lignes venant de mon fichier. Merci. Bonne journée | |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 27 Fév 2024 - 12:01 | |
| Il n'y a pas de libéllé ? Essaie de déclarer, pour les lignes fixes, toute les cellules de ces lignes en type "texte" (type 1). C'est uniquement ce type de cellule qui est pris en compte actuellement pour les lignes/colonnes fixes.
Cela fera partie d'une évolution à venir. | |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 28 Fév 2024 - 17:01 | |
| KGF.dll V10.04 du 28/02/2024Nouveautés: - KGFGrid - correction d'un bug de hauteur/largeur des lignes/colonnes fixes - KGFGrid: reprise dans les zones fixes du type de cellules string, integer et flottant, justification et borduresModules modifiés: KGF.dllLa doc est inchangée - ça viendra prochainement. Voilà. Be bug est corrigé, et on reprend maintenant correctement les cellules de type string, integer et flottant. On applique également la justification ainsi que les bordures des cellules individuelles dans les parties fixes. Je rappelle le programme de démo: - Code:
-
' prototype_KGFGrid.bas
label gauche, haut, sgauche, shaut
dim res%, KG%, r%, c%, s$ dim KGOK%
dll_on "KGF.dll"
full_space 0 button 1 : top 1,10 : left 1,10 : width 1,100 : caption 1,"A gauche" : on_click 1,gauche button 2 : top 2,10 : left 2,120 : width 2,100 : caption 2,"En haut" : on_click 2,haut button 11 : top 11,40 : left 11,10 : width 11,100 : caption 11,"Fixer 2 colonnes" : on_click 11,sgauche inactive 11 button 21 : top 21,40 : left 21,120 : width 21,100 : caption 21,"Fixer 2 lignes" : on_click 21,shaut inactive 21 memo 30 : top 30,300 : left 30,200 : width 30,500 : height 30,300 : bar_both 30 font_name 30,"Courier" : font_size 30,12 item_add 30,"Choisir le mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" end
sub tableau_initial() KG% = dll_call1("DeleteKGFGrid",KG%) KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),2,1) res% = dll_call5("LocateKGFGrid",KG%,200,80,500,200) res% = dll_call5("SetGlobalKGFGridDimensions",KG%,20,10,80,25) res% = dll_call6("SetKGFGridCellRangeType",KG%,1,20,1,10,1) : ' <===== crash ici ! res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,120) res% = dll_call4("SetKGFGridRowRangeHeight",KG%,4,4,50) display end_sub
sub charge() for r%=1 to 20 for c%=1 to 10 s$ = "r"+str$(r%)+" c"+str$(c%) res% = dll_call6("SetKGFGridCellRangeValue",KG%,r%,r%,c%,c%,adr(s$)) display next c% next r% end_sub
gauche: inactive 11 inactive 21 tableau_initial() charge() active 11 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Fixer 2 colonnes = installer les 2 colonnes fixes" return
sgauche: s$ = "Arial Black" : ' défaut: texte en Arial Black pour cellules fixes c% = ((0*0)+255)*256+255 : ' défaut: texte en jaune pour cellules fixes res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%) res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes res% = dll_call2("SetKGFGridFixedColumns",KG%,2) : ' <=== fixer les deux colonnes de gauche inactive 11 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Colonnes fixes sur fond par défaut (clAqua=FFFF00)" item_add 30,"Police: Arial Black 12 jaune gras italique" return
haut: inactive 11 inactive 21 tableau_initial() charge() active 21 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Fixer 2 Lignes = installer les 2 lignes fixes" return
shaut: c% = ((0*256)+255)*256+255 : ' défaut: fond jaune pour cellules fixes res% = dll_call2("SetKGFGridFixedDefaultCellColor",KG%,c%) s$ = "Arial Black" : ' défaut: texte en Arial Black pour cellules fixes c% = ((255*256)+0)*256+0 : ' défaut: texte en bleu pour cellules fixes res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%) res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes res% = dll_call2("SetKGFGridFixedRows",KG%,2) : ' <=== fixer les deux lignes du haut inactive 21 clear 30 item_add 30,"Choisir me mode opératoire:" item_add 30," A gauche = les deux colonnes de gauche sont fixes" item_add 30," En haut = les deux lignes du haut sont fixes" item_add 30," " item_add 30,"Lignes fixes sur fond jaune (clYellow=00FFFF)" item_add 30,"Police: Arial Black 12 bleu gras italique" return
end | |
| | | 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
| |
| |
| |