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 Ven 15 Avr 2016 - 18:54 | |
| Soit, le code n' est pas optimisé. Mais entre les deux captures, seule change la version de la dll avec l' ajout des deux options supplémentaires. Visiblement, ces deux fonctions ont fait bouger quelque chose. Quoi, je ne sais pas, mais le comportement est différent et sans rien ajouter. Ce qui m' ennuie le plus, c' est que je formate par colonne et qu' une fois formatées, je ne pensais pas devoir y revenir. Là, il me faut faire du formatage à chaque ligne.
Je crois que ce programme va garder la version 6.31. Je verrai si j' ai le courage de remettre le couvert plus tard avec la version 6.32. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 15 Avr 2016 - 19:10 | |
| Et oui... tu vois bien dans la doc du code 9 de GridFunction que tu ne peux pas spécifier des attributs pour une colonne, avec ce code. Seulement pour une cellule dont tu donnes les valeurs X et Y. Je me heurte là à la limite technique de Panoramic: six paramètres maxi pour une fonction. Tiens, essaie de passer le numéro de ligne comme -1 sur 16 bits, soit 65535, comme ceci:
- Citation :
- 2*65526+65525
Est-ce que ça marche ?Non. Je vais faire de sorte que tu puisses passer 0 comme numéro de ligne et/ou de colonne, et tu pourras ainsi agir sur la colonne 2 de cette manière: - Citation :
- 2*65535
Ca viendra ce soir. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 15 Avr 2016 - 19:34 | |
| Et pourquoi pas des chaînes $ en paramètre par adr()
Pour les attributs, "PTTGISB" > "Times080100"
cela est déjà le cas pour synedit il me semble.
Pour par1% : "0" tout "C1" colonne 1 "L1" ligne 1 "C1L1" cellule 1.1
voir aussi >0 =colonne et <0 =ligne (ou inversement ) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 15 Avr 2016 - 22:02 | |
| KGF.dll V6.33 du 15/04/2016 StringGrid version V5 du 15/04/2016Nouveautés: - GridFunction: code 9: on peut passer ligne et/ou colonne comme 0 pour cibler toute la colonne et/ou ligneModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Dans le programme exemple ci-après, la colonne 9 (hormis la ligne fixe) est passé en gras, italique et justifiée à droite, avec un seul appel à GridFunction: - 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
GridConstants() : ' définir des constantes pour le code fonction de GridFunction
dim res%, l%, c%, RGB%, s$, x%, y%, status%, SG%, SG2%, SGclic% dim M1% : M1% = 0 - 1 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$)) ' passer la colonne 9 en gras, italique et cadrée à droite res% = dll_call6("GridFunction",SG%,GF_TextAttributes,9*65536,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
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)
' taille et couleur des ProgressBars res% = dll_call6("GridFunction",SG%,GF_SetProgressBarAttrib,12,255,0,0) ' 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%
' utiliser la ImageList interne res% = dll_call6("GridFunction",SG%,GF_SetIconLib,2,0,0,0)
' icône 3 sur colonne 5, à gauche res% = dll_call6("GridFunction",SG%,GF_SetIconID,5,0,1,3) ' icône 4 sur cellule 5,3, à droite res% = dll_call6("GridFunction",SG%,GF_SetIconID,5,3,2,4)
' 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 linup: if y%<=1 then return res% = dll_call6("GridFunction",SG%,30,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 dim GF_SetProgressBar : GF_SetProgressBar = 25 : ' définir un rectangle de ProgressBar dim GF_SetProgressBarAttrib : GF_SetProgressBarAttrib = 26 : ' définir hauteur et couleur des ProgrssBars dim GF_SetIconLib : GF_SetIconLib = 27 : ' définir la ImageList des icones dim GF_SetIconID : GF_SetIconID = 28 : ' définir un numéro d'icône pour une zone end_sub
Et voici le résultat: | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 16 Avr 2016 - 13:28 | |
| On a un souci pour le texte centré : Il manque le jour dans la colonne "date" Les "X" de la colonne pointage ont disparu et il ne reste plus que le "C" de "DOC" pour la colonne des doc associés... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 16 Avr 2016 - 13:31 | |
| Intéressant... Je vais voir ça. Là, j'ai une piste précise, ce qui va m'aider. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 16 Avr 2016 - 19:32 | |
| KGF.dll V6.34 du 16/04/2016 StringGrid version V6 du 16/04/2016Nouveautés: - StringGrid: affichage correct de cellules normales centrées avec ou sans icône Modules modifiés: KGF.dllLa doc est inchangée. Les sources sources sont à jour. Cette version corrige un bug dans l'affichage de cellules centrées. Et voici le programme de démo, montrant la colonne 6 avec des cellules centrées: - 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
GridConstants() : ' définir des constantes pour le code fonction de GridFunction
dim res%, l%, c%, RGB%, s$, x%, y%, status%, SG%, SG2%, SGclic% dim M1% : M1% = 0 - 1 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$)) ' passer la colonne 9 en gras, italique et cadrée à droite res% = dll_call6("GridFunction",SG%,GF_TextAttributes,9*65536,256+512+8192,0,0) ' passer la colonne 6 en cadrage centré res% = dll_call6("GridFunction",SG%,GF_TextAttributes,6*65536,4096,0,0) 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
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)
' taille et couleur des ProgressBars res% = dll_call6("GridFunction",SG%,GF_SetProgressBarAttrib,12,255,0,0) ' 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%
' utiliser la ImageList interne res% = dll_call6("GridFunction",SG%,GF_SetIconLib,2,0,0,0)
' icône 3 sur colonne 5, à gauche res% = dll_call6("GridFunction",SG%,GF_SetIconID,5,0,1,3) ' icône 4 sur cellule 5,3, à droite res% = dll_call6("GridFunction",SG%,GF_SetIconID,5,3,2,4)
' 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 linup: if y%<=1 then return res% = dll_call6("GridFunction",SG%,30,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 dim GF_SetProgressBar : GF_SetProgressBar = 25 : ' définir un rectangle de ProgressBar dim GF_SetProgressBarAttrib : GF_SetProgressBarAttrib = 26 : ' définir hauteur et couleur des ProgrssBars dim GF_SetIconLib : GF_SetIconLib = 27 : ' définir la ImageList des icones dim GF_SetIconID : GF_SetIconID = 28 : ' définir un numéro d'icône pour une zone end_sub
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 17 Avr 2016 - 9:16 | |
| Bravo Klaus, tout est rentré dans l' ordre. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 17 Avr 2016 - 11:30 | |
| KGF.dll V6.35 du 17/04/2016 StringGrid version V7 du 17/04/2016Nouveautés: - GridFunction: nouveau code 29: définir un rectangle de cellules avec format d'affichageModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Ce nouveau code permet de gérer des formats d'affichage pour des cellules de 3 types différents: textes simples, cellules numériques et dates et/ou heures. La doc donne la syntaxe de l'appel, et contient des liens vers des pages internet avec la description des formats possibles pour textes, nombres, dates et heures. Dans un premier temps, je n'ai pas intégré tout cela dans la doc - on peut aussi bien le consulter sur le net (nouvel onglet). Pour une valeur numérique, on peut afficher le code hexa, suivi d'un "H", par exemple, en spécifiant le format "%xH", alors que la cellule contient toujours le texte initial en décimal. En cas d'erreur de conversion, le contenu initial sera affiché, précédé d'un "?". Le programme de démo définit un rectangle de cellules contenant la date du jour, et elle sera affichée avec le mois en clair, alors que la cellule contient le format issu de la fonction date$, à savoir jj/mm/aaaa. - 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 M1% : M1% = 0 - 1 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$)) ' passer la colonne 9 en gras, italique et cadrée à droite res% = dll_call6("GridFunction",SG%,GF_TextAttributes,9*65536,256+512+8192,0,0) ' passer la colonne 6 en cadrage centré res% = dll_call6("GridFunction",SG%,GF_TextAttributes,6*65536,4096,0,0) 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)
' taille et couleur des ProgressBars res% = dll_call6("GridFunction",SG%,GF_SetProgressBarAttrib,12,255,0,0) ' Septième zone ProgressBar res% = dll_call6("GridFunction",SG%,GF_SetProgressBar,6,10,7,10)
' huitième zone "cellules formatées" comme date s$ = date$ for l%=4 to 7 for c%=2 to 3 res% = dll_call4("WriteGridCell",SG%,c%,l%,adr(s$)) next c% next l% s$ = "dd mmmm yyyy" res% = dll_call6("GridFunction",SG%,GF_SetFormat,2*65536+4,3*65536+7,2,adr(s$))
' 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%
' utiliser la ImageList interne res% = dll_call6("GridFunction",SG%,GF_SetIconLib,2,0,0,0)
' icône 3 sur colonne 5, à gauche res% = dll_call6("GridFunction",SG%,GF_SetIconID,5,0,1,3) ' icône 4 sur cellule 5,3, à droite res% = dll_call6("GridFunction",SG%,GF_SetIconID,5,3,2,4)
' 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 dim GF_SetProgressBarAttrib : GF_SetProgressBarAttrib = 26 : ' définir hauteur et couleur des ProgrssBars dim GF_SetIconLib : GF_SetIconLib = 27 : ' définir la ImageList des icones dim GF_SetIconID : GF_SetIconID = 28 : ' définir un numéro d'icône pour une zone dim GF_SetFormat : GF_SetFormat = 29 : ' définir un rectabngle de cellules avec n format 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 Lun 18 Avr 2016 - 1:47 | |
| Petite démo de format dans un StringGrid: 10 versions différentes d'afficher la même date: - Code:
-
' test_GridFunction_code_29.bas
' Ce programme teste le code 29 de GridFunction. ' Ce code permet de définir des rectangles de formats dans un GRID
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 M1% : M1% = 0 - 1 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=3" item_add 99,"FixedRows=1" item_add 99,"FixedColumns=0" 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$) res% = dll_call6("GridFunction",SG%,GF_SetColWidth,2,150,0,0) res% = dll_call6("GridFunction",SG%,GF_SetColWidth,3,150,0,0)
for l%=2 to 10 s$ = date$ res% = dll_call4("WriteGridCell",SG%,1,l%,adr(s$)) s$ = date$ res% = dll_call4("WriteGridCell",SG%,3,l%,adr(s$)) next l% ' s$ = date$ ' res% = dll_call4("WriteGridCell",SG%,2,l%,adr(s$))
s$ = "Date" res% = dll_call4("WriteGridCell",SG%,1,1,adr(s$)) s$ = "Format" res% = dll_call4("WriteGridCell",SG%,2,1,adr(s$)) s$ = "Date formattée" res% = dll_call4("WriteGridCell",SG%,3,1,adr(s$))
s$ = "d m y" res% = dll_call4("WriteGridCell",SG%,2,2,adr(s$)) res% = dll_call6("GridFunction",SG%,GF_SetFormat,3*65536+2,3*65536+2,2,adr(s$)) s$ = "dd mm yy" res% = dll_call4("WriteGridCell",SG%,2,3,adr(s$)) res% = dll_call6("GridFunction",SG%,GF_SetFormat,3*65536+3,3*65536+3,2,adr(s$)) s$ = "dd mm yyyy" res% = dll_call4("WriteGridCell",SG%,2,4,adr(s$)) res% = dll_call6("GridFunction",SG%,GF_SetFormat,3*65536+4,3*65536+4,2,adr(s$)) s$ = "dd mmm yyyy" res% = dll_call4("WriteGridCell",SG%,2,5,adr(s$)) res% = dll_call6("GridFunction",SG%,GF_SetFormat,3*65536+5,3*65536+5,2,adr(s$)) s$ = "dd mmmm yyyy" res% = dll_call4("WriteGridCell",SG%,2,6,adr(s$)) res% = dll_call6("GridFunction",SG%,GF_SetFormat,3*65536+6,3*65536+6,2,adr(s$)) s$ = "ddd dd mmmm yyyy" res% = dll_call4("WriteGridCell",SG%,2,7,adr(s$)) res% = dll_call6("GridFunction",SG%,GF_SetFormat,3*65536+7,3*65536+7,2,adr(s$)) s$ = "dddd dd mmmm yyyy" res% = dll_call4("WriteGridCell",SG%,2,8,adr(s$)) res% = dll_call6("GridFunction",SG%,GF_SetFormat,3*65536+8,3*65536+8,2,adr(s$)) s$ = "ddddd" res% = dll_call4("WriteGridCell",SG%,2,9,adr(s$)) res% = dll_call6("GridFunction",SG%,GF_SetFormat,3*65536+9,3*65536+9,2,adr(s$)) s$ = "dddddd" res% = dll_call4("WriteGridCell",SG%,2,10,adr(s$)) res% = dll_call6("GridFunction",SG%,GF_SetFormat,3*65536+10,3*65536+10,2,adr(s$))
' activer les couleurs personnalisées ' res% = dll_call6("GridFunction",SG%,GF_ActivateResetColor,1,0,0,0)
end
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 dim GF_SetProgressBarAttrib : GF_SetProgressBarAttrib = 26 : ' définir hauteur et couleur des ProgrssBars dim GF_SetIconLib : GF_SetIconLib = 27 : ' définir la ImageList des icones dim GF_SetIconID : GF_SetIconID = 28 : ' définir un numéro d'icône pour une zone dim GF_SetFormat : GF_SetFormat = 29 : ' définir un rectabngle de cellules avec n format end_sub
Et voici le résultat: C'est juste un exemple avec la date, mais l'heure est traitée de manière toute aussi intensive. On peut même combiner date et heure dans une même cellule comme ceci: - Code:
-
s$ = date$ + " " + time$ et écrire cette chaîne dans une cellule. Ensuite, on peut combiner les codes format de date et heure (ou date seulement ou heure seulement) pour affichage dans la cellule. Sans parler de toutes les possibilités de formatage des textes et valeurs numériques. Juste une info: une valeur numérique peut contenir un point décimal (cas normal) ou une virgule décimale (cas spécial de l'objet StringGrid, pas de Panoramic !), le résultat sera identique. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 18 Avr 2016 - 7:30 | |
| Klaus, J' ai un souci. Si l' affichage d' une icone se fait bien au départ, celle ci est effacé avec le formatage des colonnes. Il serait bien de spécifier à quel endroit nous devons faire les appels ou plutôt l' ordre des appels pour avoir un affichage correct. J' ai essayé de créer une sub pour afficher ou effacer une icone. ( le but est de remplacer "visuellement" le mot "DOC" par une petite icone ) mais cela ne fonctionne pas. - Code:
-
variables() constantes() labels() init() gui() end
sub variables() dim no% ' variables de SG dim ActiveCol% dim ActiveLin% end_sub
sub constantes() dim_local i% dim titre$ : titre$ = "Essai Formatage StringGrid" ' fichiers externes dim kgf$ : kgf$ = "C:\KGF\KGF.dll" dim ILtoolbar$ : ILtoolbar$ = "C:\ProgramPerso\PanoramicProject\Projets\GestCompte\img\GestCompte.ilb" ' objets panoramic dim mm% : no%=no%+1 : mm%=no% dim sm%(50) : for i%=1 to 50 : no%=no%+1 : sm%(i%)=no% : next i% dim pan% : no%=no%+1 : pan%=no% ' objets cachés pour objets kgf dim SGmemo% : no%=no%+1 : SGmemo%=no% dim SGedit% : no%=no%+1 : SGedit%=no% ' objets kgf dim SG% end_sub
sub labels() label clic,changeTB,change,close0 end_sub
sub init() dll_on kgf$ end_sub
sub gui() dim_local h%,w%,res%,sepcel$,seplin$,pol$,parnul%,RGBfond%,RGBpolice%,txt$
height 0,500 width 0,1000 top 0,(screen_y-height(0))/2 left 0,(screen_x-width(0))/2 caption 0,titre$ panel pan% full_space pan% h% = height(pan%) w% = width(pan%) hide pan% edit SGedit% hide SGedit% on_change SGedit%,change memo SGmemo% hide SGmemo% item_add SGmemo%,"Width="+str$(w%) item_add SGmemo%,"Height="+str$(h%) item_add SGmemo%,"Rows=50" item_add SGmemo%,"Columns=9" item_add SGmemo%,"FixedRows=1" item_add SGmemo%,"FixedColumns=0" sepcel$ = ";" seplin$ = "|" pol$ = "Times" parnul% = 0-1 SG% = dll_call3("CreateStringGrid",handle(0),handle(SGmemo%),handle(SGedit%)) res% = dll_call2("SetGridSeparators",adr(sepcel$),adr(seplin$)) ' res% = DLL_call6("GridFunction",SG%,27,3,adr(ILtoolbar$),0,0) res% = DLL_call6("GridFunction",SG%,27,2,0,0,0) res% = DLL_call6("GridFunction",SG%,28,9,0,1,7) ' formatage des colonnes ' col 1 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,1,100,0,0) res% = DLL_call6("GridFunction",SG%,9,1*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,1,parnul%,RGBfond%,RGBpolice%) txt$ = "Opération" res% = DLL_call4("WriteGridCell",SG%,1,1,adr(txt$)) ' col 2 RGB(215,240,250) RGBfond% = RGB% RGB(255,255,255) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,2,100,0,0) res% = DLL_call6("GridFunction",SG%,9,2*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,2,parnul%,RGBfond%,RGBpolice%) txt$ = "Date" res% = DLL_call4("WriteGridCell",SG%,2,1,adr(txt$)) ' col 3 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,3,100,0,0) res% = DLL_call6("GridFunction",SG%,9,3*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,3,parnul%,RGBfond%,RGBpolice%) txt$ = "Tiers" res% = DLL_call4("WriteGridCell",SG%,3,1,adr(txt$)) ' col 4 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,4,320,0,0) res% = DLL_call6("GridFunction",SG%,9,4*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,4,parnul%,RGBfond%,RGBpolice%) txt$ = "Libellé" res% = DLL_call4("WriteGridCell",SG%,4,1,adr(txt$)) ' col 5 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,5,40,0,0) res% = DLL_call6("GridFunction",SG%,9,5*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,5,parnul%,RGBfond%,RGBpolice%) txt$ = "Mode" res% = DLL_call4("WriteGridCell",SG%,5,1,adr(txt$)) ' col 6 RGB(247,224,250) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,6,100,0,0) res% = DLL_call6("GridFunction",SG%,9,6*65536+0,8202,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,6,parnul%,RGBfond%,RGBpolice%) txt$ = "Débits" res% = DLL_call4("WriteGridCell",SG%,6,1,adr(txt$)) ' col 7 RGB(215,245,179) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,7,100,0,0) res% = DLL_call6("GridFunction",SG%,9,7*65536+0,8202,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,7,parnul%,RGBfond%,RGBpolice%) txt$ = "Crédits" res% = DLL_call4("WriteGridCell",SG%,7,1,adr(txt$)) ' col 8 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,8,40,0,0) res% = DLL_call6("GridFunction",SG%,9,8*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,8,parnul%,RGBfond%,RGBpolice%) txt$ = "P" res% = DLL_call4("WriteGridCell",SG%,8,1,adr(txt$)) ' col 9 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,9,60,0,0) res% = DLL_call6("GridFunction",SG%,9,9*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,9,parnul%,RGBfond%,RGBpolice%) txt$ = "Doc" res% = DLL_call4("WriteGridCell",SG%,9,1,adr(txt$)) ' activation des paramètres personnalisés res% = dll_call6("GridFunction",SG%,8,1,0,0,0) end_sub
clic: return
changeTB: return
change: if number_change = SGedit% RecupColLin(text$(SGedit%)) caption 0,titre$+" - ["+str$(ActiveCol%)+"."+str$(ActiveLin%)+"]" if ActiveCol%=9 Icone() end_if return end_if return
close0: return
' produire une valeur RGB valide sub RGB(R%,G%,B%) if variable("RGB%")=0 then dim RGB% RGB% = (B%*256+G%)*256+R% end_sub
' récupération des coordonnées de la celulle active sub RecupColLin(T$) dim_local sep%,txt$ sep% = instr(T$,"=") if sep%>0 txt$ = right$(T$,len(T$)-sep%) sep% = instr(txt$,",") ActiveCol% = val(left$(txt$,sep%-1)) ActiveLin% = val(right$(txt$,len(txt$)-sep%)) end_if end_sub
' ajout/suppression d' une icone dans la celulle sélectionnée sub icone() dim_local res%,txt$ txt$ = string$(255," ") res% = DLL_call4("GetGridCellText",SG%,ActiveCol%,ActiveLin%,adr(txt$)) txt$ = trim$(txt$) if txt$="" txt$ = "D" res% = DLL_call4("WriteGridCell",SG%,ActiveCol%,ActiveLin%,adr(txt$)) res% = DLL_call6("GridFunction",SG%,28,ActiveCol%,ActiveLin%,1,7) else txt$ = " " res% = DLL_call4("WriteGridCell",SG%,ActiveCol%,ActiveLin%,adr(txt$)) res% = DLL_call6("GridFunction",SG%,28,ActiveCol%,ActiveLin%,0,0) end_if 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 Lun 18 Avr 2016 - 12:32 | |
| KGF.dll V6.36 du 18/04/2016 StringGrid version V7 du 17/04/2016
Nouveautés: - StringGrid: correction d'un bug avec affichage d'une icône dans une cellule centréeModules modifiés: KGF.dllLa doc est inchangée. Les sources sources sont à jour. @Ygeronimi: Dans ton code,, il y avait plusieurs problèmes. Le premier (et plus important) était un bug de l'affichage du texte en cas de cellule centrée avec icône. La présente version corrige cela. Le deuxième est un problème d'ascenseur de fenêtre. Si une cellule avec icône se trouve dans une partie cachée ou partiellement cachée, avant, pendant ou après l'utilisation de l'ascenseur horizontal (et non vertical !), l'icône disparaît, et ce définitivement. Je n'ai pas encore trouvé comment corriger cela. Mais il y a un moyen de contourner cela, en agrandissant la fenêtre de sorte que cela ne se produise plus. Dans ton cas, il suffit d'ajouter 35 pixels ) la largeur de la fenêtre. Le dernier est en fait juste une affaire d'optimisation de l'affichage. Il est plus performant de définir les icônes juste avant la fin de ta SUB GUI, en fait après l'activation des paramètres personnalisés. Le code ci-après reprend ces modifications (à utiliser avec la nouvelle version de la DLL): - Code:
-
variables() constantes() labels() init() gui() end
sub variables() dim no% ' variables de SG dim ActiveCol% dim ActiveLin% end_sub
sub constantes() dim_local i% dim titre$ : titre$ = "Essai Formatage StringGrid" ' fichiers externes dim kgf$ : kgf$ = "KGF.dll" dim ILtoolbar$ : ' ILtoolbar$ = "C:\ProgramPerso\PanoramicProject\Projets\GestCompte\img\GestCompte.ilb" ' objets panoramic dim mm% : no%=no%+1 : mm%=no% dim sm%(50) : for i%=1 to 50 : no%=no%+1 : sm%(i%)=no% : next i% dim pan% : no%=no%+1 : pan%=no% ' objets cachés pour objets kgf dim SGmemo% : no%=no%+1 : SGmemo%=no% dim SGedit% : no%=no%+1 : SGedit%=no% ' objets kgf dim SG% end_sub
sub labels() label clic,changeTB,change,close0 end_sub
sub init() dll_on kgf$ end_sub
sub gui() dim_local h%,w%,res%,sepcel$,seplin$,pol$,parnul%,RGBfond%,RGBpolice%,txt$
height 0,500 width 0,1000 +35 : ' <================= pour éviter l'ascenseur horizontal de la form top 0,(screen_y-height(0))/2 left 0,(screen_x-width(0))/2 caption 0,titre$
panel pan% full_space pan% h% = height(pan%) w% = width(pan%) hide pan%
edit SGedit% hide SGedit% on_change SGedit%,change
memo SGmemo% hide SGmemo% item_add SGmemo%,"Width="+str$(w%) item_add SGmemo%,"Height="+str$(h%) item_add SGmemo%,"Rows=50" item_add SGmemo%,"Columns=9" item_add SGmemo%,"FixedRows=1" item_add SGmemo%,"FixedColumns=0"
sepcel$ = ";" seplin$ = "|" pol$ = "Arial" : ' "Times" parnul% = 0-1
SG% = dll_call3("CreateStringGrid",handle(0),handle(SGmemo%),handle(SGedit%)) res% = dll_call2("SetGridSeparators",adr(sepcel$),adr(seplin$)) ' <========== les lignes suivantes sont déplacées en fin de SUB ' res% = DLL_call6("GridFunction",SG%,27,3,adr(ILtoolbar$),0,0) ' res% = DLL_call6("GridFunction",SG%,27,2,0,0,0) ' res% = DLL_call6("GridFunction",SG%,28,9,0,1,7)
' formatage des colonnes ' col 1 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,1,100,0,0) res% = DLL_call6("GridFunction",SG%,9,1*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,1,parnul%,RGBfond%,RGBpolice%) txt$ = "Opération" res% = DLL_call4("WriteGridCell",SG%,1,1,adr(txt$)) ' col 2 RGB(215,240,250) RGBfond% = RGB% RGB(255,255,255) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,2,100,0,0) res% = DLL_call6("GridFunction",SG%,9,2*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,2,parnul%,RGBfond%,RGBpolice%) txt$ = "Date" res% = DLL_call4("WriteGridCell",SG%,2,1,adr(txt$)) ' col 3 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,3,100,0,0) res% = DLL_call6("GridFunction",SG%,9,3*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,3,parnul%,RGBfond%,RGBpolice%) txt$ = "Tiers" res% = DLL_call4("WriteGridCell",SG%,3,1,adr(txt$)) ' col 4 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,4,320,0,0) res% = DLL_call6("GridFunction",SG%,9,4*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,4,parnul%,RGBfond%,RGBpolice%) txt$ = "Libellé" res% = DLL_call4("WriteGridCell",SG%,4,1,adr(txt$)) ' col 5 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,5,40,0,0) res% = DLL_call6("GridFunction",SG%,9,5*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,5,parnul%,RGBfond%,RGBpolice%) txt$ = "Mode" res% = DLL_call4("WriteGridCell",SG%,5,1,adr(txt$)) ' col 6 RGB(247,224,250) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,6,100,0,0) res% = DLL_call6("GridFunction",SG%,9,6*65536+0,8202,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,6,parnul%,RGBfond%,RGBpolice%) txt$ = "Débits" res% = DLL_call4("WriteGridCell",SG%,6,1,adr(txt$)) ' col 7 RGB(215,245,179) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,7,100,0,0) res% = DLL_call6("GridFunction",SG%,9,7*65536+0,8202,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,7,parnul%,RGBfond%,RGBpolice%) txt$ = "Crédits" res% = DLL_call4("WriteGridCell",SG%,7,1,adr(txt$)) ' col 8 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,8,40,0,0) res% = DLL_call6("GridFunction",SG%,9,8*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,8,parnul%,RGBfond%,RGBpolice%) txt$ = "P" res% = DLL_call4("WriteGridCell",SG%,8,1,adr(txt$)) ' col 9 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,9,60,0,0) res% = DLL_call6("GridFunction",SG%,9,9*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,9,parnul%,RGBfond%,RGBpolice%) txt$ = "Doc" res% = DLL_call4("WriteGridCell",SG%,9,1,adr(txt$)) ' activation des paramètres personnalisés res% = dll_call6("GridFunction",SG%,8,1,0,0,0) ' <========== définition des icônes (lignes déplacées) ' res% = DLL_call6("GridFunction",SG%,27,3,adr(ILtoolbar$),0,0) res% = DLL_call6("GridFunction",SG%,27,2,0,0,0) res% = DLL_call6("GridFunction",SG%,28,9,0,1,7) end_sub
clic: return
changeTB: return
change: if number_change = SGedit% RecupColLin(text$(SGedit%)) caption 0,titre$+" - ["+str$(ActiveCol%)+"."+str$(ActiveLin%)+"]" if ActiveCol%=9 Icone() end_if return end_if return
close0: return
' produire une valeur RGB valide sub RGB(R%,G%,B%) if variable("RGB%")=0 then dim RGB% RGB% = (B%*256+G%)*256+R% end_sub
' récupération des coordonnées de la celulle active sub RecupColLin(T$) dim_local sep%,txt$ sep% = instr(T$,"=") if sep%>0 txt$ = right$(T$,len(T$)-sep%) sep% = instr(txt$,",") ActiveCol% = val(left$(txt$,sep%-1)) ActiveLin% = val(right$(txt$,len(txt$)-sep%)) end_if end_sub
' ajout/suppression d' une icone dans la celulle sélectionnée sub icone() dim_local res%,txt$ txt$ = string$(255," ") res% = DLL_call4("GetGridCellText",SG%,ActiveCol%,ActiveLin%,adr(txt$)) txt$ = trim$(txt$) if txt$="" txt$ = "D" res% = DLL_call4("WriteGridCell",SG%,ActiveCol%,ActiveLin%,adr(txt$)) res% = DLL_call6("GridFunction",SG%,28,ActiveCol%,ActiveLin%,1,7) else txt$ = " " res% = DLL_call4("WriteGridCell",SG%,ActiveCol%,ActiveLin%,adr(txt$)) res% = DLL_call6("GridFunction",SG%,28,ActiveCol%,ActiveLin%,1,0) end_if end_sub | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 18 Avr 2016 - 12:57 | |
| Klaus,
J' ai repris le code que tu as modifié + la nouvelle dll.
Si je définis la colonne 9 comme ayant des icones dans chaque celulle dès le départ. Lorsque je joue avec la scroollbar de droite pour visualiser les lignes masquées, j' ai une playade de fenêtre panoramic.exe qui s'ouvre au et à mesure de l' affichage des celulles cachées.
Puis au milieu de tout çà, j' ai eu droit à un message : Le Canvas ne permet pas de dessiner | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 18 Avr 2016 - 14:19 | |
| Je suis en train de regarder cela. La cause en est que de multiples demandes de réaffichage sont envoyées au Grid, et elles se "chevauchent" - une nouvelle demande arrive avant que la précédente ne soit terminée. Et cela pose des problèmes de mélange dans le canvas. Je suis en train de mettre au point une méthode de synchronisation. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 18 Avr 2016 - 22:12 | |
| KGF.dll V6.37 du 18/04/2016 StringGrid version V8 du 18/04/2016Nouveautés: - StringGrid: suppression des ScrollBars iintégrées à l'objet - GridFunction: nouveau code 30: scroller jusqu'à une ligneModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Suite au problème de scroll soulevé par Ygeronimi, j'ai désactivé complètement les ScrollBars automatiques de l'objet StringGrid. Et en remplacement, j'ai ajouté le code 30 à GridFunction. Ce code permet de scroller directement à un numéro de ligne donné par par1%. Et là, tout marche bien. Il faut donc créer une Scroll_Bar Panoramic et gérer son évènement On_Change, pour appeler la fonction GridFunction avec le code 29 et la valeur de position de la Scroll_Bar. Pour le programme de Ygeronimi, ça donne cela: - Code:
-
' probleme_Ygeronimi_StringGrid.bas
variables() constantes() labels() init() gui() end
sub variables() dim no% ' variables de SG dim ActiveCol% dim ActiveLin% end_sub
sub constantes() dim_local i% dim titre$ : titre$ = "Essai Formatage StringGrid" ' fichiers externes dim kgf$ : kgf$ = "KGF.dll" dim ILtoolbar$ : ' ILtoolbar$ = "C:\ProgramPerso\PanoramicProject\Projets\GestCompte\img\GestCompte.ilb" ' objets panoramic dim mm% : no%=no%+1 : mm%=no% dim sm%(50) : for i%=1 to 50 : no%=no%+1 : sm%(i%)=no% : next i% dim pan% : no%=no%+1 : pan%=no% ' objets cachés pour objets kgf dim SGmemo% : no%=no%+1 : SGmemo%=no% dim SGedit% : no%=no%+1 : SGedit%=no% dim sb% : no%=no%+1 : sb%=no% : ' <================ sb% ' objets kgf dim SG% end_sub
sub labels() label clic,changeTB,change,close0,change_sb : ' <================ change_sb end_sub
sub init() dll_on kgf$ end_sub
sub gui() dim_local h%,w%,res%,sepcel$,seplin$,pol$,parnul%,RGBfond%,RGBpolice%,txt$
height 0,500 width 0,1000 +35 : ' <================= pour éviter l'ascenseur horizontal de la form top 0,(screen_y-height(0))/2 left 0,(screen_x-width(0))/2 caption 0,titre$
panel pan% full_space pan% h% = height(pan%) w% = width(pan%) hide pan%
edit SGedit% hide SGedit% on_change SGedit%,change
memo SGmemo% hide SGmemo% item_add SGmemo%,"Width="+str$(w%-30) item_add SGmemo%,"Height="+str$(h%) item_add SGmemo%,"Rows=50" item_add SGmemo%,"Columns=9" item_add SGmemo%,"FixedRows=1" item_add SGmemo%,"FixedColumns=0"
sepcel$ = ";" seplin$ = "|" pol$ = "Arial" : ' "Times" parnul% = 0-1
SG% = dll_call3("CreateStringGrid",handle(0),handle(SGmemo%),handle(SGedit%)) res% = dll_call2("SetGridSeparators",adr(sepcel$),adr(seplin$)) ' <========== les lignes suivantes sont déplacées en fin de SUB ' res% = DLL_call6("GridFunction",SG%,27,3,adr(ILtoolbar$),0,0) ' res% = DLL_call6("GridFunction",SG%,27,2,0,0,0) ' res% = DLL_call6("GridFunction",SG%,28,9,0,1,7)
' <========== créatioin d'une ScrollBar dans l'application scroll_bar sb% : vertical sb% : left sb%,w%-29 : height sb%,h% min sb%,2 : max sb%,49 : on_change sb%,change_sb
' formatage des colonnes ' col 1 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,1,100,0,0) res% = DLL_call6("GridFunction",SG%,9,1*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,1,parnul%,RGBfond%,RGBpolice%) txt$ = "Opération" res% = DLL_call4("WriteGridCell",SG%,1,1,adr(txt$)) ' col 2 RGB(215,240,250) RGBfond% = RGB% RGB(255,255,255) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,2,100,0,0) res% = DLL_call6("GridFunction",SG%,9,2*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,2,parnul%,RGBfond%,RGBpolice%) txt$ = "Date" res% = DLL_call4("WriteGridCell",SG%,2,1,adr(txt$)) ' col 3 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,3,100,0,0) res% = DLL_call6("GridFunction",SG%,9,3*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,3,parnul%,RGBfond%,RGBpolice%) txt$ = "Tiers" res% = DLL_call4("WriteGridCell",SG%,3,1,adr(txt$)) ' col 4 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,4,320,0,0) res% = DLL_call6("GridFunction",SG%,9,4*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,4,parnul%,RGBfond%,RGBpolice%) txt$ = "Libellé" res% = DLL_call4("WriteGridCell",SG%,4,1,adr(txt$)) ' col 5 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,5,40,0,0) res% = DLL_call6("GridFunction",SG%,9,5*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,5,parnul%,RGBfond%,RGBpolice%) txt$ = "Mode" res% = DLL_call4("WriteGridCell",SG%,5,1,adr(txt$)) ' col 6 RGB(247,224,250) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,6,100,0,0) res% = DLL_call6("GridFunction",SG%,9,6*65536+0,8202,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,6,parnul%,RGBfond%,RGBpolice%) txt$ = "Débits" res% = DLL_call4("WriteGridCell",SG%,6,1,adr(txt$)) ' col 7 RGB(215,245,179) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,7,100,0,0) res% = DLL_call6("GridFunction",SG%,9,7*65536+0,8202,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,7,parnul%,RGBfond%,RGBpolice%) txt$ = "Crédits" res% = DLL_call4("WriteGridCell",SG%,7,1,adr(txt$)) ' col 8 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,8,40,0,0) res% = DLL_call6("GridFunction",SG%,9,8*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,8,parnul%,RGBfond%,RGBpolice%) txt$ = "P" res% = DLL_call4("WriteGridCell",SG%,8,1,adr(txt$)) ' col 9 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,9,60,0,0) res% = DLL_call6("GridFunction",SG%,9,9*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,9,parnul%,RGBfond%,RGBpolice%) txt$ = "Doc" res% = DLL_call4("WriteGridCell",SG%,9,1,adr(txt$)) ' activation des paramètres personnalisés res% = dll_call6("GridFunction",SG%,8,1,0,0,0) ' <========== définition des icônes (lignes déplacées) ' res% = DLL_call6("GridFunction",SG%,27,3,adr(ILtoolbar$),0,0) res% = DLL_call6("GridFunction",SG%,27,2,0,0,0) res% = DLL_call6("GridFunction",SG%,28,9,0,1,7) end_sub
clic: return
change_sb: : ' <============= évènement Scroll_Bar ScrollSG() return
changeTB: return
change: if number_change = SGedit% RecupColLin(text$(SGedit%)) caption 0,titre$+" - ["+str$(ActiveCol%)+"."+str$(ActiveLin%)+"]" if ActiveCol%=9 Icone() end_if return end_if return
close0: return
' déplacer la visualisation du SG <========== gestion de la Scroll_Bar sub ScrollSG() dim_local scr%, res% scr% = position(sb%) res% = DLL_call6("GridFunction",SG%,30,scr%,0,0,0) end_sub
' produire une valeur RGB valide sub RGB(R%,G%,B%) if variable("RGB%")=0 then dim RGB% RGB% = (B%*256+G%)*256+R% end_sub
' récupération des coordonnées de la celulle active sub RecupColLin(T$) dim_local sep%,txt$ sep% = instr(T$,"=") if sep%>0 txt$ = right$(T$,len(T$)-sep%) sep% = instr(txt$,",") ActiveCol% = val(left$(txt$,sep%-1)) ActiveLin% = val(right$(txt$,len(txt$)-sep%)) end_if end_sub
' ajout/suppression d' une icone dans la celulle sélectionnée sub icone() dim_local res%,txt$ txt$ = string$(255," ") res% = DLL_call4("GetGridCellText",SG%,ActiveCol%,ActiveLin%,adr(txt$)) txt$ = trim$(txt$) if txt$="" txt$ = "D" res% = DLL_call4("WriteGridCell",SG%,ActiveCol%,ActiveLin%,adr(txt$)) res% = DLL_call6("GridFunction",SG%,28,ActiveCol%,ActiveLin%,1,7) else txt$ = " " res% = DLL_call4("WriteGridCell",SG%,ActiveCol%,ActiveLin%,adr(txt$)) res% = DLL_call6("GridFunction",SG%,28,ActiveCol%,ActiveLin%,1,0) end_if end_sub | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 19 Avr 2016 - 18:34 | |
| Aïe, aïe, aïe...
Les fenêtre panoramic persiste si l' utilisateur joue trop vite de la scrollbar et cela bloque tout. Je pense, qu' il serait souhaitable de mettre entre parenthèses les fonctions d' icône le temps de trouver une solution et de débloquer les scrollbar de l' objet qui sont utiles et évitent la profusions d' objets. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 19 Avr 2016 - 19:19 | |
| Tu as une mitraillette dans les doigts... Je n'ai plus rencontré ce problème.
De toutes façons, je continue de travailler dessus. en particulier avec une barre de défilement privative, propre au StringGrid. On verra bien. si en attendant, tu peux désactiver les icônes... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 19 Avr 2016 - 23:57 | |
| Non Klaus je me sers du défilement en faisant glisser la barre. Click gauche (en restant appuyé), je simule la roulette... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 20 Avr 2016 - 0:36 | |
| - Citation :
- Click gauche (en restant appuyé), je simule la roulette...
Dans la version que le suis en train de mettre au point, cela marche déjà correctement, pour la scrollbar verticale. Je suis en train de mettre au point la scrollbar horizontale, pour être complet... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 22 Avr 2016 - 16:32 | |
| KGF.dll V6.38 du 22/04/2016 StringGrid version V9 du 22/04/2016Nouveautés: - CreateStringGrid: création automatique des scrollbars nécessairesModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Ne pouvant utiliser les scrollbars appartenant en propre au StringGrid, je les avais désactivés. Il fallait donc les remplacer par des scrollbars Panoramic et gérer les déplacements soi-même. Ceci est maintenant réglé par la création automatique de scrollbars par la fonction CreateStringGrid, selon les besoins, en fonction des valeurs de largeur et hauteur ainsi que du nombre de lignes et colonnes. Chaque scrollbar a deux boutons pour un déplacement d'une ligne ou une colonne, en avant ou en arrière. Un clic dans la zone libre de la scrollbar déplace instantanément la vue de sorte à rendre l'enregistrement visé visible. On peut aussi faire glisser le curseur. Ce dernier indique en permanence une information sur la ligne et la colonne ciblée. Voici le code de Ygéronimi, adapté pour celle version. Je l'ai volontairement réduit en largeur pour provoquer l'apparition de l'ascencent horizontal: - Code:
-
' probleme_Ygeronimi_StringGrid.bas
variables() constantes() labels() init() gui() end
sub variables() dim no% ' variables de SG dim ActiveCol% dim ActiveLin% end_sub
sub constantes() dim_local i% dim titre$ : titre$ = "Essai Formatage StringGrid" ' fichiers externes dim kgf$ : kgf$ = "KGF.dll" dim ILtoolbar$ : ' ILtoolbar$ = "C:\ProgramPerso\PanoramicProject\Projets\GestCompte\img\GestCompte.ilb" ' objets panoramic dim mm% : no%=no%+1 : mm%=no% dim sm%(50) : for i%=1 to 50 : no%=no%+1 : sm%(i%)=no% : next i% dim pan% : no%=no%+1 : pan%=no% ' objets cachés pour objets kgf dim SGmemo% : no%=no%+1 : SGmemo%=no% dim SGedit% : no%=no%+1 : SGedit%=no% ' objets kgf dim SG% end_sub
sub labels() label clic,changeTB,change,close0 end_sub
sub init() dll_on kgf$ end_sub
sub gui() dim_local h%,w%,res%,sepcel$,seplin$,pol$,parnul%,RGBfond%,RGBpolice%,txt$
' height 0,500 ' width 0,1000 : ' <================= pour éviter l'ascenseur horizontal de la form width 0,500 : ' <================= pour utiliser l'ascenseur horizontal de la form top 0,(screen_y-height(0))/2 left 0,(screen_x-width(0))/2 caption 0,titre$
panel pan% full_space pan% h% = height(pan%) w% = width(pan%) hide pan%
edit SGedit% hide SGedit% on_change SGedit%,change
memo SGmemo% hide SGmemo% item_add SGmemo%,"Width="+str$(w%-30) item_add SGmemo%,"Height="+str$(h%) item_add SGmemo%,"Rows=50" item_add SGmemo%,"Columns=9" item_add SGmemo%,"FixedRows=1" item_add SGmemo%,"FixedColumns=0"
sepcel$ = ";" seplin$ = "|" pol$ = "Arial" : ' "Times" parnul% = 0-1
SG% = dll_call3("CreateStringGrid",handle(0),handle(SGmemo%),handle(SGedit%)) res% = dll_call2("SetGridSeparators",adr(sepcel$),adr(seplin$)) ' <========== les lignes suivantes sont déplacées en fin de SUB ' res% = DLL_call6("GridFunction",SG%,27,3,adr(ILtoolbar$),0,0) ' res% = DLL_call6("GridFunction",SG%,27,2,0,0,0) ' res% = DLL_call6("GridFunction",SG%,28,9,0,1,7)
height 0,height(0) + 30 : ' <================ pour afficher la scrollbar horizontale
' formatage des colonnes ' col 1 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,1,100,0,0) res% = DLL_call6("GridFunction",SG%,9,1*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,1,parnul%,RGBfond%,RGBpolice%) txt$ = "Opération" res% = DLL_call4("WriteGridCell",SG%,1,1,adr(txt$)) ' col 2 RGB(215,240,250) RGBfond% = RGB% RGB(255,255,255) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,2,100,0,0) res% = DLL_call6("GridFunction",SG%,9,2*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,2,parnul%,RGBfond%,RGBpolice%) txt$ = "Date" res% = DLL_call4("WriteGridCell",SG%,2,1,adr(txt$)) ' col 3 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,3,100,0,0) res% = DLL_call6("GridFunction",SG%,9,3*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,3,parnul%,RGBfond%,RGBpolice%) txt$ = "Tiers" res% = DLL_call4("WriteGridCell",SG%,3,1,adr(txt$)) ' col 4 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,4,320,0,0) res% = DLL_call6("GridFunction",SG%,9,4*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,4,parnul%,RGBfond%,RGBpolice%) txt$ = "Libellé" res% = DLL_call4("WriteGridCell",SG%,4,1,adr(txt$)) ' col 5 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,5,40,0,0) res% = DLL_call6("GridFunction",SG%,9,5*65536+0,10,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,5,parnul%,RGBfond%,RGBpolice%) txt$ = "Mode" res% = DLL_call4("WriteGridCell",SG%,5,1,adr(txt$)) ' col 6 RGB(247,224,250) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,6,100,0,0) res% = DLL_call6("GridFunction",SG%,9,6*65536+0,8202,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,6,parnul%,RGBfond%,RGBpolice%) txt$ = "Débits" res% = DLL_call4("WriteGridCell",SG%,6,1,adr(txt$)) ' col 7 RGB(215,245,179) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,7,100,0,0) res% = DLL_call6("GridFunction",SG%,9,7*65536+0,8202,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,7,parnul%,RGBfond%,RGBpolice%) txt$ = "Crédits" res% = DLL_call4("WriteGridCell",SG%,7,1,adr(txt$)) ' col 8 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,8,40,0,0) res% = DLL_call6("GridFunction",SG%,9,8*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,8,parnul%,RGBfond%,RGBpolice%) txt$ = "P" res% = DLL_call4("WriteGridCell",SG%,8,1,adr(txt$)) ' col 9 RGB(255,255,255) RGBfond% = RGB% RGB(0,0,0) RGBpolice% = RGB% res% = DLL_call6("GridFunction",SG%,18,9,60,0,0) res% = DLL_call6("GridFunction",SG%,9,9*65536+0,4106,adr(pol$),RGBpolice%) res% = DLL_call6("GridFunction",SG%,4,9,parnul%,RGBfond%,RGBpolice%) txt$ = "Doc" res% = DLL_call4("WriteGridCell",SG%,9,1,adr(txt$)) ' activation des paramètres personnalisés res% = dll_call6("GridFunction",SG%,8,1,0,0,0) ' <========== définition des icônes (lignes déplacées) ' res% = DLL_call6("GridFunction",SG%,27,3,adr(ILtoolbar$),0,0) res% = DLL_call6("GridFunction",SG%,27,2,0,0,0) res% = DLL_call6("GridFunction",SG%,28,9,0,1,7) end_sub
clic: return
changeTB: return
change: if number_change = SGedit% RecupColLin(text$(SGedit%)) caption 0,titre$+" - ["+str$(ActiveCol%)+"."+str$(ActiveLin%)+"]" if ActiveCol%=9 Icone() end_if return end_if return
close0: return
' produire une valeur RGB valide sub RGB(R%,G%,B%) if variable("RGB%")=0 then dim RGB% RGB% = (B%*256+G%)*256+R% end_sub
' récupération des coordonnées de la celulle active sub RecupColLin(T$) dim_local sep%,txt$ sep% = instr(T$,"=") if sep%>0 txt$ = right$(T$,len(T$)-sep%) sep% = instr(txt$,",") ActiveCol% = val(left$(txt$,sep%-1)) ActiveLin% = val(right$(txt$,len(txt$)-sep%)) end_if end_sub
' ajout/suppression d' une icone dans la celulle sélectionnée sub icone() dim_local res%,txt$ txt$ = string$(255," ") res% = DLL_call4("GetGridCellText",SG%,ActiveCol%,ActiveLin%,adr(txt$)) txt$ = trim$(txt$) if txt$="" txt$ = "D" res% = DLL_call4("WriteGridCell",SG%,ActiveCol%,ActiveLin%,adr(txt$)) res% = DLL_call6("GridFunction",SG%,28,ActiveCol%,ActiveLin%,1,7) else txt$ = " " res% = DLL_call4("WriteGridCell",SG%,ActiveCol%,ActiveLin%,adr(txt$)) res% = DLL_call6("GridFunction",SG%,28,ActiveCol%,ActiveLin%,1,0) end_if end_sub | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 24 Avr 2016 - 15:34 | |
| Bonjour Klaus ! Je viens de détecter un petit désagrément dans l'utilisation de DESIGNER. En déplaçant un objet sélectionné qui est dans un form, on a un affichage de chiffres dans le caption du form... Surement un test que tu n'a pas retiré. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 24 Avr 2016 - 16:14 | |
| Désolé, ça m'avait échappé. C'est corrigé. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 24 Avr 2016 - 16:18 | |
| Merci Klaus ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 25 Avr 2016 - 13:26 | |
| Klaus, Je vais te faire une demande qui va te paraître incongrue. Pourrais tu revenir à la version 6.31 pour l' objet StringGrid ? L' ajout d' icônes dans un grid, c' est mignon mais cela pourri le visuel en remplaçant les ScrollBar par d'autres que les siennes. Si l' objet n' en veut pas, il n' en veut pas, tant pis. Vouloir absolument le faire ressemble ( et j' en suis un spécialiste ) à de l' entêtement. Les grandes avancées de la coloration des cellules et du texte qui font très pro, sont gâchées par des ScrollBar dont je ne dirai pas l' impression visuel qu' elle me donne. Ce qui n' empêche pas de garder le travail de recherche pour l' avenir, où, qui sait, une nouvelle librairie permettra de le faire proprement. Donc, voilà ma demande incongrue. Ou alors, lies la désactivation des ScrollBar propre à StringGrid à l' utilisation seule des icônes. Celui qui veut absolument des icônes, se paie seul les vilaines ScrollBar. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 25 Avr 2016 - 14:07 | |
| Plusieurs éléments de réponse, Ygeronimi.
1. L'apparition des ScrollBars n'est pas liée à la présence des icônes. Elle est uniquement conditionnée par l'écart entre la largeur du grid à l'écran et la taille qu'il faudrait pour l'afficher en entier. Et ceci est vrai, séparément, pour la dimension horizontrale et verticale.
2. Si tu ne veux pas les icônes, tout simplement tu ne les utilises pas. Cela n'a aucune autre influence sur le conditionnement du grid. Cependant, je ne vois pas le lien entre les icônes du grid et celles d'une toolbar. Tu peux parfaitement avoir les librairies (fichiers ILB) différentes, pour l'une et pour l'autre. Tu peux même avoir une librairie ILB différente pour chaque grid. Si ce n'est pas du luxe, ça...
3. L'aspect visuel des scrollbars est évidemment à revoir. J'ai dû créer un composant complètement indépendant de Panoramic, étant donné que les scrollbars automatiques du grid déclenchent des évènements intempestifs qui perturbent l'affichage complexe de cet objet. Je prévois de les rendre optionnels, via un paramètre. On pourra alors utiliser des scrollbars Panoramic, comme je l'avais montré dans ma version précédente. Cette option viendra bientôt.
4. De manière générale, je ne peux pas revenir, même partiellement, à une version antérieure de KGF.dll. Les sources actuelles comprennent 1529 fichiers dans 38 dossiers, pour 183 Mo de volume.Est-ce que tu as une petite idée de ce que représenterait la navigation entre différentes versions ? N'oublie pas: ce n'est pas professionnel. Je suis un retraité qui programme pour son plaisir. Certes, la reconnaissance des Panoramiciens est une grande récompense pour moi, mais sache que je ne fais pas que ça, dans la vie: j'ai une famille, j'ai des activités sociales dans ma commune, le jardinage, le bricolage et j'en passe. Alors, je fais ce que je peux, souvent la nuit, pour faire avancer KGF.dll. | |
| | | 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
| |
| |
| |