Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| KGF_dll - nouvelles versions | |
|
+8JL35 Marc papydall Jicehel Yannick pascal10000 Minibug Klaus 12 participants | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 1 Juin 2016 - 14:19 | |
| Klaus,
J' ai placé une version de mon "PanoBudget" avec bug sur mon webdav. Cette version bug depuis les changements de formatage des nombres dans les cellules. Et tous les bugs (enfin ceux auxquels j' ai eu droit) viennent lorsque je charge une sauvegarde.
Deux idées : soit tu as oublié de reporter une modif dans les fonctions Save/Load soit Panoramic par en cacahuète.
car les messages que j' ai sont parfois incohérents avec des pointages de ligne d' erreur douteux. Ex: une ligne qui ne contient que "end_sub". | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 1 Juin 2016 - 14:29 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 1 Juin 2016 - 14:45 | |
| Je prends un exemple : -je lance le programme -je crée un Budget -Je sauvegarde ce budget sans rien ajouter -je clique sur ouvrir -je charge le budget sauvegardé -je rentre une valeur dans une cellule correspondant à une rubrique -je quitte la cellule par la flèche "bas" du clavier (ce qui, jusqu' à présent, fonctionne lors de la création d' un budget) et là patatra... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 1 Juin 2016 - 14:46 | |
| Je ne vois rien d'anormal au niveau des sauvegardes et restaurations. Regarde le programme de démo suivant. J'y ai défini 3 rectangles (d'une cellule chacun) avec un format différent, j'ai chargé la valeur 1234.56 dans chacune. Puis le grid est sauvegardé, on crée second grid et on restaure la sauvegarde dans le second grid. Et on retrouve tout - données et format, correctement. - 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%, c1$, c2$, c3$ 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,180 : 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)
' placer une valeur numérique dans les cellules 10,2, 10,3 et 10,4: s$ = "1234.56" res% = dll_call4("WriteGridCell",SG%,10,2,adr(s$)) res% = dll_call4("WriteGridCell",SG%,10,3,adr(s$)) res% = dll_call4("WriteGridCell",SG%,10,4,adr(s$)) ' formater la cellule 10,2 s$ = "%g" : ' général res% = dll_call6("GridFunction",SG%,GF_SetFormat,10*65536+2,10*65536+2,1,adr(s$)) ' formater la cellule 10,3 s$ = "%n" : ' numérique res% = dll_call6("GridFunction",SG%,GF_SetFormat,10*65536+3,10*65536+3,1,adr(s$)) ' formater la cellule 10,4 s$ = "%m" : ' monétaire res% = dll_call6("GridFunction",SG%,GF_SetFormat,10*65536+4,10*65536+4,1,adr(s$))
' 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$))
' relire le texte numérique formaté des cellules formatées: c1$ = string$(20," ") c2$ = string$(20," ") c3$ = string$(20," ") res% = dll_call4("GetNumericGridCellText",SG2%,10,2,adr(c1$)) res% = dll_call4("GetNumericGridCellText",SG2%,10,3,adr(c2$)) res% = dll_call4("GetNumericGridCellText",SG2%,10,4,adr(c3$)) message "(10,2)="+str$(val(trim$(c1$)))+" "+"(10,3)="+str$(val(trim$(c2$)))+" "+"(10,4)="+str$(val(trim$(c3$)))
' déclarer le EDIT pour le changement de cellules ' choisir une des deux solutions suivantes: ' avec par2%=1 pour signaler toutes les sorties d'une cellule res% = dll_call6("GridFunction",SG2%,CellChangeEditHandle,handle(97),GF_Yes,0,0) ' avec par2%=0 pour signaler uniquement les sorties d'une cellule modifiée ' res% = dll_call6("GridFunction",SG2%,CellChangeEditHandle,handle(97),GF_No,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
Je crains que, si tu as un problème, cela ne vienne d'ailleurs. Analyse le fichier de sauvegarde. Est-ce qu'il y a une anomalie dans les données enregistrées pour les cellules ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 1 Juin 2016 - 14:48 | |
| On s'est croisé. Il faudra que tu fasses un ZIP pour cela, avec un mode d'emploi précis pour provoquer le crash, et je pourrai le tracer... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 1 Juin 2016 - 15:11 | |
| Le zip avec la version bugguer est sur mon webdav mais pour l' apparition des bugs, à chaque lancement je n' ai jamais la même chose. Pour ce qui est d' une incohérence dans le fichier de sauvegarde, la seule que je relève est que les valeurs sauvegardées sont celles entrées et non celles affichées : je rentre 100 il est affiché 100,00 € et sauvegardé 100je rentre 100.00 il est affiché 100,00 € et sauvegardé 100.00Edit: Autre chose, tu charge la sauvegardes dans un grid différent dans mon programme, je détruit le grid en crée un nouveau avant de charger la sauvegarde. Peut être y a t il une question de délai entre les fonctions. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 1 Juin 2016 - 17:34 | |
| - Citation :
- les valeurs sauvegardées sont celles entrées et non celles affichées
ça, c'est normal. On sauvegarde le contenu physique de la cellule. Ce que tu vois à l'écran, c'est juste la donnée reformatée pour affichage, pas le contenu de la cellule. Je vais regarder le ZIP ce soir. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 1 Juin 2016 - 17:52 | |
| La fonction GetWindowsFoldersPath est maintenant entièrement documentée. On la trouve dans la section "Gestion des fichiers". Il suffit de recharger KGF.chm, la DLL n'est pas modifiée. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mer 1 Juin 2016 - 18:01 | |
| Merci Klaus !
Très intéressante cette petite fonction GetWindowsFoldersPath. J'ai déjà quelques idées en tête... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 1 Juin 2016 - 18:49 | |
| @ Klaus, Pourtant, je crois que j' ai mis le doigt sur quelque chose. Test n° 1245859967987857 Je lance le programme Je crée un Budget (simple Loyer puis charges locatives et enfin salaire) je rentre 500.00 en loyer je rentre 100 en charges locatives tout va bien, je sauvegarde. je quitte le programme je regarde dans le fichier de sauvegarde: j' ai 500.00 en loyer et 100 en charges locatives je relance le programme Ouvrir (selection de la sauvegarde) Valider Plantage, même pas de message, enfin si : Panoramic a cessé de fonctionner je vais dans le fichier de sauvegarde je change 100 en 100.00je relance le programme etc... Affichage correct, pas de plantage à première vue. Lors d' un essai avant il me signalait une erreur sur la ligne : res% = DLL_call4("GetGridCellText",SG%,2,NbreRows%,adr(txt$)) je n' ai pas changé pour la fonction numérique, vu que j' avais fait la modif nécessaire en panoramic pour cette fonction et que l' erreur panoramic était résolu. Maintenant, je vais faire le test avec la fonction numérique... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 2 Juin 2016 - 13:01 | |
| KGF.dll V6.81 du 02/06/2016Nouveautés: - StringGrid: en mode "édition directe", on génère maintenant un évènement lors de la frappe de ReturnModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. J'ai ajouté cet évènement afin de pouvoir valider une saisie directe dès la frappe de Return, sans avoir besoin de cliquer dans une autre cellule. L'évènement généré est: - Citation :
- SGn...nleave=x,y=d...d si la cellule est effectivement quittée
SGn...nreturn=x,y=d...d si la touche RETURN a été frappée On peut donc même faire la distinction entre un clic dans une autre cellule et la frappe d'un Return. Je l'ai testé avec le programme de Ygeronimi. Il a fallu adapter la routine évènement, car, après avoir désactivé le ON_CHANGE sur les objets EDIT recevant les évènements, il n'y avait pas de ON_CHANGE. Donc, les routines évènements sont devenus ceci: - Code:
-
... ' *********************** if number_change = SGedit% off_change SGedit% RecupInfoFromStringGrid() on_change SGedit%,change return end_if ' *********************** if number_change = SGeditEvent% off_change SGeditEvent% DetectCellChange() MajAffichResteAV() on_change SGeditEvent%,change return end_if ... Et, automatiquement, les totaux se font dès la frappe de Return, tout comme lors d'un clic dans une autre cellule. C'est donc un fonctionnement plus intuitif. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Juin 2016 - 13:55 | |
| Je vais rechargé la dll vite, très vite... PS: As tu pu voir un peu les bugs ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 2 Juin 2016 - 14:07 | |
| Non, pas encore. Je vais faire ça maintenant. Je voulais finir ce truc du Return avant de toucher à un autre aspect de cette partie de la DLL. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Juin 2016 - 14:14 | |
| En tout cas, le return fonctionne au poil. Bravo Klaus. Là, j' ai un rendez vous que malheureusement je ne peux éviter mais je serai de retour vers 16h30. N' hésites pas à me poser des questions, je réponds dès que je rentre. Autant j' ai laissé certains programmes de côté, autant celui là je tiens à le finir et proprement. Les avancés de celui là me permettront de mettre à jour une version avec kgf de GestCompte. Il me faudra faire les fichiers d' aide et là je suis sûr que tu compatiras à ma douleur mais je tiens à ces deux logiciels. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 2 Juin 2016 - 19:34 | |
| Voici la solution du "bug". Il y en avait en fait 2, un provenant de ton code et l'autre étant un bug Panoramic (rien que ça !). 1. après le chargement du StringGrid, tu mettais un WAIT de 50 millisecondes. Cela bloque pendant 50 ms l'exécution des évènements (regarde l'aide...) et perturbe ainsi le système. Sache que la fonction LoadGridFromFile retourne lorsque l'opération est entièrement terminée - il n'y a pas besoin d'attendre plus ! 2. dans ma sub OpenBudgetFile, tu utilises une variable locale txt$ pour récupérer le texte de certaines cellules. Et ça plante ! Il faut que ce soit une variable globale, et ne me demande surtout pas pourquoi ! J'ai défini une variable globale ktxt$, et ça marche parfaitement. Accessoirement, j'ai remplacé ton système de décodage d'une valeur numérique par la nouvelle fonction. Donc, voici la sub OpenBudgetFile qui fonctionne: - Code:
-
sub OpenBudgetFile() dim_local res%,f$,txt$,sep1%,sep2%,a$,b$
open_dialog OpenDial% Dir_dialog OpenDial%,Dir_File$ filter OpenDial%,"*.txt|*.txt" f$=file_name$(OpenDial%) delete OpenDial% if f$<>"_" clear DlBudgetFile% file_load DlBudgetFile%,f$ NbreRows% = val(trim$(item_read$(DlBudgetFile%,3))) CreateNewStringGrid() res% = dll_call3("LoadGridFromFile",SG%,0,adr(f$)) ' wait 50 <<<<<<<<<<<<< klaus ktxt$ = string$(255," ") res% = DLL_call4("GetNumericGridCellText",SG%,2,NbreRows%,adr(ktxt$)) ktxt$ = trim$(ktxt$) if ktxt$="" then ktxt$ = "0" TotalDep = val(ktxt$) ktxt$ = string$(255," ") res% = DLL_call4("GetNumericGridCellText",SG%,4,NbreRows%,adr(ktxt$)) ktxt$ = trim$(ktxt$) if txt$="" then ktxt$ = "0" TotalRec = val(ktxt$) EtatLog% = 1
ResteAV = TotalRec - TotalDep MajAffichResteAV() end_if end_sub Et voilà. Le tour est joué. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Juin 2016 - 21:17 | |
| Merci Klaus.
J' ai pris tes modifications, je suis passé à la récup numérique sur les autres fonctions qui le nécessitait.
Cependant, j' ai toujours un bug lorsque j' essaie d' ouvrir le fichier de sauvegarde alors qu' un fichier est déjà ouvert.
Je pars à la chasse... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 3 Juin 2016 - 0:04 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 3 Juin 2016 - 2:03 | |
| J' ai cherché toute la soirée sans rien trouver d' anormal, peut-être avons nous poussé Panoramic aux limites de ce qu' il nous permet... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 3 Juin 2016 - 2:24 | |
| Non, je ne crois pas. Je pense que tu es tombé sur un bug dans mes fonctions StringGrid dans KGF.dll, et il faudra bien que je le trouve. J'y travaille. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 3 Juin 2016 - 2:32 | |
| Les procedures de creation ou d' ouverture sont schematiquement celle là :
si SG% <>0 destruction construction autre construction
la seule chose qui diffère, c' est après la construction, le remplissage. Selon, soit je rempli soit c' est la fonction load qui rempli.
Pour moi, il y a quelque chose qui reste après la destruction qui crée un bug à la reconstruction car il n' y a pas de bug à la première construction.
A moins que cette destruction provoque un changement dans les edits
qui par le on_change lance une procedure sur un objet qui n' existe plus. J' ai mis des off_change ....on_change rien de neuf | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 3 Juin 2016 - 2:53 | |
| - Citation :
- qui crée un bug à la reconstruction car il n' y a pas de bug à la première construction.
C'est plus grave que ça, car le premier chargement se passe peut-être bien, mais ensuite la lecture des deux cellules de totaux débit/crédit provoque un plantage également. Pas systématiquement, mais souvent. Et sans aucune intervention. Je cherche... J'ai déjà corrigé quelques petites imperfections, mais sans résultat probant sur l'ensemble. Mais ça viendra. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 3 Juin 2016 - 13:51 | |
| Je te laisse faire et je mets en stand-by en attendant. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 4 Juin 2016 - 12:12 | |
| KGF.dll V6.82 du 04/06/2016Nouveautés: - InitializeKGF: suppression de la simulation de HANDLE_APPLICATION, devenue inutile suite à l'apparition de la version V0.9.27i8 du 2/6/2016 de PanoramicModules modifiés: KGF.dllLa doc est inchangée. Les sources sources sont à jour. Les codes 2 et 3 de SetTaskBar sont donc opérationnels maintenant dans tous les cas, si InitializeKGF a été appelé auparavant avec HANDLE_APPLICATION comme paramètre, en exécution par l'éditeur ou par un EXE généré. Voici le programme de démo adapté: - Code:
-
' test_SetTaskBar.bas
label montrerbarre, autohidebarre, cachericone, flashericone dim res%, MontreBarre%, AutoHide%, MontreBouton%, FlashBouton%
dll_on "KGF.dll" res% = dll_call1("InitializeKGF",Handle_Application)
' état initial (à configurer selon chaque cas)
MontreBarre% = dll_call2("SetTaskBar",0,2) : ' barre des tâches montrée actuellement AutoHide% = dll_call2("SetTaskBar",1,2) : ' barre des tâches autohide actuellement MontreBouton% = dll_call2("SetTaskBar",2,2) : ' bouton de programme montré actuellement FlashBouton% = 0 : ' bouton de programme fixe actuellement
button 1 : top 1,10 : left 1, 10 : width 1,100 : on_click 1,montrerbarre button 3 : top 3,10 : left 3,110 : width 3,100 : on_click 3,autohidebarre button 5 : top 5,10 : left 5,210 : width 5,100 : on_click 5,cachericone button 6 : top 6,10 : left 6,310 : width 6,100 : on_click 6,flashericone
select MontreBarre% case 0 caption 1,"Montrer barre" case 1 caption 1,"Cacher barre" end_select select AutoHide% case 0 caption 3,"AutoHide barre" case 1 caption 3,"Bloquer barre" end_select select MontreBouton% case 0 caption 5,"Montrer bouton" case 1 caption 5,"Cacher bouton" end_select select FlashBouton% case 0 caption 6,"Flasher bouton" case 1 caption 6,"Fixe bouton" end_select
end
montrerbarre: MontreBarre% = 1 - MontreBarre% res% = dll_call2("SetTaskBar",0,MontreBarre%) select MontreBarre% case 0 caption 1,"Montrer barre" case 1 caption 1,"Cacher barre" end_select return
autohidebarre: AutoHide% = 1 - AutoHide% res% = dll_call2("SetTaskBar",1,AutoHide%) select AutoHide% case 0 caption 3,"AutoHide barre" case 1 caption 3,"Bloquer barre" end_select return
cachericone: MontreBouton% = 1 - MontreBouton% res% = dll_call2("SetTaskBar",2,MontreBouton%) select MontreBouton% case 0 caption 5,"Montrer bouton" case 1 caption 5,"Cacher bouton" end_select return
flashericone: FlashBouton% = 1 - FlashBouton% res% = dll_call2("SetTaskBar",3,FlashBouton%) select FlashBouton% case 0 caption 6,"Fixe bouton" case 1 caption 6,"Flasher bouton" end_select return
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Sam 4 Juin 2016 - 13:14 | |
| Bonjour Klaus ! Tu avais parlé a un moment de menu contextuel (clic de droite) dans KGF. Ou en es tu actuellement sur cette fonction ? Il s'agit juste d'une question et non pas d'une demande. C'est vrai que les menus contextuels sont parfois très pratiques et font plus pro ! merci d'avance pour ta réponse. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 4 Juin 2016 - 13:44 | |
| Dans la doc, regarde le groupe de fonctions "nterception des clics sur un objet". Dans la doc de la fonction ClickSetLink, tu trouves ce que tu cherches.
Je reconnais que le mécanisme n'est pas simple à implémenter, mais cela fonctionne. | |
| | | 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
| |
| |
| |