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 |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Mai 2016 - 11:33 | |
| Ca y est - c'est corrigé partout. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Mai 2016 - 12:50 | |
| Pour faciliter l'utilisation de GridFunction (objet StringGrid), voici une petite SUB qui crée des pseudo-constantes qu'on peut utiliser dans l'appel de GridFunction pour rendre le code plus lisible et éviter des confusions: - Code:
-
' 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 dim GF_Scroll : GF_Scroll = 30 : ' scroller jusqu'à une ligne donnée dim GF_ScrollBars : GF_ScrollBars = 31 : ' autoriser les scrollbars ou non
dim GF_Bold% : GF_Bold% = 256 : ' texte en gras dim GF_Italic% : GF_Italic% = 512 : ' texte en italique dim GF_Underline% : GF_Underline% = 1024 : ' texte souligné dim GF_Strikeout% : GF_Strikeout% = 2048 : ' texte barré dim GF_Left% : GF_Left% = 0 : ' cadré à gauche dim GF_Center% : GF_Center% = 4096 : ' centré dim GF_Right% : GF_Right% = 8192 : ' cadré à droite
dim GF_No : GF_No = 0 : ' pour différentes options dim GF_Yes : GF_Yes = 1 : ' pour différentes options end_sub
Un exemple pour interdire les barres de défilement générées automatiquement: - Code:
-
res% = DLL_call6("GridFunction",SG%,GF_ScrollBars,GF_No,0,0,0) : ' interdire les scrollbars
C'est plus lisible, non ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 23 Mai 2016 - 13:22 | |
| L' idée est bonne, cela peut effectivement faciliter la lecture. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 23 Mai 2016 - 18:11 | |
| Bugman est de retour ! fichier f$ : créé avec la procédure le fichier f$ - Code:
-
#KGF_StringGrid #Structure 20 4 1 0 -2147483643 -2147483633 964 492 0 #End #MetaData SG_color_list_new 70 0 -1 1 16777215 1 Courier New 10 1 0 0 0 11141120 0 1 2 16777215 0 Courier New 10 0 0 0 0 0 0 1 2 15132390 0 Courier New 10 0 0 0 0 0 0 2 2 15132390 0 Courier New 10 0 0 0 0 0 0 1 3 16777215 0 Courier New 10 0 0 0 0 0 0 2 3 16777215 2 Courier New 10 0 0 0 0 0 0 2 3 11466969 2 Courier New 10 0 0 0 0 0 0 1 4 16777215 0 Courier New 10 0 0 0 0 0 0 2 4 16777215 2 Courier New 10 0 0 0 0 0 0 2 4 11466969 2 Courier New 10 0 0 0 0 0 0 1 5 16777215 0 Courier New 10 0 0 0 0 0 0 2 5 16777215 2 Courier New 10 0 0 0 0 0 0 2 5 11466969 2 Courier New 10 0 0 0 0 0 0 1 6 16777215 0 Courier New 10 0 0 0 0 0 0 2 6 16777215 2 Courier New 10 0 0 0 0 0 0 2 6 11466969 2 Courier New 10 0 0 0 0 0 0 1 7 16777215 0 Courier New 10 0 0 0 0 0 0 2 7 16777215 2 Courier New 10 0 0 0 0 0 0 2 7 11466969 2 Courier New 10 0 0 0 0 0 0 1 8 16777215 0 Courier New 10 0 0 0 0 0 0 2 8 16777215 2 Courier New 10 0 0 0 0 0 0 2 8 11466969 2 Courier New 10 0 0 0 0 0 0 1 9 16777215 0 Courier New 10 0 0 0 0 0 0 1 9 15132390 0 Courier New 10 0 0 0 0 0 0 2 9 15132390 0 Courier New 10 0 0 0 0 0 0 1 10 16777215 0 Courier New 10 0 0 0 0 0 0 2 10 16777215 2 Courier New 10 0 0 0 0 0 0 2 10 11466969 2 Courier New 10 0 0 0 0 0 0 1 11 16777215 0 Courier New 10 0 0 0 0 0 0 2 11 16777215 2 Courier New 10 0 0 0 0 0 0 2 11 11466969 2 Courier New 10 0 0 0 0 0 0 1 12 16777215 0 Courier New 10 0 0 0 0 0 0 1 12 15132390 0 Courier New 10 0 0 0 0 0 0 2 12 15132390 0 Courier New 10 0 0 0 0 0 0 1 13 16777215 0 Courier New 10 0 0 0 0 0 0 2 13 16777215 2 Courier New 10 0 0 0 0 0 0 2 13 11466969 2 Courier New 10 0 0 0 0 0 0 1 14 16777215 0 Courier New 10 0 0 0 0 0 0 2 14 16777215 2 Courier New 10 0 0 0 0 0 0 2 14 11466969 2 Courier New 10 0 0 0 0 0 0 1 15 16777215 0 Courier New 10 0 0 0 0 0 0 2 15 16777215 2 Courier New 10 0 0 0 0 0 0 2 15 11466969 2 Courier New 10 0 0 0 0 0 0 1 16 16777215 0 Courier New 10 0 0 0 0 0 0 1 16 15132390 0 Courier New 10 0 0 0 0 0 0 2 16 15132390 0 Courier New 10 0 0 0 0 0 0 1 17 16777215 0 Courier New 10 0 0 0 0 0 0 2 17 16777215 2 Courier New 10 0 0 0 0 0 0 2 17 11466969 2 Courier New 10 0 0 0 0 0 0 1 18 16777215 0 Courier New 10 0 0 0 0 0 0 2 18 16777215 2 Courier New 10 0 0 0 0 0 0 2 18 11466969 2 Courier New 10 0 0 0 0 0 0 1 20 16777215 2 Courier New 10 0 0 0 0 11141120 0 2 20 16777215 2 Courier New 10 0 0 0 0 0 0 2 20 11466969 2 Courier New 10 0 0 0 0 0 0 3 2 16777215 0 Courier New 10 0 0 0 0 0 0 3 2 15132390 0 Courier New 10 0 0 0 0 0 0 4 2 15132390 0 Courier New 10 0 0 0 0 0 0 3 3 16777215 0 Courier New 10 0 0 0 0 0 0 4 3 -1 2 Courier New 10 0 0 0 0 0 0 4 3 12310013 2 Courier New 10 0 0 0 0 0 0 3 4 16777215 0 Courier New 10 0 0 0 0 0 0 4 4 -1 2 Courier New 10 0 0 0 0 0 0 4 4 12310013 2 Courier New 10 0 0 0 0 0 0 3 5 16777215 0 Courier New 10 0 0 0 0 0 0 4 5 -1 2 Courier New 10 0 0 0 0 0 0 4 5 12310013 2 Courier New 10 0 0 0 0 0 0 3 20 16777215 2 Courier New 10 0 0 0 0 11141120 0 4 20 -1 2 Courier New 10 0 0 0 0 0 0 4 20 12310013 2 Courier New 10 0 0 0 0 0 End_SG_color_list_new SG_NoEditorRectangles 0 0 End_SG_NoEditorRectangles SG_EditorFlags 0 0 0 -1 End_SG_EditorFlags SG_ObjectTypes 0 End_SG_ObjectTypes SG_MergedAreas 0 End_SG_MergedAreas SG_Parameters 0 2 10 Courier New 0 0 0 0 0 -1 0 0 0
End_SG_Parameters SG_Formats 0 End_SG_Formats #End #Data DEPENSES 0 MONTANT 0 RECETTES 0 MONTANT 0 HABITATION 0
0 ALLOCATIONS 0
0 Loyer 0
0 RSA 0
0 Charges locatives 0
0 Logement 0
0 Electricité 0
0 Familiales 0
0 Gaz 0
0
0
0 Eau 0
0
0
0 Téléphone / Internet / Tv 0
0
0
0 FRAIS FINANCIERS 0
0
0
0 Frais de gestion de compte 0
0
0
0 Assurances 0
0
0
0 ENFANTS 0
0
0
0 Cantine 0
0
0
0 Transports scolaires 0
0
0
0 Assurance scolaire 0
0
0
0 TRANSPORTS 0
0
0
0 Carburant 0
0
0
0 Assurance 0
0
0
0
0
0
0
0 Total des dépenses : 0
0 Total des recettes : 0
0 #End #End_KGF_StringGrid
Etant donné que j' ouvre un fichier de sauvegarde directement, ma procédure de création du StringGrid le fait avec seulement 2 lignes. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Mai 2016 - 18:38 | |
| C'est un bug dans la fonction de sauvegarde d'un StringGrid. Je publierai bientôt la correction. En attendant, tu peux lire ton fichier en appliquant la modification suivante: Tu cherches: - Citation :
- SG_NoEditorRectangles
0 0 End_SG_NoEditorRectangles et tu supprimes une des lignes "0". Il y a un doublon dans le cas où il n'y a pas de rectangle de cellules interdites à la saisie directe. Ce sera corrigé rapidement. Mais avec ce "patch", tu peux récupérer ton fichier. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Mai 2016 - 18:46 | |
| KGF.dll V6.72 du 23/05/2016
Nouveautés: - SaveGridToFile: correction d'un bug
Modules modifiés: KGF.dll
La doc est inchangée. Les sources sources sont à jour. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 23 Mai 2016 - 19:41 | |
| Tout est rentré dans l' ordre. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 23 Mai 2016 - 21:07 | |
| Bon, je viens d' obtenir mon master en bug. Si on ne spécifie pas l' autorisation ou pas d' écrire directement dans une cellule, le chargement par "LoadGridFromFile" après sauvegarde par "SaveGridToFile" autorise d' office l' écriture. J' ai essayé d' interdire par la fonction 1. Si, la sauvegarde se passe sans encombre, il n' en est pas de même pour le chargement du fichier sauvegardé. Je ne peux mettre ici le fichier de sauvegarde, j' ai une erreur de message trop long. Je te le place sur mon webdav : "savegrid.zip" Une autre constatation, si je charge un fichier de sauvegarde en premier. la hauteur des lignes n' est pas prise en compte. Edit : Comment on récupère le nombre de lignes d' un grid chargé par un fichier de sauvegarde ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 23 Mai 2016 - 21:32 | |
| Bon, apparemment, le message est de ma co...rie. Mais : l' interdiction d' écrire directement dans une cellule (même activée par la fonction 1) n' est pas prise en compte la hauteur des cellules n' est pas prise en compte. (hauteur 20 dans mon grid original pour tout le tableau) Procédure de création du grid. - Code:
-
sub CreateNewStringGrid() dim_local res%,l1%,l2%,sepcel$,seplin$,null%,i%,txt$ if NbreRows%=0 NbreRows%=2 end_if min SGscroll%,1 : max SGscroll%,NbreRows% : position SGscroll%,1 l1% = (w0%-30-200)/2 l2% = 98 null% = 0-1 clear SGmemo% item_add SGmemo%,"Left=5" item_add SGmemo%,"Top=31" item_add SGmemo%,"Width="+str$(w0%-28) item_add SGmemo%,"Height="+str$(h0%-5) item_add SGmemo%,"Rows="+str$(NbreRows%) item_add SGmemo%,"Columns=4" item_add SGmemo%,"FixedRows=1" item_add SGmemo%,"FixedColumns=0" SG% = dll_call3("CreateStringGrid",handle(0),handle(SGmemo%),handle(SGedit%)) sepcel$ = ";" seplin$ = chr$(13)+chr$(10) res% = dll_call2("SetGridSeparators",adr(sepcel$),adr(seplin$)) res% = DLL_call6("GridFunction",SG%,1,0,0,0,0) res% = DLL_call6("GridFunction",SG%,31,0,0,0,0)
res% = DLL_call6("GridFunction",SG%,30,1,0,0,0) res% = DLL_call6("GridFunction",SG%,17,0,20,0,0) res% = DLL_call6("GridFunction",SG%,18,1,l1%,0,0) res% = DLL_call6("GridFunction",SG%,18,2,l2%,0,0) res% = DLL_call6("GridFunction",SG%,18,3,l1%,0,0) res% = DLL_call6("GridFunction",SG%,18,4,l2%,0,0)
res% = DLL_call6("GridFunction",SG%,9,0*65536+1,4362,adr(PolGrid$),CouleurPol2%) txt$="DEPENSES" res% = DLL_call4("WriteGridCell",SG%,1,1,adr(txt$)) txt$="MONTANT" res% = DLL_call4("WriteGridCell",SG%,2,1,adr(txt$)) txt$="RECETTES" res% = DLL_call4("WriteGridCell",SG%,3,1,adr(txt$)) txt$="MONTANT" res% = DLL_call4("WriteGridCell",SG%,4,1,adr(txt$)) res% = DLL_call6("GridFunction",SG%,8,1,0,0,0)
show SGscroll% end_sub le reste du formatage se fait dans une autre procédure qui n' est appelée que si on cré un nouveau grid à formaté et que l' on récupère donc pas le formatage par le fichier de sauvegarde. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 24 Mai 2016 - 0:08 | |
| Je vais me concentrer sur ton dernier message et comparer avec ce qui est sauvegardé et restauré par mes fonctions. Il est fort possible que j'aie oublié l'un ou l'autre des paramètres. Mais plus ce soir. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Mai 2016 - 0:24 | |
| Nouveau truc louche. Lorsque j' enregistre un StringGrid avec un nombre "380.00" par exemple. j' ai un message d' erreur en chargement après. J' ai regardé dans le fichier de sauvegarde et là plein de hiéroglyphes. Je vais remplacer le fichier savegrid.zip sur mon webdav qui est nul et non avenu par celui là. J' ai contourné la récupération du nombre de lignes d' un grid chargé en le loadant dans un dlist et en récupérant la valeur de la ligne 3. du coup, la sub de création crée un grid du bon nombre de lignes et dont la hauteur est formaté par cette sub. mais j' ai toujours le souci de l' autorisation d' écriture dans une cellule. D' autre part, si je déclenche l' écriture direct par un clic...clic / pas un double clic / j' ai un souci en sorti que je t' avais signalé. et je me demande si ce n' est pas cela qui me sauvegarde des trucs bizarres qui ensuite provoquent un bug au chargement. EDIT : J' ai mis le source complet "PanoBudget3.zip" + "savegrid.zip" tout seul | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 24 Mai 2016 - 2:01 | |
| J'ai quand-même fait un petit truc pour corriger les problèmes que tu signales: 1. corriger le problème des hiéroglyphes 2. sauvegarder et restaurer les hauteurs des lignes et largeurs des colonnes. J'ai placé une nouvelle version de KGF.dll dans mon WebDav, dossier DLLs (pas encore sur les sites). Tu pourras corriger ton fichier de sauvegarde en remplaçant simplement toutes ces hiéroglyphes par une seule ligne contenant un seul caractère 1, comme ceci: - Citation :
- SG_EditorFlags
1 1 2 0 End_SG_EditorFlags Tu pourras alors charger ton fichier normalement, puis le sauvegarder immédiatement. La nouvelle sauvegarde ne devrait plus avoir ces hiéroglyphes, mais devrait avoir deux nouvelles sections "RowHeight" et "ColWidth", immédiatement après la ligne #MetaData_V12 qui se trouvera assez au début du fichier. Ces deux sections ont la même structure: d'abord une ligne avec le nombre d'éléments (de lignes ou de colonnes), puis les valeurs correspondantes (hauteurs des lignes ou largeur des colonnes), en pixels. Tu prends alors un éditeur de texte quelconque et tu remplaces éventuellement les valeurs actuelles par celles qui t'intéressent. Tu peux alors recharger ton fichier et ton tableau devrait avoir l'aspect voulu. Si tu veux bien faire l'essai, je serais curieux d'apprendre le résultat... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 24 Mai 2016 - 10:00 | |
| Oups... il y a encore un bug... je cherche...
EDIT
C'est corrigé. Tu peux télécharger KGF.dll de mon WebDav, dossier DLLs et appliquer la procédure décrite ci-dessus. Désolé pour le contretemps. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Mai 2016 - 12:05 | |
| Le problème de sauvegarde égyptienne est bien résolu. La hauteur et largeur des cellules aussi. Le message de sorti (suppression du grid ) après une entrée en saisi direct apparemment lui aussi a disparu. Il me reste à voir pourquoi, la saisi direct est autorisée alors que je lui ai dit non. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 24 Mai 2016 - 12:23 | |
| Super ! Ca avance ! - Citation :
- Il me reste à voir pourquoi, la saisi direct est autorisée alors que je lui ai dit non.
Regarde dans ton fichier de sauvegarde et cherche la section SG_EditorFlags. Quelle est la valeur dans la première ligne de cette section ? Un chiffre 1 signifie "saisie autorisée", un chiffre 0 signifie "saisie interdite". | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Mai 2016 - 12:44 | |
| SG_EditorFlags 1 2 12 0 End_SG_EditorFlags
Mon interdiction est peut être mal placé. Là, elle se trouve juste avant l' interdiction des scroll_bar | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Mai 2016 - 12:55 | |
| SG_EditorFlags 0 0 0 -1 End_SG_EditorFlags
En supprimant la fonction 1 de la création. Le nouveau StringGrid ne permet pas la saisi direct ( normal, c' est comme cela par defaut ). La sauvegarde se fait apparemment correctement mais n' est pas prise en compte lors d' un chargement du fichier de sauvegarde. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 24 Mai 2016 - 12:56 | |
| Autoriser ou non les scrollbars n'a pas d'influence sur l'autorisation ou non de la saisie directe. Ce qui est sûr, à la vue des données que tu as postées, c'est qu'au moment de la sauvegarde, la saisie directe était autorisée. Et donc, en reprise, elle sera autorisée également. Un test à faire: modifie - Citation :
- SG_EditorFlags
1 2 12 0 End_SG_EditorFlags en - Citation :
- SG_EditorFlags
0 2 12 0 End_SG_EditorFlags recharge, sauvegarde tout de suite et vérifie la sauvegarde. Puis essaie de saisir... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Mai 2016 - 14:30 | |
| Bon j' ai repris mes tests à zero. 1 création d' un nouveau grid (fonction1 à 0 saisi interdite) 2 sauvegarde tout de suite 3 fermeture de l' application 4 verif du fichier de sauvegarde, les paramètres sont : - Code:
-
SG_EditorFlags 0 0 0 -1 End_SG_EditorFlags 5 relance de l' appli 6 ouverture du fichier de sauvegarde 7 verif des paramètres du fichier - Code:
-
SG_EditorFlags 0 0 0 -1 End_SG_EditorFlags 8 clic dans une cellule ( ma petite fenetre pour creer une entrée s' ouvre ) 9 par erreur (voulu) je clique sur la cellule, la saisi direct est active, curseur dans la cellule 10 je clique sur le bouton de validation de ma petite fenêtre (elle se ferme, rien dans la cellule) 11 je clic sur une autre cellule, l' entrée est visible dans la cellule précédente et ma petite fenêtre se ré-ouvre. 12 je sauvegarde le grid 13 je quitte l' appli 14 verif du fichier sauvegardé - Code:
-
SG_EditorFlags 1 1 3 0 End_SG_EditorFlags Là y a un blème... bon, je continu 15 je change les paramètres directement dans le fichier de sauvegarde (0.1.3.0) 16 je relance l' appli et ouvre le fichier de sauvegarde 17 je refais les étapes 8,9 Même tarif, même punition 18 je sauvegarde le grid 19 je quitte l appli 20 verif du fichier de sauvegarde : - Code:
-
SG_EditorFlags 1 2 9 0 End_SG_EditorFlags Grrrr, je ne sais si c' est normal pour les autres mais le 0 s' est re-transformé en 1 | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Mai 2016 - 14:51 | |
| Il y a quelques jours, on parlait de la possibilité, d'ajouter un retour supplémentaire dans l' édit pour capturer un change dans une cellule par saisi direct.
Tu me disais, que cela pourrai se faire mais que cela provoquerait un change sur l' edit à chaque caractère.
Au lieu de le faire sur chaque caractere est il possible de le faire sur les touches : Entrée Tab Retour chariot. cela limiterait les on_change et signalerait la validation du contenu de la cellule.
exemple de l' edit
SG00000000click=1,1 à l' entrée dans la cellule
SG00000000click=1,1,v1,v1 à la validation
v1,v1 cellule validé
Edit: si il possible d' intercepter un évènement clavier ( les 3 touches mentionnées au dessus ) peut être serait il judicieux d' associer la fonction à un edit différent. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 24 Mai 2016 - 22:45 | |
| Oh là, ça se bouscule !
Bon, je vais déjà regarder le problème de l'autorisation de saisie qui semble apparaitre spontanément...
Pour les touches spéciales - je vais regarder ça plus tard. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 25 Mai 2016 - 0:43 | |
| KGF.dll V6.73 du 24/05/2016
Nouveautés: - SaveGridToFile et LoadGridFromFile: prise en compte les hauteurs des lignes et largeurs des colonnes - StringGrid en général: correction d'un bug qui activait le mode édition lors d'un clic dans une cellule
Modules modifiés: KGF.dll
La doc est inchangée. Les sources sources sont à jour. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 25 Mai 2016 - 1:23 | |
| Bravo Klaus ! Le problème de l' interdiction de sais direct est bel et bien résolu. Je vais patienter pour l' interception d' une validation de saisi direct. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 25 Mai 2016 - 2:38 | |
| KGF.dll V6.74 du 25/05/2016Nouveautés: - GridFunction: nouveau code 32Modules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Ce nouveau code permet de spécifier le handle d'un objet EDIT qui recevra un message chaque fois que le curseur quitte une cellule en mode "saisie directe". Extraits de la doc de GridFunction: - Citation :
- Le code action 32 permet de spécifier le handle d'un objet EDIT recevant un message chaque fois que le curseur quitte une cellule qui était en mode édition. Ce message a le format suivant:
SGn...nleave=x,y=données Ceci permet de réagir sur le changement de contenu d'une cellule. Pour cela, il suffit de déclarer un ON_CHANGE sur cet objet EDIT particulier. et Il n'est pas possible de réagir au niveau des touches sans introduire une véritable usine à gaz. En effet, les touches suivantes peuvent quitter une cellule: CR, TAB, les 4 flèches, page précédente/suivante, début/fin, alt suivi d'un raccourci d'un objet quelconque. Il y a encore d'autres circonstances qui ne dépendent pas directement de touches du clavier, mais qui font néanmoins que le curseur quitte la cellule en cours de saisie. Là, ce que j'ai fait, c'est d'envoyer le message (contenant ligne, colonne et données de la cellule) chaque fois que le curseur quitte une cellule qui était en cours de saisie directe, si le handle du EDIT a été installé par GridFunction code 32. Et bien évidemment, le paramètre par1%=0 désactive cela, ce qui est l'état par défaut. Et voici le programme de démo qui montre l'effet: - 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, sortir
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 97 : ' hide 97 top 97,300 : width 97,150 : left 97,250 edit 98 : ' hide 98 top 98,300 : width 98,130 : 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,GF_Bold%+GF_Italic%+GF_Right%,0,0) ' passer la colonne 6 en cadrage centré res% = dll_call6("GridFunction",SG%,GF_TextAttributes,6*65536,GF_Center%,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,150 : caption 3,"Sortir" : on_click 3,sortir
' 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,450 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$))
' déclarer le EDIT pour le changement de cellules res% = dll_call6("GridFunction",SG2%,CellChangeEditHandle,handle(97),0,0,0)
end
sub RGB(R%,G%,B%) : ' produire une valeur RGB valide RGB% = (B%*256+R%)*256+G% end_sub
sortir: message "sauvegarde" s$ = "Sauvegarde_StringGrid2.txt" res% = dll_call3("SaveGridToFile",SG2%,0,adr(s$)) message "fini" res% = dll_call1("KillProcessByHandle",handle(0)) 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 dim GF_Scroll : GF_Scroll = 30 : ' scroller jusqu'à une ligne donnée dim GF_ScrollBars : GF_ScrollBars = 31 : ' autoriser les scrollbars ou non dim CellChangeEditHandle : CellChangeEditHandle = 32 : ' handle d'un EDIT recevant les messages de changement de cellule
dim GF_Bold% : GF_Bold% = 256 : ' texte en gras dim GF_Italic% : GF_Italic% = 512 : ' texte en italique dim GF_Underline% : GF_Underline% = 1024 : ' texte souligné dim GF_Strikeout% : GF_Strikeout% = 2048 : ' texte barré dim GF_Left% : GF_Left% = 0 : ' cadré à gauche dim GF_Center% : GF_Center% = 4096 : ' centré dim GF_Right% : GF_Right% = 8192 : ' cadré à droite
dim GF_No : GF_No = 0 : ' pour différentes options dim GF_Yes : GF_Yes = 1 : ' pour différentes options end_sub
La sub GridConstants() a été complétée. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 25 Mai 2016 - 11:47 | |
| | |
| | | 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
| |
| |
| |