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 | |
|
+6papydall Marc jean_debord Minibug JP06 Klaus 10 participants | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 5 Nov 2023 - 12:03 | |
| Salut Klaus. Je viens d'essayer de me connecter par tes liens sous ton message mais site web hs, webdav hs. les liens des zips eux fonctionnent. une petite coquille dans la doc du QRCode : | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 5 Nov 2023 - 12:20 | |
| Merci pour le signalement. Je vais regarder cela. | |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Nov 2023 - 12:47 | |
| Bonjour à tous.
@Klaus.
Puisque tu es dans les modifs de KGF.DLL.
Serait t'il possible lorsque l'on saisit dans un KGFGRID de pouvoir mettre un libellé au lieu de la colonne et
la ligne, et ce pour chaque cellule
Par exemple "Saisir la Date jj/mm/aaaa"
Merci beaucoup
Bon après midi | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Nov 2023 - 13:50 | |
| Je vais y réfléchir.
C'est une suggestion intéressante, mais elle a des implications profondes. Il faudrait, pourchaue cellule: - mémoriser le libellé préfiwant la saisie - sauvegarder/restaurer ces libellés lors des sauvegardes ddes KGFGrid - maintenir ces libellés lors de l'effacement des données des cellules
Je vais analyser cela. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 7 Nov 2023 - 1:11 | |
| KGF.dll V9.86 du 06/11/2023
Nouveautés: - Windows Media Player: chercher VLC 32 bits dans le dossier C:\Program Files (x86)\VideoLAN\VLC
Modules modifiés: KGF.dll
La doc suivra.
Dans mon post de ce jour à 0:06 h, je donne le lien de téléchargement, grâce aux indormations de Marc? Qu'il en soit remercié.
Cette version 32 bits est nécessaire pour fonctionner avec KGF.dll. En effet, Windows est incapable d'accéder une version 64 bits à partir d'un programme 32 bits, et vice-versa. Panoramic et KGF.dll sont en 32 bits... | |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Mar 7 Nov 2023 - 17:18 | |
| bonsoir à tous
@Klaus
merci pour ta réponse concernant la demande pour saisie dans un KFGGRID.
Une suggestion pour la saisie.
Ne pourrais tu pas ajouter une ligne de commande qui pourrait se combiner avec le clic droit pour saisir.
Comme cela il y aura une commande pour chaque cellule à saisir ou modifier.
Cette ligne de commande pourrait contenir le libellé de la ligne
Je ne sais pas si je m'explique comme il faut, mais c'est plus facile à dire qu'à faire.
Bonne soirée à Tous | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 7 Nov 2023 - 18:35 | |
| @Lepetitmarocain: J'ai une idée pour l'implémentation de cette option. Je suis en train d'analyser les sources pour repérer les endroits à modifier. Je pense que ce sera faisable sans pertuber la logique globale.
Patience... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 8 Nov 2023 - 11:14 | |
| KGF.dll V9.87 du 09/11/2023Nouveautés: - KGFGrid: nouvelle fonction SetKGFGridCellRangeQueryText - KGFGrid: si une cellule est éditable, et si un QueryText est défini pour cette cellule, alors ce texte est affiché au-dessus de la fenêtre de saisie (qui, elle, n'est pas changée)Modules modifiés: KGF.dllLa doc suivra. Ceci permet d'affichier des informations d'une ligne concernant la valeur à saisir. Ces informations peuvent être spécifiées cellule par cellule. Elles sont incluses dans la sauvegarde d'un KGFGrid dans un fichier et restaurées de même. Si, pour une cellule éditable, aucun QueryText n'est spécifié, le comportement reste inchangé. Ce texte s'affiche dans une mini-fenêtre horizontale juste au-dessus de la fenêtre de saisie, sur une largeur de 500 pixels. Le programme de démo a été modifié de sorte à ajouter un queryText sur les cellules de (2,2) à (4,5) et de les rendre éditables. Je rappelle que le mode édition est invoqué par un clic droit dans une cellule éditable. Voici le code: - Code:
-
' test_KGFGrid.bas
label UserEvent, PrintClipboard, PrintPDF, PrintPartialClipboard, PrintPartialPDF, SaveToCSV dim res%, KG%, f1$, Types$(6), v$, f, img$, pdf$, csv$, i%, j%, s$ Types$(0) = "Inconnu (traité comme Integer)" Types$(1) = "Chaîne" Types$(2) = "Entier" Types$(3) = "Flottant" Types$(4) = "Booléen" Types$(5) = "Image" Types$(6) = "Mémo" picture 1 : top 1,200 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 memo 2 : top 2,10 : left 2,10 : width 2,400 : bar_both 2 button 3 : top 3,10 : left 3,430 : width 3,150 : caption 3,"Print -> Clipboard" : on_click 3,PrintClipboard button 4 : top 4,40 : left 4,430 : width 4,150 : caption 4,"Print -> PDF" : on_click 4,PrintPDF button 5 : top 5,70 : left 5,430 : width 5,150 : caption 5,"Print partiel-> Clipboard" : on_click 5,PrintPartialClipboard button 6 : top 6,100 : left 6,430 : width 6,150 : caption 6,"Print partiel-> PDF" : on_click 6,PrintPartialPDF button 7 : top 7,130 : left 7,430 : width 7,150 : caption 7,"Save -> CSV" : on_click 7,SaveToCSV dll_on "KGF.dll"
KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) : ' ok res% = dll_call2("SetGlobalKGFGridColors",KG%,hex("FFFF")) : ' ok res% = dll_call5("LocateKGFGrid",KG%,10,100,400,300) : ' ok res% = dll_call5("SetGlobalKGFGridDimensions",KG%,15,20,50,25) : ' ok res% = dll_call4("SetKGFGridRowRangeHeight",KG%,2,4,45) : ' ok res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,10,20) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,2,5,2) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,5,7,2,5,1) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,8,9,2,5,3) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,9,9,6,6,3) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,5,8,6,6,4) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,6,6,5) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,3,3,1,1,6) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,4,2,5,5) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,4,2,5,hex("FF8080")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,2,2,4,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,2,2,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,4,4,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,4,4,2,4,hex("8080FF")) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,2,2,1) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,2,2,2) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,2,2,3) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,3,3,4) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,3,3,6) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,4,4,7) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,4,4,8) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,4,4,9) : ' ok f1$ = "%d €" res% = dll_call6("SetKGFGridCellRangeFormat",KG%,2,4,2,5,adr(f1$)) : ' ok
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,4,17) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,4,0-23) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,4,123) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,4,5,5,0-12) : ' ok v$ = "Salut" res% = dll_call6("SetKGFGridCellRangeValue",KG%,5,5,2,4,adr(v$)) : ' ok v$ = "les" res% = dll_call6("SetKGFGridCellRangeValue",KG%,6,6,2,4,adr(v$)) : ' ok v$ = "copains" res% = dll_call6("SetKGFGridCellRangeValue",KG%,7,7,2,4,adr(v$)) : ' ok f = pi res% = dll_call6("SetKGFGridCellRangeValue",KG%,8,8,2,4,adr(f)) : ' ok
img$ = "Android.bmp" res% = dll_call1("LoadAnyImageFile",adr(img$)) res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,6,6,0) : ' ok img$ = "marche_1_1_1_2.jpg" res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,6,6,adr(img$)) : ' ok img$ = "crane.bmp" res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,6,6,adr(img$)) : ' ok
font_names_load 2 res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,handle(2)) : ' ok clear 2
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,5,5,2,4,1) : ' ok res% = dll_call6("SetKGFGridCellRangeFontItalic",KG%,5,5,2,4,1) : ' ok
v$ = "Arial Black" res% = dll_call6("SetKGFGridCellRangeFontName",KG%,6,6,2,4,adr(v$)) : ' ok res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,6,6,2,4,12) : ' ok
res% = dll_call6("SetKGFGridCellRangeFontColor",KG%,7,7,2,4,hex("FF0000")) : ' ok
v$ = "Prix" res% = dll_call4("SetKGFGridCellName",KG%,9,2,adr(v$)) : ' ok v$ = "Total" res% = dll_call4("SetKGFGridCellName",KG%,9,3,adr(v$)) : ' ok v$ = "Resultat" res% = dll_call4("SetKGFGridCellName",KG%,9,4,adr(v$)) : ' ok v$ = "Premier" res% = dll_call4("SetKGFGridCellName",KG%,2,2,adr(v$)) : ' ok v$ = "Dernier" res% = dll_call4("SetKGFGridCellName",KG%,4,4,adr(v$)) : ' ok v$ = "Suite" res% = dll_call4("SetKGFGridCellName",KG%,9,5,adr(v$)) : ' ok
f1$ = "V10^CPrix^*;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,3,3,adr(f1$)) : ' ok f1$ = "V2^V2^V2^V4^RS;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,4,4,adr(f1$)) : ' ok f1$ = "cPremier|cDernier|RS;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,5,5,adr(f1$)) : ' ok f1$ = "CTotal^V2^*;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,6,6,adr(f1$)) : ' ok
f = 23.45 res% = dll_call6("SetKGFGridCellRangeValue",KG%,9,9,2,2,adr(f)) : ' ok
res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,4,2,5,1) for i%=2 to 4 for j%=2 to 5 s$ = "Saisie cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,4,2,5,adr(s$)) next j% next i%
' ************ démos supplémentaires (désactiver le "if 1=2") if 1=2 message "Les lignes 2 et 3 vont disparaître..." res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,0) : ' ok message "Les lignes 2 et 3 on disparu, et vont réapparaître..." res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,1) : ' ok
message "Les colonnes 4 et 5 vont disparaître..." res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,0) : ' ok message "Les colonnes 4 et 5 on disparu, et vont réapparaître..." res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,1) : ' ok
f1$ = "KGFGrid_backup.txt" res% = dll_call2("SaveKGFGridToFile",KG%,adr(f1$)) : ' ok if res%<0 message "Erreur en sauvegarde du KGFGrid" else message "Le KGFGrid est sauvegardé dans "+f1$ end_if
message "On va supprimer le KGFGrid..." KG% = dll_call1("DeleteKGFGrid",KG%) message "Supprimé "+str$(KG%) KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) : ' ok f1$ = "KGFGrid_backup.txt" res% = dll_call2("LoadKGFGridFromFile",KG%,adr(f1$)) message "Recréé à partir de la sauvegarde" end_if
on_user_event UserEvent
end
UserEvent: UserEvent() return PrintClipboard: PrintClipBoard() return PrintPDF: PrintPDF() return PrintPartialClipboard: PrintPartialClipBoard() return PrintPartialPDF: PrintPartialPDF() return SaveToCSV: SaveToCSV() return sub UserEvent() dim_local lig%, col%, id%, type%, res$, f if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub id% = bin_and(user_event_wparam,hex("0000FFFF")) col% = user_event_lparam/65536 lig% = bin_and(user_event_lparam,hex("0000FFFF")) delete 1 picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 clear 2 type% = dll_call3("GetKGFGridCellType",KG%,lig%,col%) : ' ok select type% case 0: ' Inconnu res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 1: ' Chaîne res$ = string$(255," ") res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(res$)) : ' ok res$ = trim$(res$) case 2: ' Entier res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 3: ' flottant res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(f)) : ' ok res$ = str$(f) case 4: ' Booleen res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 5: ' Image res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok clipboard_paste 1 case 6: ' Mémo res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok end_select message "clic dans KGFGrid ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+" valeur="+res$ if type%=4 res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig%,lig%,col%,col%,1-res%) : ' ok end_if end_sub
sub PrintClipBoard() pdf$ = "" res% = dll_call3("PrintKGFGrid",KG%,0,adr(pdf$)) message "La grille est copiée dans le presse-papier" end_sub
sub PrintPDF() pdf$ = "test_LGFGrid.pdf" res% = dll_call3("PrintKGFGrid",KG%,1,adr(pdf$)) message "La grille est copiée dans "+pdf$ end_sub
sub PrintPartialClipBoard() res% = dll_call6("PrintPartialKGFGrid",KG%,0,3,7,2,4) message "La grille est copiée dans le presse-papier" end_sub
sub PrintPartialPDF() pdf$ = "test_LGFGrid.pdf" res% = dll_call6("PrintPartialKGFGrid",KG%,adr(pdf$),3,7,2,4) message "La grille est copiée dans "+pdf$ end_sub
sub SaveToCSV() csv$ = "test_KGFGrid.csv" res% = dll_call6("ExportKGFGridCellRangeDataAsCSV",KG%,5,9,2,5,adr(csv$)) message "Les données exportées sont dans "+csv$ end_sub
| |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Ven 10 Nov 2023 - 20:20 | |
| Bonsoir à tous
Merci beaucoup Klaus pour la modif concernant la saisie dans un KGFGRID.
C'est bien cela que je désirais, et je l'ai déjà mis en pratique.
Action réaction .
Bonne soirée | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: u Ven 10 Nov 2023 - 23:50 | |
| "Aucune réaction" ?????????? Qu'est-ce que ça veut dire ? Dans le progamme de démo (celui que j'ai publié avec l'annoce de la version !), su tu fais un clic droit dans une des cellules du rectengle entre (2,2) et (4,5); tu as la fenêtre de saisie habituelle, mais au-dessus une tnoute nouvelle fenêtre uniquement composée d'un libellé contenant le texte spécifique pour la cellule concernée. En fermant cette fenêtre de saisie (en validant ou par la crloix rouge), ce libellé disparaît aussi. A toutes sins utiles: 1. télécharge KGF.dll 2. utilise le code ci-après (la partie significative est dans les lignes 113 à 119): - Code:
-
' test_KGFGrid.bas
label UserEvent, PrintClipboard, PrintPDF, PrintPartialClipboard, PrintPartialPDF, SaveToCSV dim res%, KG%, f1$, Types$(6), v$, f, img$, pdf$, csv$, i%, j%, s$ Types$(0) = "Inconnu (traité comme Integer)" Types$(1) = "Chaîne" Types$(2) = "Entier" Types$(3) = "Flottant" Types$(4) = "Booléen" Types$(5) = "Image" Types$(6) = "Mémo" picture 1 : top 1,200 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 memo 2 : top 2,10 : left 2,10 : width 2,400 : bar_both 2 button 3 : top 3,10 : left 3,430 : width 3,150 : caption 3,"Print -> Clipboard" : on_click 3,PrintClipboard button 4 : top 4,40 : left 4,430 : width 4,150 : caption 4,"Print -> PDF" : on_click 4,PrintPDF button 5 : top 5,70 : left 5,430 : width 5,150 : caption 5,"Print partiel-> Clipboard" : on_click 5,PrintPartialClipboard button 6 : top 6,100 : left 6,430 : width 6,150 : caption 6,"Print partiel-> PDF" : on_click 6,PrintPartialPDF button 7 : top 7,130 : left 7,430 : width 7,150 : caption 7,"Save -> CSV" : on_click 7,SaveToCSV dll_on "KGF.dll"
KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) : ' ok res% = dll_call2("SetGlobalKGFGridColors",KG%,hex("FFFF")) : ' ok res% = dll_call5("LocateKGFGrid",KG%,10,100,400,300) : ' ok res% = dll_call5("SetGlobalKGFGridDimensions",KG%,15,20,50,25) : ' ok res% = dll_call4("SetKGFGridRowRangeHeight",KG%,2,4,45) : ' ok res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,10,20) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,2,5,2) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,5,7,2,5,1) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,8,9,2,5,3) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,9,9,6,6,3) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,5,8,6,6,4) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,6,6,5) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,3,3,1,1,6) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,4,2,5,5) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,4,2,5,hex("FF8080")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,2,2,4,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,2,2,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,4,4,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,4,4,2,4,hex("8080FF")) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,2,2,1) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,2,2,2) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,2,2,3) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,3,3,4) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,3,3,6) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,4,4,7) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,4,4,8) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,4,4,9) : ' ok f1$ = "%d €" res% = dll_call6("SetKGFGridCellRangeFormat",KG%,2,4,2,5,adr(f1$)) : ' ok
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,4,17) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,4,0-23) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,4,123) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,4,5,5,0-12) : ' ok v$ = "Salut" res% = dll_call6("SetKGFGridCellRangeValue",KG%,5,5,2,4,adr(v$)) : ' ok v$ = "les" res% = dll_call6("SetKGFGridCellRangeValue",KG%,6,6,2,4,adr(v$)) : ' ok v$ = "copains" res% = dll_call6("SetKGFGridCellRangeValue",KG%,7,7,2,4,adr(v$)) : ' ok f = pi res% = dll_call6("SetKGFGridCellRangeValue",KG%,8,8,2,4,adr(f)) : ' ok
img$ = "Android.bmp" res% = dll_call1("LoadAnyImageFile",adr(img$)) res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,6,6,0) : ' ok img$ = "marche_1_1_1_2.jpg" res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,6,6,adr(img$)) : ' ok img$ = "crane.bmp" res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,6,6,adr(img$)) : ' ok
font_names_load 2 res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,handle(2)) : ' ok clear 2
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,5,5,2,4,1) : ' ok res% = dll_call6("SetKGFGridCellRangeFontItalic",KG%,5,5,2,4,1) : ' ok
v$ = "Arial Black" res% = dll_call6("SetKGFGridCellRangeFontName",KG%,6,6,2,4,adr(v$)) : ' ok res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,6,6,2,4,12) : ' ok
res% = dll_call6("SetKGFGridCellRangeFontColor",KG%,7,7,2,4,hex("FF0000")) : ' ok
v$ = "Prix" res% = dll_call4("SetKGFGridCellName",KG%,9,2,adr(v$)) : ' ok v$ = "Total" res% = dll_call4("SetKGFGridCellName",KG%,9,3,adr(v$)) : ' ok v$ = "Resultat" res% = dll_call4("SetKGFGridCellName",KG%,9,4,adr(v$)) : ' ok v$ = "Premier" res% = dll_call4("SetKGFGridCellName",KG%,2,2,adr(v$)) : ' ok v$ = "Dernier" res% = dll_call4("SetKGFGridCellName",KG%,4,4,adr(v$)) : ' ok v$ = "Suite" res% = dll_call4("SetKGFGridCellName",KG%,9,5,adr(v$)) : ' ok
f1$ = "V10^CPrix^*;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,3,3,adr(f1$)) : ' ok f1$ = "V2^V2^V2^V4^RS;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,4,4,adr(f1$)) : ' ok f1$ = "cPremier|cDernier|RS;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,5,5,adr(f1$)) : ' ok f1$ = "CTotal^V2^*;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,6,6,adr(f1$)) : ' ok
f = 23.45 res% = dll_call6("SetKGFGridCellRangeValue",KG%,9,9,2,2,adr(f)) : ' ok
res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,4,2,5,1) for i%=2 to 4 for j%=2 to 5 s$ = "Saisie cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,4,2,5,adr(s$)) next j% next i%
' ************ démos supplémentaires (désactiver le "if 1=2") if 1=2 message "Les lignes 2 et 3 vont disparaître..." res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,0) : ' ok message "Les lignes 2 et 3 on disparu, et vont réapparaître..." res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,1) : ' ok
message "Les colonnes 4 et 5 vont disparaître..." res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,0) : ' ok message "Les colonnes 4 et 5 on disparu, et vont réapparaître..." res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,1) : ' ok
f1$ = "KGFGrid_backup.txt" res% = dll_call2("SaveKGFGridToFile",KG%,adr(f1$)) : ' ok if res%<0 message "Erreur en sauvegarde du KGFGrid" else message "Le KGFGrid est sauvegardé dans "+f1$ end_if
message "On va supprimer le KGFGrid..." KG% = dll_call1("DeleteKGFGrid",KG%) message "Supprimé "+str$(KG%) KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) : ' ok f1$ = "KGFGrid_backup.txt" res% = dll_call2("LoadKGFGridFromFile",KG%,adr(f1$)) message "Recréé à partir de la sauvegarde" end_if
on_user_event UserEvent
end
UserEvent: UserEvent() return PrintClipboard: PrintClipBoard() return PrintPDF: PrintPDF() return PrintPartialClipboard: PrintPartialClipBoard() return PrintPartialPDF: PrintPartialPDF() return SaveToCSV: SaveToCSV() return sub UserEvent() dim_local lig%, col%, id%, type%, res$, f if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub id% = bin_and(user_event_wparam,hex("0000FFFF")) col% = user_event_lparam/65536 lig% = bin_and(user_event_lparam,hex("0000FFFF")) delete 1 picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 clear 2 type% = dll_call3("GetKGFGridCellType",KG%,lig%,col%) : ' ok select type% case 0: ' Inconnu res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 1: ' Chaîne res$ = string$(255," ") res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(res$)) : ' ok res$ = trim$(res$) case 2: ' Entier res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 3: ' flottant res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(f)) : ' ok res$ = str$(f) case 4: ' Booleen res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 5: ' Image res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok clipboard_paste 1 case 6: ' Mémo res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok end_select message "clic dans KGFGrid ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+" valeur="+res$ if type%=4 res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig%,lig%,col%,col%,1-res%) : ' ok end_if end_sub
sub PrintClipBoard() pdf$ = "" res% = dll_call3("PrintKGFGrid",KG%,0,adr(pdf$)) message "La grille est copiée dans le presse-papier" end_sub
sub PrintPDF() pdf$ = "test_LGFGrid.pdf" res% = dll_call3("PrintKGFGrid",KG%,1,adr(pdf$)) message "La grille est copiée dans "+pdf$ end_sub
sub PrintPartialClipBoard() res% = dll_call6("PrintPartialKGFGrid",KG%,0,3,7,2,4) message "La grille est copiée dans le presse-papier" end_sub
sub PrintPartialPDF() pdf$ = "test_LGFGrid.pdf" res% = dll_call6("PrintPartialKGFGrid",KG%,adr(pdf$),3,7,2,4) message "La grille est copiée dans "+pdf$ end_sub
sub SaveToCSV() csv$ = "test_KGFGrid.csv" res% = dll_call6("ExportKGFGridCellRangeDataAsCSV",KG%,5,9,2,5,adr(csv$)) message "Les données exportées sont dans "+csv$ end_sub
| |
| | | lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: KGF_dll - nouvelles versions Sam 11 Nov 2023 - 13:38 | |
| Bonjour à tous
@Klaus
Je suis désolé si je je ne me suis pas bien exprimé dans mon dernier message.
Le mot Action réaction voulait dire que j'ai demandé une action et celle ci a été suivi de suite
d'une réaction qui a fait que la modif a été faite rapidement.
C'est ce que je dis sur mon message, en notant que j'ai déjà mis en pratique ta modif
Cette "citation" vient du film les Choristes ou elle est citée par le Directeur d'un Orphelinat pour dire que
quand il demande qqchose, celle ci est ensuite exécutée
Désolé encore si je t'ai vexé.
Bonne après midi | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 11 Nov 2023 - 14:59 | |
| Non, non... tu ne m'as pas vexé. Il m'en faudrait pus, tout de même. Simplement, je n'ai pas compris ton allusion, fort judicieuse au demeurant. Ca m'apprendra de reser "au ras des paquerettes...
Je suis content que cela fonctionne et corresponde à tes attentes. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 13 Nov 2023 - 14:21 | |
| Appel aux autres Beta-Testeurs: Qu'est-ce que vous pensez d'un GRID permettant la saisie directe dans les cellules (via le clic droit), avec un lessage de saisie personnalisé pour chaque cellule ? C'est le dernier ajout que j'ai fait à KGFGrid, tout en préservant ses autres possibilités. Le programme de démo est dans le post par lequel j'ai publié la version KGF.dll V9.87 du 09/11/2023, un peu au-dessus. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Lun 13 Nov 2023 - 21:53 | |
| Bonsoir Klaus ! Désolé, je pense qu’il y a un problème. Version de KGF testée : Programme source utilisé : celui de ton post ci-desssus du Ven 10 Nov 2023 - 23:50 ; Lorsque je fais un clic droit sur une cellule, j’ai ceci qui apparaît à l’écran : La "saisie directe dans les cellules" semble défectueuse. Dans la FORM avec le label "R3C4", je ne peux pas effacer la valeur, la touche backspace est inactive. Je peux seulement compléter le champ et valider la nouvelle valeur. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 0:12 | |
| Ben... oui ! La saisie se déclenche par le clic droit. La fenêtre d'information est affichée, que ce soit un clic droit ou un clic gauche, juste pour montrer qu'on peut avoir ces informations dans tous les cas. Evidemment, en exploitation réelle, cettte fenêtre d'information n'existera pas. Par contre, après un clic droit, et après avoir validé cette fenêtre, c'est là que la saisie a lieu, dans une fenêtre spécifique placée exactement dans l'emlacement de la cellule. Et on peut en effet changer le contenu à ce moment? Et le nouveau libellé s'affiche juste au-dessus de cette fenêtre. Donc, clic droit dans une des cellules de (2,2) à (4,5), puis valider la fenêtre d'information, eton est dans la saisie. D'ailleurs, le plus simple pour ne plus avoir la fenêtre d'information, c'est de mettre la ligne 213 en commentaire, comme ceci: Un clic dans un des champs concernés donne alors: Voilà. Désolé si je n'ai pas été assez clair auparavant. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 1:34 | |
| Merci Klaus pour tes réponses. - Citation :
- La fenêtre d'information est affichée, que ce soit un clic droit ou un clic gauche, juste pour montrer qu'on peut avoir ces informations dans tous les cas. Evidemment, en exploitation réelle, cettte fenêtre d'information n'existera pas. Par contre, après un clic droit, et après avoir validé cette fenêtre, c'est là que la saisie a lieu, dans une fenêtre spécifique placée exactement dans l'emlacement de la cellule. Et on peut en effet changer le contenu à ce moment? Et le nouveau libellé s'affiche juste au-dessus de cette fenêtre.
Oui, bien entendu j’avais parfaitement compris. C'est moi qui n’a pas été précis dans mes deux remarques : 1) Si je déplace la fenêtre du programme (LA FORM 0) pour la positionner au milieu de l’écran, alors lors d’un clic droit sur une cellule à éditer, le champ d’édition se positionne en dehors du grid comme on peut le voir sur la capture d’écran de mon précédent post. 2) - Marc a écrit:
- Dans la FORM avec le label "R3C4", je ne peux pas effacer la valeur, la touche backspace est inactive.
Je peux seulement compléter le champ et valider la nouvelle valeur. Je confirme qu'il n'est pas possible d'effacer la précédente valeur inscrite : les touches backspace et del ne sont pas actives sur ce champ, on ne peut qu'ajouter des caractères : EDIT pour ma remarque n° 2 :Je viens de constater qu'il fallait sélectionner avec la souris, le ou les caractères que l'on veut supprimer ou remplacer. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 9:33 | |
| Ca y est - j'ai compris ! Je comprends vite, mais il faut m'expliquer longtemprs... Je vais chercher pourquou in ne peut pas simplement effacer alors que le curseur est bien placé dans le champ de saisie. C'est bizarre. Le positionnement est en effet anormal. Je vais corriger cela. Qu'est-ce que tu as pensé de l'affichage du libellé de saisie, nommé "QueryText" dans les fonctions de gestion du KGFGrid ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 11:37 | |
| KGF.dll V9.89 du 14/11/2023
Nouveautés: - KGFGrid: correction du positionnement de la fenêtre de saisie d'une cellule
Modules modifiés: KGF.dll
La doc est inchangée.
Maintenant, le positionnement de la fenêtre de saisie tient compte de la position de la form à l'écran. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 12:24 | |
| @Klaus Pardonne-moi, j’en oubliais de répondre à tes questions ! - Klaus a écrit:
- Qu'est-ce que vous pensez d'un GRID permettant la saisie directe dans les cellules (via le clic droit), avec un message de saisie personnalisé pour chaque cellule ?
- Citation :
- Qu'est-ce que tu as pensé de l'affichage du libellé de saisie, nommé "QueryText" dans les fonctions de gestion du KGFGrid ?
1 ) « …saisie directe dans les cellules… » Oui, c’est très pratique et plus confortable à l’usage qu’une simple fenêtre qui s’ouvre au milieu de l’écran ! 2) « …via un clic droit… » Là, je suis mitigé ! Il est d’usage que le clic droit soit réservé à l’ouverture du menu contextuel. Peut-être qu’un double-clic gauche aurait été plus intuitif pour passer un mode édition ? (d'accord, je chipote !) 3) « QueryText », oui, c’est bonne idée que je réserverais aux formulaires complexes pour réduire les erreurs de saisie. Merci et bravo pour tout ce travail accompli ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 13:27 | |
| Merci pour tes commentaires, Marc.
Je vais voir si je peux déclencher la saisie par un double-click. En effet; ce serait plus logique.
En ce qui concerne le ueryText, il n'y en a pas par défaut. Pour qu'un tel texte soit affiché, il faut remplir deux conditions: 1. la cellule doit être "éditable" 2. un QueryText doit avoir été spécifié pour la cellule
Ceci est valable, individuellement, pour chaque cellule. On peut donc avoir: - une cellule non éditable - une cellule éditable sans Querytext - une cellule éditable avec QueryText - une cellule non éditable sans QueryText (mais ce dernier ne sera jamais affiché, puisqu'il n'y a pas d'édition)
Toutes ces propriétés sont modifiables dynamiquement, cellule par cellule, ou pour tout un rectangle de cellules. De quoi personnaliser le GRID au maximum.
| |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 13:52 | |
| Merci Klaus ! j'ai testé avec succès le positionnement relatif à la FROM 0 de la fenêtre d'édition ! …Suite de mes tests…
Le chargement d’une sauvegarde semble poser problème. Conditions du test :KGF à jour : version 09.89 du 14/11/2023 Code-source utilisé : - Code:
-
' test_KGFGrid.bas
label UserEvent, PrintClipboard, PrintPDF, PrintPartialClipboard, PrintPartialPDF, SaveToCSV dim res%, KG%, f1$, Types$(6), v$, f, img$, pdf$, csv$, i%, j%, s$ Types$(0) = "Inconnu (traité comme Integer)" Types$(1) = "Chaîne" Types$(2) = "Entier" Types$(3) = "Flottant" Types$(4) = "Booléen" Types$(5) = "Image" Types$(6) = "Mémo" picture 1 : top 1,200 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 memo 2 : top 2,10 : left 2,10 : width 2,400 : bar_both 2 button 3 : top 3,10 : left 3,430 : width 3,150 : caption 3,"Print -> Clipboard" : on_click 3,PrintClipboard button 4 : top 4,40 : left 4,430 : width 4,150 : caption 4,"Print -> PDF" : on_click 4,PrintPDF button 5 : top 5,70 : left 5,430 : width 5,150 : caption 5,"Print partiel-> Clipboard" : on_click 5,PrintPartialClipboard button 6 : top 6,100 : left 6,430 : width 6,150 : caption 6,"Print partiel-> PDF" : on_click 6,PrintPartialPDF button 7 : top 7,130 : left 7,430 : width 7,150 : caption 7,"Save -> CSV" : on_click 7,SaveToCSV dll_on "KGF.dll"
KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) : ' ok res% = dll_call2("SetGlobalKGFGridColors",KG%,hex("FFFF")) : ' ok res% = dll_call5("LocateKGFGrid",KG%,10,100,400,300) : ' ok res% = dll_call5("SetGlobalKGFGridDimensions",KG%,15,20,50,25) : ' ok res% = dll_call4("SetKGFGridRowRangeHeight",KG%,2,4,45) : ' ok res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,10,20) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,2,5,2) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,5,7,2,5,1) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,8,9,2,5,3) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,9,9,6,6,3) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,5,8,6,6,4) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,2,4,6,6,5) : ' ok res% = dll_call6("SetKGFGridCellRangeType",KG%,3,3,1,1,6) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,4,2,5,5) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,4,2,5,hex("FF8080")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,2,2,4,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,2,2,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,3,3,4,4,hex("8080FF")) : ' ok res% = dll_call6("SetKGFGridCellRangeColor",KG%,4,4,2,4,hex("8080FF")) : ' ok
res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,2,2,1) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,2,2,2) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,2,2,3) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,3,3,4) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,3,3,6) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,2,2,4,4,7) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,3,3,4,4,8) : ' ok res% = dll_call6("SetKGFGridCellRangeJustification",KG%,4,4,4,4,9) : ' ok f1$ = "%d €" res% = dll_call6("SetKGFGridCellRangeFormat",KG%,2,4,2,5,adr(f1$)) : ' ok
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,4,17) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,4,0-23) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,4,123) : ' ok res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,4,5,5,0-12) : ' ok v$ = "Salut" res% = dll_call6("SetKGFGridCellRangeValue",KG%,5,5,2,4,adr(v$)) : ' ok v$ = "les" res% = dll_call6("SetKGFGridCellRangeValue",KG%,6,6,2,4,adr(v$)) : ' ok v$ = "copains" res% = dll_call6("SetKGFGridCellRangeValue",KG%,7,7,2,4,adr(v$)) : ' ok f = pi res% = dll_call6("SetKGFGridCellRangeValue",KG%,8,8,2,4,adr(f)) : ' ok
img$ = "Android.bmp" res% = dll_call1("LoadAnyImageFile",adr(img$)) res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,6,6,0) : ' ok img$ = "marche_1_1_1_2.jpg" res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,6,6,adr(img$)) : ' ok img$ = "crane.bmp" res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,6,6,adr(img$)) : ' ok
font_names_load 2 res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,handle(2)) : ' ok clear 2
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,5,5,2,4,1) : ' ok res% = dll_call6("SetKGFGridCellRangeFontItalic",KG%,5,5,2,4,1) : ' ok
v$ = "Arial Black" res% = dll_call6("SetKGFGridCellRangeFontName",KG%,6,6,2,4,adr(v$)) : ' ok res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,6,6,2,4,12) : ' ok
res% = dll_call6("SetKGFGridCellRangeFontColor",KG%,7,7,2,4,hex("FF0000")) : ' ok
v$ = "Prix" res% = dll_call4("SetKGFGridCellName",KG%,9,2,adr(v$)) : ' ok v$ = "Total" res% = dll_call4("SetKGFGridCellName",KG%,9,3,adr(v$)) : ' ok v$ = "Resultat" res% = dll_call4("SetKGFGridCellName",KG%,9,4,adr(v$)) : ' ok v$ = "Premier" res% = dll_call4("SetKGFGridCellName",KG%,2,2,adr(v$)) : ' ok v$ = "Dernier" res% = dll_call4("SetKGFGridCellName",KG%,4,4,adr(v$)) : ' ok v$ = "Suite" res% = dll_call4("SetKGFGridCellName",KG%,9,5,adr(v$)) : ' ok
f1$ = "V10^CPrix^*;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,3,3,adr(f1$)) : ' ok f1$ = "V2^V2^V2^V4^RS;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,4,4,adr(f1$)) : ' ok f1$ = "cPremier|cDernier|RS;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,5,5,adr(f1$)) : ' ok f1$ = "CTotal^V2^*;" res% = dll_call6("SetKGFGridCellRangeFormula",KG%,9,9,6,6,adr(f1$)) : ' ok
f = 23.45 res% = dll_call6("SetKGFGridCellRangeValue",KG%,9,9,2,2,adr(f)) : ' ok
res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,4,2,5,1) for i%=2 to 4 for j%=2 to 5 s$ = "Saisie cellule ["+str$(i%)+","+str$(j%)+"]" res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,4,2,5,adr(s$)) next j% next i%
' ************ démos supplémentaires (désactiver le "if 1=2") if 1=1 message "Les lignes 2 et 3 vont disparaître..." res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,0) : ' ok message "Les lignes 2 et 3 on disparu, et vont réapparaître..." res% = dll_call4("SetKGFGridRowRangeVisible",KG%,2,3,1) : ' ok
message "Les colonnes 4 et 5 vont disparaître..." res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,0) : ' ok message "Les colonnes 4 et 5 on disparu, et vont réapparaître..." res% = dll_call4("SetKGFGridColumnRangeVisible",KG%,4,5,1) : ' ok
f1$ = "KGFGrid_backup.txt" res% = dll_call2("SaveKGFGridToFile",KG%,adr(f1$)) : ' ok if res%<0 message "Erreur en sauvegarde du KGFGrid" else message "Le KGFGrid est sauvegardé dans "+f1$ end_if
message "On va supprimer le KGFGrid..." KG% = dll_call1("DeleteKGFGrid",KG%) message "Supprimé "+str$(KG%) KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1) : ' ok f1$ = "KGFGrid_backup.txt" res% = dll_call2("LoadKGFGridFromFile",KG%,adr(f1$)) message "Recréé à partir de la sauvegarde" end_if
on_user_event UserEvent
end
UserEvent: UserEvent() return PrintClipboard: PrintClipBoard() return PrintPDF: PrintPDF() return PrintPartialClipboard: PrintPartialClipBoard() return PrintPartialPDF: PrintPartialPDF() return SaveToCSV: SaveToCSV() return sub UserEvent() dim_local lig%, col%, id%, type%, res$, f if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub if bin_and(user_event_wparam,hex("00FF0000"))<>hex("00010000") then exit_sub id% = bin_and(user_event_wparam,hex("0000FFFF")) col% = user_event_lparam/65536 lig% = bin_and(user_event_lparam,hex("0000FFFF")) delete 1 picture 1 : top 1,100 : left 1,420 : width 1,150 : height 1,150 : stretch_on 1 clear 2 type% = dll_call3("GetKGFGridCellType",KG%,lig%,col%) : ' ok select type% case 0: ' Inconnu res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 1: ' Chaîne res$ = string$(255," ") res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(res$)) : ' ok res$ = trim$(res$) case 2: ' Entier res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 3: ' flottant res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,adr(f)) : ' ok res$ = str$(f) case 4: ' Booleen res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok res$ = str$(res%) case 5: ' Image res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,0) : ' ok clipboard_paste 1 case 6: ' Mémo res% = dll_call4("GetKGFGridCellValue",KG%,lig%,col%,handle(2)) : ' ok end_select message "clic dans KGFGrid ID="+str$(id%)+" en ligne "+str$(lig%)+" colonne "+str$(col%)+chr$(13)+chr$(10)+"Type="+Types$(type%)+" valeur="+res$ if type%=4 res% = dll_call6("SetKGFGridCellRangeValue",KG%,lig%,lig%,col%,col%,1-res%) : ' ok end_if end_sub
sub PrintClipBoard() pdf$ = "" res% = dll_call3("PrintKGFGrid",KG%,0,adr(pdf$)) message "La grille est copiée dans le presse-papier" end_sub
sub PrintPDF() pdf$ = "test_LGFGrid.pdf" res% = dll_call3("PrintKGFGrid",KG%,1,adr(pdf$)) message "La grille est copiée dans "+pdf$ end_sub
sub PrintPartialClipBoard() res% = dll_call6("PrintPartialKGFGrid",KG%,0,3,7,2,4) message "La grille est copiée dans le presse-papier" end_sub
sub PrintPartialPDF() pdf$ = "test_LGFGrid.pdf" res% = dll_call6("PrintPartialKGFGrid",KG%,adr(pdf$),3,7,2,4) message "La grille est copiée dans "+pdf$ end_sub
sub SaveToCSV() csv$ = "test_KGFGrid.csv" res% = dll_call6("ExportKGFGridCellRangeDataAsCSV",KG%,5,9,2,5,adr(csv$)) message "Les données exportées sont dans "+csv$ end_sub Dans la ligne 123, la condition « if 1=2 » est désactivée en mettant « if 1=1 ». Les 3 images sont présentes dans le répertoire courant. Capture d’écran au lancement du programme de la démo : Je passe tous les différents tests avec succès jusqu'à la sauvegarde. La sauvegarde s’effectue bien. Le fichier « KGFGrid_backup.txt » est bien créé dans le répertoire courant. Anomalie :Lors du chargement de la sauvegarde, la fonction LoadKGFGridFromFile renvoie -1 et le grid reste vierge. J'ai vérifié le nom du fichier externe : il est correct. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 15:40 | |
| Ok. Merci pour ces tests. Je vais regarder cela de suite.
Je viens de mettre une nouvelle version en ligne. Maintenant, le mode édition est appelé par un double clic sur une cellule éditable, au lieu du clic droit auparavant. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 15:42 | |
| KGF.dll V9.90 du 14/11/2023Nouveautés: - KGFGrid: saisie des cellules éditables par double-clic au lieu du clic droit (qui est désactivé)Modules modifiés: KGF.dllLa doc est inchangée. Petit problème dans le code Panoramic du programme de démo. Remplace la ligne 117 par: - Code:
-
res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,i%,i%,j%,j%,adr(s$)) sinon, on a le même QueryText sur toutes ces cellules... | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 16:54 | |
| Merci Klaus ! Le double-clic gauche fonctionne bien. Dans le programme de démo, il faut préalablement mettre la ligne 214 ( message "clic dans KGFGrid ID="+str$...) en REM sinon le deuxième clic du double-clic souris n’est pas pris en compte... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 14 Nov 2023 - 17:11 | |
| KGF.dll V9.91 du 14/11/2023Nouveautés: - KGFGrid: correction d'un bug dans LoadKGFGridFromFileModules modifiés: KGF.dllLa doc est inchangée. Maintenant, la restauration se passera bien. Une petite ligne avait sauté dans mon source, avec toutes ces modifications... mais c'est corrigé. Ta remarque sur le message à désactiver est correcte. En effet, maintenant qu'on passe au double-clic au lieu du clic droit, il y a l'éternel problème de distinction entre clic et double clic. Un double clic génère d'abord un évènement clic, suivi d'un autre évèneme qui est double clic si, et seulement si, le second clic à lieu aux mêmes coordonnées ET avant l'expiration d'un intervalle fixé par un paramètre Windows. Or, si, dans le traitement du clic, on ouvre une fenêtre nécessitant un autre clic (c'est le cas du message , le vrai second clic ne pourra plus être traité, ni dans ce petit laps de temps, ni aux mêmes coordonnées. Dont acte. | |
| | | 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
| |
| |
| |