FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
KGF_dll - nouvelles versions - Page 11 Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
KGF_dll - nouvelles versions - Page 11 Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
KGF_dll - nouvelles versions - Page 11 Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
KGF_dll - nouvelles versions - Page 11 Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
KGF_dll - nouvelles versions - Page 11 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
KGF_dll - nouvelles versions - Page 11 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
KGF_dll - nouvelles versions - Page 11 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
KGF_dll - nouvelles versions - Page 11 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 11 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
KGF_dll - nouvelles versions - Page 11 Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Bon plan achat en duo : 2ème robot cuiseur ...
Voir le deal
600 €

 

 KGF_dll - nouvelles versions

Aller en bas 
+6
papydall
Marc
jean_debord
Minibug
JP06
Klaus
10 participants
Aller à la page : Précédent  1 ... 7 ... 10, 11, 12, 13, 14  Suivant
AuteurMessage
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 11 EmptyDim 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 :
KGF_dll - nouvelles versions - Page 11 Screen16
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyDim 5 Nov 2023 - 12:20

Merci pour le signalement. Je vais regarder cela.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 335
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyLun 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
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyLun 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 335
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 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
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMer 8 Nov 2023 - 11:14

KGF.dll V9.87 du 09/11/2023

Nouveauté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.dll

La 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 335
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyVen 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
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: u   KGF_dll - nouvelles versions - Page 11 EmptyVen 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
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 335
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptySam 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
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptySam 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyLun 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2397
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyLun 13 Nov 2023 - 21:53

Bonsoir Klaus !

Désolé, je pense qu’il y a un problème.

Version de KGF testée :
KGF_dll - nouvelles versions - Page 11 Versio10


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 :

KGF_dll - nouvelles versions - Page 11 Klaus136

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.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 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:
KGF_dll - nouvelles versions - Page 11 Aa111

Un clic dans un des champs concernés donne alors:
KGF_dll - nouvelles versions - Page 11 Aa211

Voilà. Désolé si je n'ai  pas été assez clair auparavant.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2397
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 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 :
KGF_dll - nouvelles versions - Page 11 Klaus137

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.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 14 Nov 2023 - 9:33

Ca y est - j'ai compris ! Je comprends vite, mais il faut m'expliquer longtemprs... Very Happy Very Happy Very Happy

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 ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2397
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 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 !
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2397
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 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 !  cheers

…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 :
KGF_dll - nouvelles versions - Page 11 Kgf1710

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.
KGF_dll - nouvelles versions - Page 11 Kgf1810
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 14 Nov 2023 - 15:42

KGF.dll V9.90 du 14/11/2023

Nouveautés:
- KGFGrid: saisie des cellules éditables par double-clic au lieu du clic droit (qui est désactivé)

Modules modifiés:
KGF.dll

La 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...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2397
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 14 Nov 2023 - 16:54

Merci Klaus !

Le double-clic gauche fonctionne bien.  cheers

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...
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 EmptyMar 14 Nov 2023 - 17:11

KGF.dll V9.91 du 14/11/2023

Nouveautés:
- KGFGrid: correction d'un bug dans LoadKGFGridFromFile

Modules modifiés:
KGF.dll

La 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 Smile, le vrai second clic ne pourra plus être traité, ni dans ce petit laps de temps, ni aux mêmes coordonnées. Dont acte.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





KGF_dll - nouvelles versions - Page 11 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 11 Empty

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 11 sur 14Aller à la page : Précédent  1 ... 7 ... 10, 11, 12, 13, 14  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» Nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: