Mai 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 | 31 | | | Calendrier |
|
| | Grid_xxxxx | |
| | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Grid_xxxxx Dim 3 Sep 2023 - 17:49 | |
| Je te propose un truc: Décris-moi, verbalement, une version simplifié du grid que tu veux créer, avec deux ou 3 actions essentielles à effectuer. Je vais te poster une maquette pour réaliser cela. A partir de cela, tu pourras l'adapter et poursuivre. Qu'est-ce que tu en dis ? | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 3 Sep 2023 - 19:11 | |
| Dès que j'arrive à expliquer ce que je veux faire en moins de 500 lignes. Je suis arrivée à créer un Grid pour afficher des tables type csv. Le nombre de colonnes est fonction de la table mais la plupart sont communes à chaque table. Communes : ID,REF,TYPE,MARQUE,MODELE Variables selon la table : CAPACITE,CADENCE,VOLTAGE,PUISSANCE Communes : DATE ENTREE,SOURCE,DATE DIAG,DIAG,DATE ETAT,ETAT Donc, selon la table qui est chargée, les colonnes varies Je veux séparer certaines colonne par des couleurs pour mieux les visualiser comme tu peux le voir sur mes captures. Je voudrai que lorsque je rajoute une ligne, elle est le même formatage que la précédente. Mais là, je pense que vais devoir revoir tout le formatage, ou du moins celui des cellules à partir de la ligne 2, à chaque fois et pas seulement la ligne ajouter J'en suis à rechercher comment ajouter une ligne. Ne te bile pas, je vais finir par y arriver, même si je râle et je bougonne. Je crois que je m'en veux à moi même. Voilà un lien vers le zip du projet ce sera plus parlant : https://u.pcloud.link/publink/show?code=XZq3S3VZVyNzyASg1abHDAfm7wuCXYtnhApy | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Grid_xxxxx Lun 4 Sep 2023 - 2:17 | |
| J'ai téléchargé le projet et je vais le regarder.
Mais je peur déjà te rassurer sur un point: si tu insères une ligne à un endroit donné, les lignes suivantes se décalent, bien sûr, mais ELLES GARDENT LEUR FORMATTAGE ET TOUS LEURS ATTRIBUTS !
Il n'y a que la ligne insérée dont il faut faire le formattage. Donc, la meilleure façon de procédern c'est de créer une SUB avec en paramètre le numéro de ligne à formatter, et d'appliquer l'ensemble des formattages pour cette ligne dans cette SUB. Ainsi, tu peux appeler cette SUB dans une boucle au départ pour formatter toutes les lignes, puis, plus tard, à la demande, spécifiquement pour la ligne insérée, queque soit l'endroit. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Grid_xxxxx Lun 4 Sep 2023 - 9:42 | |
| J'ai regardé un peu le projet que tu as posté. Je vois que tu as bien progressé. Tu as tout paramétré, ce qui est parfait.
Pour le lancer, est-ce qu'il faut tout fusionner en un seul fichier, dans l'ordre 01, 02, 03, ... ?
Je vois que tu as configuré des aspects différents pour certaines colones. Est-ce que toutes les lignes (sauf les lignes de titres, bien sûr) ont le même aspect ? Je n'ai pas repéré des graphismes variant d'une ligne à l'autre.
Je n'ai pas l'impression que tu utilises les formules de calcul. Est-ce exact ?
J'ai regardé le code de l'objet KGFGrid dans KGF.dll, et j'ai constaté en effet qu'il n'y a pas de fonctins d'insertion ou de suppression de lignes (ou de colonnes). Est-ce que cela serait essentiel depouvoir modifier l'aspect de la table en cours de vie ? On peut imaginer l'insertion de plusieurs manières: décaler les données existantes en insérant une nouvelle ligne vide, décaler également l'aspect visuel (couleurs, hauteurs des lignes, police et style du texte, type de données, etc), décaler également les formules de calcul, les noms des cellules etc ? De quoi as-tu réellement besoin ? | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 4 Sep 2023 - 20:28 | |
| Salut Klaus. Effectivement, dans la précipitation j'ai mis les fichiers séparés et il faut les assembler. Je me suis fait un petit assembleur pour cela et la numérotation m'évite de replacer les fichiers dans l'ordre. Pour l'instant, le grid sert de viewer pour des tables *.csv. Ces tables peuvent 16 colonnes et pour m'y retrouver plus facilement je regroupe sous la même couleur une date et un évènement, exemple : Date DiAG et DIAG. Je regroupe sous la même couleur les colonnes d'attributs communs à plusieurs tables Par contre une table "mémoire vive" aura les colonnes "Capacité", "Voltage" et "Cadence" mais pas "Puissance" Alors qu' un bloc d'alimentation aura "Puissance" et "Voltage". Donc la quantité de colonnes est variable selon la table et le nombre de lignes selon le nombre d'enregistrements. Mais je dois pouvoir ajouter des enregistrements avec le même formatage que la ligne précédente. Je n'utilise pas encore les calculs dans les cellules, peut être plus tard, il faut que j'assimile bien tout çà d'abord. Mais, si tu veux un vrai plus, tu peux te pencher sur le formatage conditionnel à moins qu'il existe déjà et que je l'ai loupé. Je te donne un exemple sur une cellule calculé on pourrait modifier le style du contenu selon le résultat "background,font_color...". Mais il faudrait peut être intégrer une feuille de style dans ce cas là. En tout si tu as besoin d'un C.. pour te donner des idées plus farfelues les unes que les autres... ...je suis toujours là. Des fonctions sympa que j'ai vu c'est le hide sur une ligne ou colonne. "Insert","Add" et "Delete" sont un trio bien utile même si dans le cas de ce projet le "Hide" est mieux. Bon je te laisse digérer tout çà Revoir la doc pour les couleurs et peut être, faire des sous dossiers dans les fonctions pour éclaircir un peu. Tu peux peut être regrouper les fonction de créations pur qui sont inévitables Puis regrouper celles liées au formatage des cellules, lignes et colonnes Puis enfin celles de style. Oups un petit truc. si on pouvait diminuer un peu l'épaisseur des traits des cellules... Lien avec le source assemblé par mon petit outil. https://u.pcloud.link/publink/show?code=XZq3S3VZVyNzyASg1abHDAfm7wuCXYtnhApy | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Grid_xxxxx Mar 5 Sep 2023 - 1:45 | |
| Je vais digérer tout cela et reviendrai vers toi avec des propositions de solutions.
Mais dès maintenant, je te suggère un élément précis: imagine de créer des tables avec TOUTES les colonnes possibles. Et, suivant le contexte, tu cahes (HIDE° certaiines colonnes non utilisées... Est-ce que cela pourrait être envisageable ? | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 6 Sep 2023 - 22:51 | |
| Salut Klaus. Désolé de ce temps de réponse mais j'ai un emploi du temps bien plein ces jours ci et la vague de chaleur m'assomme. Le soir c'est la télé qui me regarde et plus l'inverse . La fonction hide me convient pour ce projet. Je ne veux pas recréer un classeur excel mais juste un visualiseur de table avec style. D' ailleurs, j'en était revenu à créer une feuille de style variable selon la table. | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 12 Sep 2023 - 11:20 | |
| Salut Klaus. Je viens de reprendre avec KgfGrid j'avais quelques minutes devant moi. Je me confronte à un souci d'héritage. Problème de riche me diras tu mais non. Lorsque je crée le grid je lui donne un nombre de colonnes et de lignes de départ avec une hauteur de ligne et une largeur des colonnes par défaut avec : - Code:
-
Nrow%=1 Ncol%=16 GdColW%=100 GdRowH%=22
ResKgf% = dll_call5("SetGlobalKGFGridDimensions",KgfGrid%,Nrow%,Ncol%,GdColW%,GdRowH%) Puisque je change ensuite les largeurs des colonnes une par une avec cette petite boucle et la fonction qui va avec : - Code:
-
for i%=1 to Ncol% wdt% = val(TParam$(i%,2)) ResKgf% = dll_call4("SetKGFGridColumnRangeWidth",KgfGrid%,i%,i%,Wdt%) txt$ = TParam$(i%,1) ResKgf% = dll_call6("SetKGFGridCellRangeValue",KgfGrid%,1,1,i%,i%,adr(txt$)) next i% jusque là tout va bien, la coquille arrive ensuite. Pour ajouter une ligne au grid, je dois m'y prendre avec la fonction dans le premier encadré de code. et dans la doc il est mentionné que la valeur 0 signifiait inchangé sauf que : - Code:
-
Nrow%=2 Ncol%=0 GdColW%=0 GdRowH%=0
ResKgf% = dll_call5("SetGlobalKGFGridDimensions",KgfGrid%,Nrow%,Ncol%,GdColW%,GdRowH%) La fonction ajoute bien une ligne mais je perds le formatage des colonnes en cour de route. l'héritage de la largeur des colonnes se fait sur les valeurs par défaut et non de la ligne précédente. Peut être peux tu y faire quelque chose ?... Sinon on va devoir redéfinir à chaque fois les largeurs des colonnes. Bon maintenant que j'ai planté ma zone, je sors... | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Grid_xxxxx Mar 12 Sep 2023 - 11:50 | |
| Oui, tu as raison. Cette fonction SetGlobalKGFGridDimensions réinitialise globalement tous les paramètres du GRID. Elle est faite pour cela, à appeler au début, une fois pour toutes.
1ère solution: Je suis en train de coder une fonction d'ajout de lignes (à la fin ou n'importe où dans le tableau). C'est eb cours en viendra prochainement.
2ème solution: Tu crées le tableau avec un grand nombre de lignes, et tu paramètres toutes les lignes selon leur besoin. Puis, tu déclare invisibles les lignes excédentaires... C'est aussi simple que cela. Car là, tu peux déclarer une ligne invisible de sorte qu'elle redevienne visible et Hop ! tu as ajouté une ligne à la fin (du moins en apparence) !
Evidemment, la deuxième solution ne marche que pour simuler un ajout de ligne en fin de tableau, et c'est ce que tu essaies de faire, si j'ai bien compris. Mais la solution globale (1ère solution) arrive prochainement. | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 12 Sep 2023 - 19:27 | |
| Avant de dire Youpi j'ai voulu tester cela : - Code:
-
ADD_ROW_KGFGRID(16,2,0,0)
SUB ADD_ROW_KGFGRID(Ncol%,Nrow%,GdColW%,GdRowH%) dim_local i%,Wdt% ResKgf% = dll_call5("SetGlobalKGFGridDimensions",KgfGrid%,Nrow%,Ncol%,GdColW%,GdRowH%) for i%=1 to Ncol% wdt% = val(TParam$(i%,2)) ResKgf% = dll_call4("SetKGFGridColumnRangeWidth",KgfGrid%,i%,i%,Wdt%) next i% END_SUB C'est pas beau mais cela fonctionne sans bug si je le réitère plusieurs fois en incrémentant le paramètre Nrow%. Ceci dit, la fonction sera la bienvenue Le tout est que la ligne soit insérée soit vierge, soit héritière de celle du dessus quand il y en a une. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Grid_xxxxx Mar 12 Sep 2023 - 23:51 | |
| La ligne insérée (ou les lignes insérées) seront la copie exacte de la ligne devant laquelle elles seront insérées (sauf les données qui seront effacées). Si l'insertion a lieu en fin de tabbleau, les lignes ajoutées seront la copie exacte de la dernière ligne du tableau, toujours sans les données.
Tout ceci est déjà codé et actuellement en phase de test. | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 13 Sep 2023 - 18:14 | |
| Petit souci avec l'importation de fichier type csv J'ai "enregistré sous" *.csv une table d'un fichier "libre office" J'ai créé une Sub pour formater le Grid et importer le fichier Avant de faire appel à la procédure, je charge le fichier dans un Dlist pour récupérer le nombre de lignes - Code:
-
SUB IMPORT_FILE_IN_KGFGRID(Ncol%,Nrow%,GdColW%,GdRowH%,BdColor$) dim_local i%,Wdt%,trt% ResKgf% = dll_call5("SetGlobalKGFGridDimensions",KgfGrid%,Nrow%,Ncol%,GdColW%,GdRowH%) for i%=1 to Ncol% wdt% = val(TParam$(i%,2)) ResKgf% = dll_call4("SetKGFGridColumnRangeWidth",KgfGrid%,i%,i%,Wdt%) next i% trt% = ((1*256+1)*256+1)*256+1 ResKgf% = dll_call6("SetKGFGridCellRangeBorderWidth",KgfGrid%,2,Nrow%,1,Ncol%,trt%) ResKgf% = dll_call6("SetKGFGridCellRangeBorderColor",KgfGrid%,2,Nrow%,1,Ncol%,hex(BdColor$)) ResKgf% = dll_call6("SetKGFGridCellRangeColor",KgfGrid%,2,Nrow%,1,5,hex("BFD9FF")) ResKgf% = dll_call6("SetKGFGridCellRangeColor",KgfGrid%,2,Nrow%,Ncol%-5,Ncol%-4,hex("E2E2E2")) ResKgf% = dll_call6("SetKGFGridCellRangeColor",KgfGrid%,2,Nrow%,Ncol%-3,Ncol%-2,hex("D3FFD0")) ResKgf% = dll_call6("SetKGFGridCellRangeColor",KgfGrid%,2,Nrow%,Ncol%-1,Ncol%,hex("D9D0FF"))
ResKgf% = dll_call6("ImportKGFGridCellRangeDataFromCSV",KgfGrid%,2,Nrow%,1,Ncol%,adr(FicTable$))
END_SUB le Grid est bien formaté l'adresse du fichier est ok mais le retour de la fonction d'importation du fichier est -1 | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Grid_xxxxx Mer 13 Sep 2023 - 18:35 | |
| Peut-être parce que tu as 1 ligne en trop dans le fichier ? Essaie avec un fichier CSV d'une seule ligne, en mettant les paramètres r0% et r1% à la même valeur. Vérifie que le nombre de colonnes est correct. | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 13 Sep 2023 - 18:53 | |
| Je crois que j'ai une petite idée. le nombre de ligne est récupéré d' un dlist count(DLTable%)+1 pour la ligne d'entête. Seulement, "libre office" ne ferme pas la dernière cellule d'une ligne par un ";" et je me demande si cela ne vient pas de là. | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 13 Sep 2023 - 20:20 | |
| Je reviens avec des réponses et donc des munitions pour la doc de cet objet. Pour en avoir le coeur net et le cerveau aussi j'ai fait faire une sauvegarde de l'objet vide au format csv vu par kgf et le résultat en est que : chaque cellule est séparé par une virgule (les miennes l'étaient par des "point virgule") chaque contenu est pris entre deux doubles quote "...." ( pas les miens ) les cellules vides sont notées "0" (perso ;; ) pas d'espace ou autre entre les points virgule ceci doit donc expliquer cela et je m'en vais reformater mon fichier csv | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 13 Sep 2023 - 22:35 | |
| Bon, bien que neni rien à faire il y a un truc qui coince. J'ai revu mon fichier, rien n'y fait. Je vais modifier mon approche mais ce sera pour demain. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Grid_xxxxx Jeu 14 Sep 2023 - 0:51 | |
| Oui, j'ai fait exprès: 1. séparer les cellules par des virgules car s'est un fichier CSV (Comma Separated Values) ! 2. J'ai entouré chaque contenu d'une cellule par des guillemets, car le texte dans une cellule êut contenir une virgule !
Tout ceci correspond exactement à la définition d'un fichier CSV.
Vérifie cependant : - si le nombre de colonnres correspond - si les lignes ne sont PAS terminées par un ";" - si le nombre de lignes est correct (de 2 à nrowù correspond à nrow%-1 lignes !)
| |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 14 Sep 2023 - 20:45 | |
| J'ai modifié le fichier csv pour qu'il corresponde aux paramètres de Kgf Grid séparation par "," Texte entre "" Nombre de colonnes ok Nombre de lignes corrigé car l'enregistrement au format csv chez libre office rajoute une ligne vierge.
Rien à faire. Aurais tu un fichier test qui fonctionne ?
Ps l'enregistrement du grid vide au format csv m' enregistre un "1" en cellule r2,c1. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Grid_xxxxx Ven 15 Sep 2023 - 0:27 | |
| Voici l'exemple de la doc, avec l'ajout d'un bouton "Save -> CSV". Il sauvegarde les lignes 5 à 9 avec les colonnes 2 à 5, dans un fichier CSV. Code: - Citation :
-
- Code:
-
' test_KGFGrid.bas
label UserEvent, PrintClipboard, PrintPDF, PrintPartialClipboard, PrintPartialPDF, SaveToCSV dim res%, KG%, f1$, Types$(6), v$, f, img$, pdf$, csv$ 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
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
Fichier CSV résultant: - Code:
-
"Salut","Salut","Salut","" "les","les","les","" "copains","copains","copains","" "3.14159265358979","3.14159265358979","3.14159265358979","0" "23.45","0","0","0" Les 3 images utilisées: "Android.bmp": "marche_1_1_1_2.jpg": "crane.bmp": Et voici la capture d'écran: | |
| | | Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 18 Sep 2023 - 19:57 | |
| J'ai beau tout retourner dans tous les sens, les fonctions de sauvegarde et ouverture dans un fichier type kgf fonctionnent, la sauvegarde sous csv préformaté aussi mais pas l'import d'un fichier csv. | |
| | | lepetitmarocain
Nombre de messages : 335 Age : 81 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: Grid_xxxxx Jeu 19 Oct 2023 - 15:26 | |
| Bonjour à tous.
@Klaus
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 | |
| | | | Grid_xxxxx | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |