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
» Logiciel de planétarium.
KGF_dll - nouvelles versions - Page 14 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
KGF_dll - nouvelles versions - Page 14 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
KGF_dll - nouvelles versions - Page 14 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
KGF_dll - nouvelles versions - Page 14 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
KGF_dll - nouvelles versions - Page 14 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
KGF_dll - nouvelles versions - Page 14 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
KGF_dll - nouvelles versions - Page 14 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
KGF_dll - nouvelles versions - Page 14 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 14 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
KGF_dll - nouvelles versions - Page 14 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
KGF_dll - nouvelles versions - Page 14 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
KGF_dll - nouvelles versions - Page 14 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
KGF_dll - nouvelles versions - Page 14 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
KGF_dll - nouvelles versions - Page 14 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
KGF_dll - nouvelles versions - Page 14 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
LEGO Icons 10331 – Le martin-pêcheur
35 €
Voir le deal

 

 KGF_dll - nouvelles versions

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

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyJeu 22 Fév 2024 - 12:33

KGF.dll V10.01 du 22/02/2024

Nouveautés:
- KGFGrid; nouvelles fonctions: SetKGFGridDefaultFixedCellFont et SetKGFGridDefaultFixedCellAttributes

Modules modifiés:
KGF.dll

La doc est inchangée - ça viendra prochainement.

Syntaxe:
Code:
res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(police$),taille%,couleur%)
res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,gras%,italique%,souligne%,barre%)

Cette version est en principe complète.

On peut gérer correctement des colonnes ou des lignes fixes.
Pas les deux en même temps - cela n'aurait pas de sens, et c'est bloqué par la DLL.
Le type des cellules dans les lignes ou colonnes bloquées doit être de type texte - ce sont juste des libellés.
On peut choisir la couleur par défaut des cellules dixes ainsi que la police avec ses attributs.

Voici le programme de démo, auquel j'ai ajouté un mémo affichant des instructions et informations suivant la situation.
Code:
' test_PrinterPreview.bas

label createprinterpreview, deleteprinterpreview, builddemopages
label SetprogrammedpageFont, insertprogrammedpage, showprinterpreview
label addpage, insertpage, reopenpage, closepage, deletepage, returnactualpage,
label returnpagecount, savepagestofile, loadpagesfromfile
label close100, validatefont, none
label setprinterpreviewfont, printtext, printshape, printimage
label close200, validateprinttext
label close300, validateprintshape
label close400, validateprintimage

dim PRV%, res%, ind%, f$

dim FontName$      : FontName$      = "Arial"
dim FontSize%      : FontSize%      = 12
dim FontAttributes$ : FontAttributes$ = ""
dim FontColor%      : FontColor%      = hex("FFFFFF")
dim BackColor%      : BackColor%      = -1                    : ' fond transparent

dim text_X%                : text_X%                =  0
dim text_Y%                : text_Y%                =  0
dim text_text$              : text_text$              =  ""
dim shape_X1%              : shape_X1%              =  0
dim shape_Y1%              : shape_Y1%              =  0
dim shape_X2%              : shape_X2%              =  0
dim shape_Y2%              : shape_Y2%              =  0
dim shape_Type%            : shape_Type%            =  1  : ' LINE
dim shape_RADIUS%          : shape_Radius%          =  0
dim shape_BorderColor%      : shape_BorderColor%      =  0  : ' noir
dim shape_BackgroundColor%  : shape_BackgroundColor%  = -1  : ' transparent
dim shape_Transparent%      : shape_Transparent%      =  1  : ' transparent
dim shape_PenWidth%        : shape_PenWidth%        =  1
dim image_X1%              : image_X1%              =  0
dim image_Y1%              : shape_Y1%              =  0
dim image_X2%              : image_Y1%              =  0
dim image_Y2%              : image_Y2%              =  0
dim image_src%              : image_src%              =  1  : ' origine de l'image
dim image_file$            : image_file$            =  ""   

dim buttonwidth%            : buttonwidth%            = 150

full_space 0

button 1 : top 1,10 : left 1,10 : caption 1,"Create Preview"
  width 1,buttonwidth% : font_bold 1 : on_click 1,createprinterpreview
button 2 : top 2,top(1)+height(1) : left 2,10 : caption 2,"Delete Preview"
  width 2,buttonwidth% : font_bold 2 : on_click 2,deleteprinterpreview 
 
button 3 : top 3,top(2)+height(2)+40 : left 3,10 : caption 3,"Build démo pages"
  width 3,buttonwidth% : font_bold 3 : on_click 3,builddemopages
button 4 : top 4,top(3)+height(3) : left 4,10 : caption 4,"Insert Programmed page"
  width 4,buttonwidth% : font_bold 4 : on_click 4,insertprogrammedpage
button 5 : top 5,top(4)+height(4) : left 5,10 : caption 5,"Show Preview"
  width 5,buttonwidth% : font_bold 5 : on_click 5,showprinterpreview
 
button 10 : top 10,top(4)+height(4)+40 : left 10,10 : caption 10,"Add Page"
  width 10,buttonwidth% : font_bold 10 : on_click 10,addpage
button 11 : top 11,top(10)+height(10) : left 11,10 : caption 11,"Insert Page"
  width 11,buttonwidth% : font_bold 11 : on_click 11,insertpage
button 12 : top 12,top(11)+height(11) : left 12,10 : caption 12,"Reopen Page"
  width 12,buttonwidth% : font_bold 12 : on_click 12,reopenpage
button 13 : top 13,top(12)+height(12) : left 13,10 : caption 13,"Close Page"
  width 13,buttonwidth% : font_bold 13 : on_click 13,closepage
button 14 : top 14,top(13)+height(13) : left 14,10 : caption 14,"Delete Actual Page"
  width 14,buttonwidth% : font_bold 14 : on_click 14,deletepage
button 15 : top 15,top(14)+height(14) : left 15,10 : caption 15,"Return Actual Page"
  width 15,buttonwidth% : font_bold 15 : on_click 15,returnactualpage
button 16 : top 16,top(15)+height(15) : left 16,10 : caption 16,"Return Page Count"
  width 16,buttonwidth% : font_bold 16 : on_click 16,returnpagecount
 
button 17 : top 17,top(15)+height(16) : left 17,10 : caption 17,"Save pages to file"
  width 17,buttonwidth% : font_bold 17 : on_click 17,savepagestofile
button 18 : top 18,top(17)+height(17) : left 18,10 : caption 18,"Load pages from filet"
  width 18,buttonwidth% : font_bold 18 : on_click 18,loadpagesfromfile


button 20 : top 20,top(16)+height(16)+40 : left 20,10 : caption 20,"Change Font"
  width 20,buttonwidth% : font_bold 20 : on_click 20,setprinterpreviewfont
button 21 : top 21,top(20)+height(20) : left 21,10 : caption 21,"Print Text"
  width 21,buttonwidth% : font_bold 21 : on_click 21,printtext
button 22 : top 22,top(21)+height(21) : left 22,10 : caption 22,"Print Shape"
  width 22,buttonwidth% : font_bold 22 : on_click 22,printshape
button 23 : top 23,top(22)+height(22) : left 23,10 : caption 23,"Print Image"
  width 23,buttonwidth% : font_bold 23 : on_click 23,printimage
 
 
 
form 100 : hide 100 : width 100,500 : height 100,500
  top 100,(screen_y-height(100))/2 : left 100,(screen_x-width(100))/2
  caption 100,"Font selector" : on_close 100,close100
alpha 101 : parent 101,100 : top 101,10 : left 101,10 : caption 101,"Fonts:"
list 102 : parent 102,100 : top 102,30 : left 102,10 : width 102,200 : height 102,height_client(100)-40
  font_names_load 102
alpha 103 : parent 103,100 : top 103,10 : left 103,240 : caption 103,"Parameters:"
alpha 104 : parent 104,100 : top 104,40 : left 104,260 : caption 104,"Size:"
combo 105 : parent 105,100 : top 105,40 : left 105,320 : width 105,40
  item_add 105,"8" 
  item_add 105,"9" 
  item_add 105,"10" 
  item_add 105,"11" 
  item_add 105,"12" 
  item_add 105,"14" 
  item_add 105,"16" 
  item_add 105,"18" 
  item_add 105,"20" 
  item_add 105,"22" 
  item_add 105,"24" 
  item_add 105,"26" 
  item_add 105,"28" 
  item_add 105,"36" 
  item_add 105,"48" 
  item_add 105,"72"
  item_select 105,5
container 106 : parent 106,100 : top 106,80 : left 106,260 : caption 106,"Font attributes:"
  width 106,120 : height 106,130
check 1061 : parent 1061,106 : top 1061,20 : left 1061,20 : caption 1061,"Bold" 
  font_bold 1061
check 1062 : parent 1062,106 : top 1062,40 : left 1062,20 : caption 1062,"Italic" 
  font_italic 1062
check 1063 : parent 1063,106 : top 1063,60 : left 1063,20 : caption 1063,"Underline" 
  font_underline 1063
check 1064 : parent 1064,106 : top 1064,80 : left 1064,20 : caption 1064,"Strikeout" 
  font_strike 1064
button 1065 : parent 1065,106 : top 1065,100 : left 1065,20 : caption 1065,"None"
  on_click 1065,none 
check 107 : parent 107,100 : top 107,220 : left 107,260 : caption 107,"Background transparent"
  width 107,200 : mark_on 107
alpha 108 : parent 108,100 : top 108,250 : left 108,260 : caption 108,"Background RGB color:"
spin 1081 : parent 1081,100 : top 1081,270 : left 1081,280 : width 1081,50
  min 1081,0 : max 1081,255 : position 1081,0
spin 1082 : parent 1082,100 : top 1082,270 : left 1082,340 : width 1082,50
  min 1082,0 : max 1082,255 : position 1082,0
spin 1083 : parent 1083,100 : top 1083,270 : left 1083,400 : width 1083,50
  min 1083,0 : max 1083,255 : position 1083,0
alpha 109 : parent 109,100 : top 109,300 : left 109,260 : caption 109,"Font RGB color:"
spin 1091 : parent 1091,100 : top 1091,320 : left 1091,280 : width 1091,50
  min 1091,0 : max 1091,255 : position 1091,0
spin 1092 : parent 1092,100 : top 1092,320 : left 1092,340 : width 1092,50
  min 1092,0 : max 1092,255 : position 1092,0
spin 1093 : parent 1093,100 : top 1093,320 : left 1093,400 : width 1093,50
  min 1093,0 : max 1093,255 : position 1093,0
button 110 : parent 110,100 : top 110,360 : left 110,260 : caption 110,"Validate"
  height 110,40 : width 110,150 : font_size 110,16 : font_bold 110 : on_click 110,validatefont
 
form 200 : hide 200 : width 200,700 : height 200,500
  top 200,(screen_y-height(200))/2 : left 200,(screen_x-width(200))/2
  caption 200,"Text to print" : on_close 200,close200
alpha 201 : parent 201,200 : top 201,20 : left 201,20 : caption 201,"Position X (mm):"
spin 202 : parent 202,200 : top 202,20 : left 202,110 : width 202,50
  min 202,0 : max 202,209 : position 202,0
alpha 203 : parent 203,200 : top 203,20 : left 203,200 : caption 203,"Position y (mm):"
spin 204 : parent 204,200 : top 204,20 : left 204,290 : width 204,50
  min 204,0 : max 204,296 : position 204,0
alpha 205 : parent 205,200 : top 205,50 : left 205,20 : caption 205,"Text to print:"
memo 206 : parent 206,200 : top 206,70 : left 206,20 : width 206,640: height 206,300
  bar_both 206
button 210 : parent 210,200 : top 210,360 : left 210,260 : caption 210,"Validate"
  height 210,40 : width 210,150 : font_size 210,16 : font_bold 210 : on_click 210,validateprinttext
 
form 300 : hide 300 : width 300,700 : height 300,500
  top 300,(screen_y-height(300))/2 : left 300,(screen_x-width(300))/2
  caption 300,"Shape to print" : on_close 300,close300
alpha 301 : parent 301,300 : top 301,20 : left 301,20 : caption 301,"Start Position X1 (mm):"
spin 302 : parent 302,300 : top 302,20 : left 302,160 : width 302,50
  min 302,0 : max 302,209 : position 302,0
alpha 303 : parent 303,300 : top 303,20 : left 303,260 : caption 303,"Position Y1 (mm):"
spin 304 : parent 304,300 : top 304,20 : left 304,410 : width 304,50
  min 304,0 : max 304,296 : position 304,0
alpha 305 : parent 305,300 : top 305,50 : left 305,20 : caption 305,"End Position X2 (mm):"
spin 306 : parent 306,300 : top 306,50 : left 306,160 : width 306,50
  min 306,0 : max 306,209 : position 306,0
alpha 307 : parent 307,300 : top 307,50 : left 307,260 : caption 307,"End Position Y2 (mm):"
spin 308 : parent 308,300 : top 308,50 : left 308,410 : width 308,50
  min 308,0 : max 308,296 : position 308,0
alpha 309 : parent 309,300 : top 309,80 : left 309,20 : caption 309,"Shape type:"
combo 310 : parent 310,300 : top 310,80 : left 310,160 : width 310,120
  item_add 310,"Line"
  item_add 310,"Rectangle"
  item_add 310,"Rounded rectangle"
  item_add 310,"Ellipse"
  item_select 310,2
alpha 311 : parent 311,300 : top 311,80 : left 311,320 : caption 311,"Radius (pixels):"
spin 312 : parent 312,300 : top 312,80 : left 312,410 : width 312,50
alpha 313 : parent 313,300 : top 313,110 : left 313,20 : caption 313,"Border RGB color:"
spin 3131 : parent 3131,300 : top 3131,110 : left 3131,160 : width 3131,50
  min 3131,0 : max 3131,255 : position 3131,0
spin 3132 : parent 3132,300 : top 3132,110 : left 3132,220 : width 3132,50
  min 3132,0 : max 3132,255 : position 3132,0
spin 3133 : parent 3133,300 : top 3133,110 : left 3133,280 : width 3133,50
  min 3133,0 : max 3133,255 : position 3133,0
alpha 314 : parent 314,300 : top 314,140 : left 314,20 : caption 314,"Fill RGB color:"
spin 3141 : parent 3141,300 : top 3141,140 : left 3141,160 : width 3141,50
  min 3141,0 : max 3141,255 : position 3141,0
spin 3142 : parent 3142,300 : top 3142,140 : left 3142,220 : width 3142,50
  min 3142,0 : max 3142,255 : position 3142,0
spin 3143 : parent 3143,300 : top 3143,140 : left 3143,280 : width 3143,50
  min 3143,0 : max 3143,255 : position 3143,0
alpha 315 : parent 315,300 : top 315,140 : left 315,360 : caption 315,"Transparent:"
check 316 : parent 316,300 : top 316,140 : left 316,440
  mark_on 316 
alpha 317 : parent 317,300 : top 317,170 : left 317,20 : caption 317,"Pen width (pixels):"
spin 318 : parent 318,300 : top 318,170 : left 318,160 : width 318,50
  min 318,1 : max 318,300 : position 318,1
button 320 : parent 320,300 : top 320,360 : left 320,260 : caption 320,"Validate"
  height 320,40 : width 320,150 : font_size 320,16 : font_bold 320 : on_click 320,validateprintshape 
 
form 400 : hide 400 : width 400,700 : height 400,500
  top 400,(screen_y-height(400))/2 : left 400,(screen_x-width(400))/2
  caption 400,"Image to print" : on_close 400,close400
alpha 401 : parent 401,400 : top 401,20 : left 401,20 : caption 401,"Start Position X1 (mm):"
spin 402 : parent 402,400 : top 402,20 : left 402,160 : width 402,50
  min 402,0 : max 402,209 : position 402,0
alpha 403 : parent 403,400 : top 403,20 : left 403,260 : caption 403,"Position Y1 (mm):"
spin 404 : parent 404,400 : top 404,20 : left 404,410 : width 404,50
  min 404,0 : max 404,296 : position 404,0
alpha 405 : parent 405,400 : top 405,50 : left 405,20 : caption 405,"End Position X2 (mm):"
spin 406 : parent 406,400 : top 406,50 : left 406,160 : width 406,50
  min 406,0 : max 406,209 : position 406,0
alpha 407 : parent 407,400 : top 407,50 : left 407,260 : caption 407,"End Position Y2 (mm):"
spin 408 : parent 408,400 : top 408,50 : left 408,410 : width 408,50
  min 408,0 : max 408,296 : position 408,0
alpha 409 : parent 409,400 : top 409,80 : left 409,20 : caption 409,"Image source:"
combo 410 : parent 410,400 : top 410,80 : left 410,160 : width 410,120
  item_add 410,"Clipboard"
  item_add 410,"File"
  item_select 410,1
button 420 : parent 420,400 : top 420,360 : left 420,260 : caption 420,"Validate"
  height 420,40 : width 420,150 : font_size 420,16 : font_bold 420 : on_click 420,validateprintimage 

open_dialog 996 : filter 996,"Preview baclup file (*.pbf)|*.pbf)"
save_dialog 997 : filter 997,"Preview baclup file (*.pbf)|*.pbf)"
open_dialog 998 : filter 998,"Image file (*.bmp)|*.bmp"
alpha 999 : top 999,height_client(0)-30 : left 999,0 : font_bold 999 : caption 999,"Ready"

dll_on "KGF.dll"

end

fnc GetPageIndex%(txt$)
  dim_local index%
  if message_input("Select a page by index",txt$,"1")=1
    result val(message_text$)
  else
    result 0
  end_if
end_fnc
 

createprinterpreview:
  PRV% = dll_call0("CreatePrinterPreview")
  caption 999, "CreatePrinterPreview: PRV%="+hex$(PRV%)
  return
 
deleteprinterpreview:
  PRV% = dll_call1("DeletePrinterPreview",PRV%)
  caption 999, "DeletePrinterPreview: PRV%="+hex$(PRV%)
  return
 
builddemopages:
  res% = dll_call1("BuildDemoPrinterPreview",PRV%)
  caption 999, "BuildDemoPrinterPreview: PRV%="+hex$(PRV%)
  return
   
SetprogrammedpageFont:
  FontName$ = "Arial Black"
  FontSize% = 48
  FontAttributes$ = "B,I,"
  FontColor% = (0*256+0)*256+0              : ' noir
  BackColor% = -1                          : ' fond transparent
  res% = dll_call6("SetPrinterPreviewFont",PRV%,adr(FontName$),FontSize%,adr(FontAttributes$),FontColor%,BackColor%)
  caption 999, "SetPrinterPreviewFont: res%="+str$(res%)
  return
   
insertprogrammedpage:
' Ici, on insère une nouvelle page devant la page avec indexe 2.

' Si l'objet PrinterPreview n'est pas créé, on le cée.
  if PRV%=0
    PRV% = dll_call0("CreatePrinterPreview")
    caption 999, "CreatePrinterPreview: PRV%="+hex$(PRV%)
  end_if

' s'il y a moins de 2 pages, alors on crée les pages de démo
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,7,0)      : ' action 7: retourner le nombre de pages présentes
  if res%<2
    res% = dll_call1("BuildDemoPrinterPreview",PRV%)
    caption 999, "BuildDemoPrinterPreview: PRV%="+hex$(PRV%)
    if res%<0 then return
  end_if

' on crée une nuvelle page et on l'insére devant la page 2
  ind% = 2
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,2,ind%)  : ' action 2: insertion nouvelle page
  caption 999, "ManagePagesforPrinterPreview InsertPage: res%="+str$(res%)
  if res%<0 then return
  gosub SetprogrammedpageFont
  if res%<0 then return

' on réouvre la page 2 (la page nouvellement insé&rée) 
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,3,ind%)  : ' action 3: réouverture page ind%
  caption 999, "ManagePagesforPrinterPreview ReopenPage: res%="+str$(res%)
  if res%<0 then return
  gosub SetprogrammedpageFont
  if res%<0 then return
 
' on dessine un rectangle plain de fond jaune et de bord noir sur toute la page
' pur cela, on impose d'abord le style de dessin
  shape_X1%              = 0                    : ' format DIN A4 = 210 x 297 mm
  shape_Y1%              = 0
  shape_X2%              = 209
  shape_Y2%              = 296
  shape_Type%            = 2                    : ' rectangle
  shape_RADIUS%          = 0
  shape_BorderColor%      = (0*256+0)*256+0      : ' noir
  shape_BackgroundColor%  = (0*256+255)*256+255  : ' jaune
  shape_Transparent%      = 0                    : ' opaque
  shape_PenWidth%        = 10                    : ' épaisseur du trait 10 pixels
  if shape_Transparent%=1 then shape_BackgroundColor% = 0-1
  res% = dll_call5("SetPrinterShapeStyle",PRV%,shape_BorderColor%,shape_BackgroundColor%,shape_PenWidth%,shape_RADIUS%)
  caption 999, "SetPrinterShapeStyle: res%="+str$(res%)
  if res%<>0 then return 

' puis on dessine le rectangle 
  res% = dll_call6("PrintShapeToPrinterPreview",PRV%,shape_X1%,shape_Y1%,shape_Type%, shape_X2%, shape_Y2%)
  caption 999, "PrintShapeToPrinterPreview: res%="+str$(res%) 
  if res%<>0 then return 

' on imprime un teste multi_lignes en haut de la page
' pour cela, e style de texte a été imposé lors de la création de la page 
  text_X% = 30
  text_Y% = 30
  text_text$ = "Texte de démo"+chr$(13)+chr$(10)+"Ligne 2"+chr$(13)+chr$(10)+"Ce texte contient 3 lignes"
  res% = dll_call4("PrintTextToPrinterPreview",PRV%,text_X%,text_Y%,adr(text_text$))
  caption 999, "PrintTextToPrinterPreview: res%="+str$(res%)
 
' on dessine une ellipse trabsparente de bord bleu
' pour cela, on impose d'abord le style de dessin
  shape_X1%              = 50                 
  shape_Y1%              = 70
  shape_X2%              = 180
  shape_Y2%              = 120
  shape_Type%            = 4                    : ' ellipse
  shape_RADIUS%          = 0
  shape_BorderColor%      = (255*256+0)*256+0    : ' bleu
  shape_BackgroundColor%  = (0*256+0)*256+0      : ' noir  (sera ignoré)
  shape_Transparent%      = 1                    : ' transparent
  shape_PenWidth%        = 50                    : ' épaisseur du trait 10 pixels
  if shape_Transparent%=1 then shape_BackgroundColor% = 0-1
  res% = dll_call5("SetPrinterShapeStyle",PRV%,shape_BorderColor%,shape_BackgroundColor%,shape_PenWidth%,shape_RADIUS%)
  caption 999, "SetPrinterShapeStyle: res%="+str$(res%)
  if res%<>0 then return 
                     
' on dessine l'ellipse
  res% = dll_call6("PrintShapeToPrinterPreview",PRV%,shape_X1%,shape_Y1%,shape_Type%, shape_X2%, shape_Y2%)
  caption 999, "PrintShapeToPrinterPreview: res%="+str$(res%) 
  if res%<>0 then return 

' ici, on place une image BMP dans la page (d'autres formats suivront)
' l'image est choisie par un dialogue d'ouverture
  image_X1%              = 30
  image_Y1%              = 140
  image_X2%              = 190
  image_Y2%              = 290
  image_src%              = 1            : ' 0=image dans le presse-papier  1=dialogue d'ouverture
  if image_src%=1
    image_file$ = file_name$(998)
    if image_file$="_" then return
    if file_exists(image_file$)=0
      message("PrintImageToPrinterPreview: Image file does not esist"
      return
    end_if
    image_src% = adr(image_file$)
  end_if
  res% = dll_call6("PrintImageToPrinterPreview",PRV%,image_src%,image_X1%,image_Y1%,image_X2%,image_Y2%)
  caption 999, "PrintImageToPrinterPreview: res%="+str$(res%)
 
' onn ferme maintenant la page en cours de sonstruction - cette action est ESSENTIELLE !
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,4,0)      : ' action 4: fermer page actuelle
  caption 999, "ManagePagesforPrinterPreview ClosePage: res%="+str$(res%)

' on crée la fenêtre de prévisualisation et on l'affiche
  res% = dll_call1("ShowPrinterPreview",PRV%)
  caption 999, "ShowPrinterPreview: res%="+str$(res%)

  return

showprinterpreview:
  res% = dll_call1("ShowPrinterPreview",PRV%)
  caption 999, "ShowPrinterPreview: res%="+str$(res%)
  return

addpage:
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,1,0)  : ' action 1: ajout nouvelle page
  caption 999, "ManagePagesforPrinterPreview AddPage: res%="+str$(res%)
  gosub validatefont
  return

insertpage:
  ind% = GetPageIndex%("Insert in front of page: ")
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,2,ind%)  : ' action 2: insertion nouvelle page
  caption 999, "ManagePagesforPrinterPreview InsertPage: res%="+str$(res%)
  gosub validatefont
  return
 
reopenpage:
  ind% = GetPageIndex%("Reopen page: ")
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,3,ind%)  : ' action 3: réouverture page ind%
  caption 999, "ManagePagesforPrinterPreview ReopenPage: res%="+str$(res%)
  gosub validatefont
  return

closepage:
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,4,0)      : ' action 4: fermer page actuelle
  caption 999, "ManagePagesforPrinterPreview ClosePage: res%="+str$(res%)
  return

deletepage:
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,5,0)      : ' action 5: supprimer page actuelle
  caption 999, "ManagePagesforPrinterPreview DeletePage: res%="+str$(res%)
  return
 
returnactualpage:
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,6,0)      : ' action 6: retourner index de page actuelle
  caption 999, "ManagePagesforPrinterPreview Return page: page actuelle="+str$(res%)
  return

returnpagecount:
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,7,0)      : ' action 7: retourner le nombre de pages présentes
  caption 999, "ManagePagesforPrinterPreview Return page count: nombre="+str$(res%)
  return
 
savepagestofile:
  f$ = file_name$(997)
  if f$="_" then return
  message f$
  if file_exists(f$)=1
    if message_confirmation_yes_no("Replace existing backup file ?")<>1 then return
  end_if
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,8,adr(f$)) : ' action 8: sauvegarder tout dans un fichier
  caption 999, "ManagePagesforPrinterPreview Save all to file: res%="+str$(res%)
  return
 
loadpagesfromfile:
  f$ = file_name$(996)
  if f$="_" then return
  if file_exists(f$)<>1
    res% = -1
    caption 999, "ManagePagesforPrinterPreview Load all from file: res%="+str$(res%)
    if message_confirmation_yes_no("Replace existiong backup file ?")<>1 then return
  end_if
  res% = dll_call3("ManagePagesforPrinterPreview",PRV%,9,adr(f$)) : ' action 8: charger tout à partir d'un fichier
  caption 999, "ManagePagesforPrinterPreview Load all from file: res%="+str$(res%)
  return 

setprinterpreviewfont:
  inactive 0
  show 100
  return
 
close100:
  hide 100
  active 0
  to_foreground 0
  return
 
none:
  mark_off 1061
  mark_off 1062
  mark_off 1063
  mark_off 1064
  return
 
validatefont:
  FontName$ = "Arial"
  if item_index(102)>0 then FontName$ = item_index$(102)
  FontSize% = 12
  if item_index(102)>0 then FontSize% = val(item_index$(105))
  FontAttributes$ = ""
  if checked(1061)=1 then FontAttributes$ = FontAttributes$ + "B,"
  if checked(1062)=1 then FontAttributes$ = FontAttributes$ + "I,"
  if checked(1063)=1 then FontAttributes$ = FontAttributes$ + "U,"
  if checked(1064)=1 then FontAttributes$ = FontAttributes$ + "S,"
  FontColor% = (position(1093)*256+position(1092))*256+position(1091)
  BackColor% = -1                    : ' fond transparent
  if checked(107)=0 then BackColor% = (position(1083)*256+position(1082))*256+position(1081)
  res% = dll_call6("SetPrinterPreviewFont",PRV%,adr(FontName$),FontSize%,adr(FontAttributes$),FontColor%,BackColor%)
  hide 100
  active 0
  to_foreground 0
  caption 999, "SetPrinterPreviewFont: res%="+str$(res%)
  return
 
printtext:
  inactive 0
  show 200
  return
 
close200:
  hide 200
  active 0
  to_foreground 0
  return

validateprinttext:
  text_X% = position(202)
  text_Y% = position(204)
  text_text$ = text$(206)
  res% = dll_call4("PrintTextToPrinterPreview",PRV%,text_X%,text_Y%,adr(text_text$))
  hide 200
  active 0
  to_foreground 0
  caption 999, "PrintTextToPrinterPreview: res%="+str$(res%)
  return

printshape:
  inactive 0
  show 300
  return
 
validateprintshape:
  shape_X1%              = position(302)
  shape_Y1%              = position(304)
  shape_X2%              = position(306)
  shape_Y2%              = position(308)
  shape_Type%            = item_index(310)       
  shape_RADIUS%          = position(312)
  shape_BorderColor%      = (position(3133)*256+position(3132))*256+position(3131)
  shape_BackgroundColor%  = (position(3143)*256+position(3142))*256+position(3141)
  shape_Transparent%      = checked(316)
  shape_PenWidth%        = position(318)
  if shape_Transparent%=1 then shape_BackgroundColor% = 0-1
 
  res% = dll_call5("SetPrinterShapeStyle",PRV%,shape_BorderColor%,shape_BackgroundColor%,shape_PenWidth%,shape_RADIUS%)
  if res%<>0 
    hide 300
    active 0
    to_foreground 0
    caption 999, "SetPrinterShapeStyle: res%="+str$(res%) 
  end_if
 
  res% = dll_call6("PrintShapeToPrinterPreview",PRV%,shape_X1%,shape_Y1%,shape_Type%, shape_X2%, shape_Y2%)
  hide 300
  active 0
  to_foreground 0
  caption 999, "PrintShapeToPrinterPreview: res%="+str$(res%)
  return
 
close300:
  hide 300
  active 0
  to_foreground 0
  return
 
printimage:
  inactive 0
  show 400
  return
 
close400:
  hide 400
  active 0
  to_foreground 0
  return

validateprintimage:
  image_X1%              = position(402)
  image_Y1%              = position(404)
  image_X2%              = position(406)
  image_Y2%              = position(408)
  image_src%              = item_index(410) - 1
  if image_src%=1
    image_file$ = file_name$(998)
    if image_file$="_" then return
    if file_exists(image_file$)=0
      message("PrintImageToPrinterPreview: Image fike does not esist"
      return
    end_if
    image_src% = adr(image_file$)
  end_if
  res% = dll_call6("PrintImageToPrinterPreview",PRV%,image_src%,image_X1%,image_Y1%,image_X2%,image_Y2%)
  hide 400
  active 0
  to_foreground 0
  caption 999, "PrintImageToPrinterPreview: res%="+str$(res%)
  return

Ecran de départ:
KGF_dll - nouvelles versions - Page 14 Aa1124

Choix A Gauche:
KGF_dll - nouvelles versions - Page 14 Aa1125

Choix Fixer 2 colonnes:
KGF_dll - nouvelles versions - Page 14 Aa1129

Choix En haut:
KGF_dll - nouvelles versions - Page 14 Aa1127

Choix Fixer 2 lignes:
KGF_dll - nouvelles versions - Page 14 Aa1128


Dernière édition par Klaus le Mar 10 Sep 2024 - 23:14, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyVen 23 Fév 2024 - 10:53

KGF.dll V10.02 du 23/02/2024

Nouveautés:
- nouvel objet: ListBoxGroup et ses fonctions de gestion

Modules modifiés:
KGF.dll

La doc est inchangée - ça viendra prochainement.

Cet objet réalise un de mes vieux rêves: avoir deux ou plusieurs objets LIST Panoramic synchronisés.
Pour cela, il faut avoir 2 ou plusieurs LISTS ayant le même nombre d'enregsitrements et les mêmes dimensions WIDYH et HEIGHT. Une de ces listes est le "maître", les autres sont les "esclaves". On peu faire défiler toutes ces listes indépendemment par l'ascenseur vertical. Mais dans le cas de la liste maître, cela fait défiler également les listes esclaves de façon synchronisée, et ce même si elles étaient décalées au départ !

On ne peut pas ajouter 2 fois la même LIST dans un objet ListBoxGroup.
On ne peut pas ajouter un objet LIST dans plus d'un seul objet ListBoxGroup.
On ne peut pas supprimer un objet "maître" d'un objet ListBpxGroup.

ATTENTION:
Avant de fermer le programme, il faut supprimer tous les objets LisBoxGroup (évènement ON_CLOSE).


Ceci permet d'avoir des listes pouvant servir de colonnes dans un tableau constitué à l'écran, avec un onèclick sur chacune d'elles. L'effet est assez bluffant.

La syntaxe des fonctions de gestion est la suivante:
Code:
LBG1% = dll_call0("CreateListBoxGroup")   : ' crée un nouveau groupe de listes
res% = dll_call3("ElementForListBoxGroup",LBG%,1,handle(lst%))   : ' ajout d'une liste maître à un groupe
res% = dll_call3("ElementForListBoxGroup",LBG%,2,handle(1))   : ' ajout d'une liste esclave à unn groupe
res% = dll_call3("ElementForListBoxGroup",LBG%,0,handle(1))   : ' supprimer une liste d'un groupe
res% = dll_call1("DeleteListBoxGroup",LBG%)   : ' supprimer un groupe de listes

Voici une petite démo. Le programme montre 2 groupes de 3 listes chacun. La liste maître du premier groupe est celle de gauche. Le maître du second groupe esy la liste du milieu.
Code:
label close0

dim res%, LBG1%, LBG2%

full_space 0 : on_close 0,close0
list 1 : top 1,10 : left 1, 10 : width 1,200 : height 1,300
list 2 : top 2,10 : left 2,220 : width 2,200 : height 2,300
list 3 : top 3,10 : left 3,430 : width 3,200 : height 3,300
font_names_load 1
font_names_load 2
font_names_load 3

list 11 : top 11,330 : left 11,110 : width 11,200 : height 11,300
list 12 : top 12,330 : left 12,320 : width 12,200 : height 12,300
list 13 : top 13,330 : left 13,530 : width 13,200 : height 13,300
font_names_load 11
font_names_load 12
font_names_load 13


dll_on "KGF.dll"
LBG1% = dll_call0("CreateListBoxGroup")
res% = dll_call3("ElementForListBoxGroup",LBG1%,1,handle(1))    : ' <== la liste de gauche est le maître !
res% = dll_call3("ElementForListBoxGroup",LBG1%,2,handle(2))
res% = dll_call3("ElementForListBoxGroup",LBG1%,2,handle(3))

LBG2% = dll_call0("CreateListBoxGroup")
res% = dll_call3("ElementForListBoxGroup",LBG2%,2,handle(11))
res% = dll_call3("ElementForListBoxGroup",LBG2%,1,handle(12))   : ' <== la liste du milieu est le maître !
res% = dll_call3("ElementForListBoxGroup",LBG2%,2,handle(13))
end

close0:
  res% = dll_call1("DeleteListBoxGroup",LBG1%)
  res% = dll_call1("DeleteListBoxGroup",LBG2%)
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyVen 23 Fév 2024 - 19:16

Bonsoir à tous

@Klaus.

Merci pour la modif concernant les lignes et colonnes fixes.

J' ai fait un essai en ne prenant que le minimum de ton programme, et cela fonctionne.

Par contre, si j'ajoute don juste les mêmes lignes dans mon programme, les lignes qui devaient etre  fixes sont blanches

Merci par avance

Bonne soirée



Code:
dim res%, KG%, f1$, Types$(6), v$, f, img$
      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"
      dim a$ , lignes%
      full_space 0
  dll_on "KGF.dll"
   dim s$
  
  dim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y%  , ecran_base_x% , ecran_base_y% , x_program, y_program
 
  dim nb_enr%
  
   dim  xx_program$,xx_program  , yy_program$ , yy_program , y_program$ , OUI_NOM$

'  dim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y%  , ecran_base_x% , ecran_base_y% , x_program, y_programdim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y%  , ecran_base_x% , ecran_base_y% , x_program, y_programdim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y%  , ecran_base_x% , ecran_base_y% , x_program, y_program******************************************
'  calcul de la grandeur de l'ecran pour ajuster le grid et les boutons
' *******************************************

ecran_base_x%=1280  : ' 1280
ecran_base_y%=720  : ' 720

ecran_ordi_x%=screen_x
ecran_ordi_y%=screen_y

 ' pour tester ****
' ecran_ordi_x%=1280
' ecran_ordi_y%=720
' ************


                      
x_program= ecran_ordi_x%/ecran_base_x%
y_program= ecran_ordi_y%/ecran_base_y%



xx_program$=x_program
yy_program$=x_program


xx_program$=mid$(xx_program$,1,3)
yy_program$= mid$(yy_program$,1,3)

xx_program=val(xx_program$)
yy_program= val(yy_program$)
nb_enr%=25
 
 KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1)
    res% = dll_call5("LocateKGFGrid",KG%,10,50,1100  , 600  )    : ' position
   ' message 1100 * x_program
 
    res% = dll_call5("SetGlobalKGFGridDimensions",KG%,25,18,10,25)  : ' nbre de lignes nbre de colonnes
  
    res% = dll_call6("SetKGFGridCellRangeColor",KG%,1,1,1,9,hex("008000"))    : ' couleur des lignes
   ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,5,5,10,10,hex("FF8080"))    : ' couleur de la colonne  10 ligne 5
   ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,nb_enr%,10,10,hex("FF8080"))  : ' couleur colonne 10
   ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,nb_enr%,12,12,hex("FF8080"))  : ' couleur colonne 12
  
   ' autoriser la saisie les cellules ************       : ' 03/01/2024
  
      res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,7,13,1)    : '  03/01/2024
      res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,17,17,1)   : ' 03/01/2024
      
  ' if S=40
        
   '   nb_enr%=3
   '  res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,1,2,17,1)
    '  res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,7,13,1)    : '  03/01/2024
    '  res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,17,17,1)    
          
 '  end_if  
  
 

    ' *******************************************
  
    ' *************************************  
    
    res% = dll_call6("SetKGFGridCellRangeType",KG%,1,1,1,18,1)      : ' ligne des titres de colonnes
    
    res% = dll_call6("SetKGFGridCellRangeActive",KG%,2,nb_enr%,1,18,1)   : ' nbre de lignes pouvant etre ecrites
    
    res% = dll_call6("SetKGFGridCellRangeType",KG%,2,nb_enr%,1,18,1)  
    
    res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,1,1,1,18,1)
    
  
  
  
    ' libéllé dans saisie  cellule  ******************************
    
  
    ' *********************************
    
    s$ = "date affectation.D.A" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,7,7,adr(s$))    :   ' date affectation D.A
    
    s$ = "date demande de Prix" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,8,8,adr(s$))    :   ' date demande de prix
    
    s$ = "date Reception Devis" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,9,9,adr(s$))    :   ' date reception devis
    
    s$ = "N° de Commande" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,10,10,adr(s$))    :   ' N° de Commande
    
    s$ = "date Envoi Commande" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,11,11,adr(s$))    :   ' date envoi Commande
    
    s$ = "Date A.R Saisie" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,12,12,adr(s$))    :   ' date A.R
    
    s$ = "Date A.R Saisie" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,13,13,adr(s$))    :   ' date A.R Saisie
    
  
    
    s$ = "Saisie Fournisseur" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,6,6,adr(s$))    :   ' saisie ou modif Fournisseur  depuisligne 2 à X et cellule 6
    
    ' saisie dans commentaire
    s$ = "Saisie Commentaire" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,14,14,adr(s$))    :   ' commentraire
    
    ' saisie dans commentaire 2
    s$ = "Saisie Commentaire 2" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,17,17,adr(s$))    :   ' commentraire
    
   ' res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,i%,i%,j%,j%,adr(s$))

    ' largeur des colonnes
    
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,1)    : ' avant 100
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,100)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,80)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,95)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,350)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,350)  
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,7,100)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,8,13,90)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,14,14,1)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,15,15,1)     : ' avant 90
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,16,16,1)       : ' avant 50
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,17,17,600)   : ' commentairen 2
    
    
    
    res% = dll_call4("SetKGFGridRowRangeHeight",KG%,1,1,50)     : ' hauteur ligne
    
    res% = dll_call6("SetKGFGridCellRangeColor",KG%,1,1,1,17,hex("66FF66"))
    
   ' img$ = "Android.bmp"
   ' res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,2,adr(img$)) : ' ok
    
    v$ = "Arial"
    res% = dll_call6("SetKGFGridCellRangeFontName",KG%,1,18,1,6,adr(v$))
    
    res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,1,1,1,16,10)    : ' taille font 1ere ligne
    
    v$ = "Date du Jour"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,2,2,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,2,2,5)
    
    v$ = "DA"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,3,3,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,3,3,5)
    
        
    v$ = "Ref."
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,4,4,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,4,4,5)
    
    v$ = "Désignation."
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,5,5,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,5,5,5)
    
    
    v$ = "Fournisseur"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,6,6,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,6,6,5)
    
    v$ = "DateAf.DA "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,7,7,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,5)
    
    v$ = "Date Dde Prix"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,8,8,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,8,8,5)
    
    v$ = "Dat.rec dev "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,9,9,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "N°.cde "   : ' cette ligne etait avnt 08/01/2024 Date de Commande
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,10,10,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Dat.env cde "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,11,11,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Dat.AR "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,12,12,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "AR Saisie"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,13,13,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Commentaire 1 ne sert plus "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,14,14,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Matr."
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,15,15,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Ligne"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,16,16,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Commentaire 2 "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,17,17,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
     ' **** ajout du 23/02/2024 pour fixer des colonnes
    
     dim c%
    s$ = "Arial Black"
                                      : ' défaut: texte en Arial Black pour cellules fixes
      c% = ((0*0)+255)*256+255                             : ' défaut: texte en jaune pour cellules fixes
      res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%)
      res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes
     res% = dll_call2("SetKGFGridFixedColumns",KG%,2)     : ' <=== fixer les  colonnes de gauche
    
    
    
    
  
    le libelle dans chaque ligne ne sont pas visibles

Ci dessous, un morceau de programme avec le grids uniquement

 dim res%, KG%, f1$, Types$(6), v$, f, img$
      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"
      dim a$ , lignes%
      full_space 0
  dll_on "KGF.dll"
   dim s$
  
  dim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y%  , ecran_base_x% , ecran_base_y% , x_program, y_program
 
  dim nb_enr%
  
   dim  xx_program$,xx_program  , yy_program$ , yy_program , y_program$ , OUI_NOM$

'  dim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y%  , ecran_base_x% , ecran_base_y% , x_program, y_programdim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y%  , ecran_base_x% , ecran_base_y% , x_program, y_programdim ctr ,cc$ , err$ , commande_pour_trier$ , ecran_x% , ecran_y% , ecran_ordi_x% , ecran_ordi_y%  , ecran_base_x% , ecran_base_y% , x_program, y_program******************************************
'  calcul de la grandeur de l'ecran pour ajuster le grid et les boutons
' *******************************************

ecran_base_x%=1280  : ' 1280
ecran_base_y%=720  : ' 720

ecran_ordi_x%=screen_x
ecran_ordi_y%=screen_y

 ' pour tester ****
' ecran_ordi_x%=1280
' ecran_ordi_y%=720
' ************


                      
x_program= ecran_ordi_x%/ecran_base_x%
y_program= ecran_ordi_y%/ecran_base_y%



xx_program$=x_program
yy_program$=x_program


xx_program$=mid$(xx_program$,1,3)
yy_program$= mid$(yy_program$,1,3)

xx_program=val(xx_program$)
yy_program= val(yy_program$)
nb_enr%=25
 
 KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),13,1)
    res% = dll_call5("LocateKGFGrid",KG%,10,50,1100  , 600  )    : ' position
   ' message 1100 * x_program
 
    res% = dll_call5("SetGlobalKGFGridDimensions",KG%,25,18,10,25)  : ' nbre de lignes nbre de colonnes
  
    res% = dll_call6("SetKGFGridCellRangeColor",KG%,1,1,1,9,hex("008000"))    : ' couleur des lignes
   ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,5,5,10,10,hex("FF8080"))    : ' couleur de la colonne  10 ligne 5
   ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,nb_enr%,10,10,hex("FF8080"))  : ' couleur colonne 10
   ' res% = dll_call6("SetKGFGridCellRangeColor",KG%,2,nb_enr%,12,12,hex("FF8080"))  : ' couleur colonne 12
  
   ' autoriser la saisie les cellules ************       : ' 03/01/2024
  
      res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,7,13,1)    : '  03/01/2024
      res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,17,17,1)   : ' 03/01/2024
      
  ' if S=40
        
   '   nb_enr%=3
   '  res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,1,2,17,1)
    '  res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,7,13,1)    : '  03/01/2024
    '  res% = dll_call6("SetKGFGridCellRangeEditable",KG%,2,nb_enr%,17,17,1)    
          
 '  end_if  
  
 

    ' *******************************************
  
    ' *************************************  
    
    res% = dll_call6("SetKGFGridCellRangeType",KG%,1,1,1,18,1)      : ' ligne des titres de colonnes
    
    res% = dll_call6("SetKGFGridCellRangeActive",KG%,2,nb_enr%,1,18,1)   : ' nbre de lignes pouvant etre ecrites
    
    res% = dll_call6("SetKGFGridCellRangeType",KG%,2,nb_enr%,1,18,1)  
    
    res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,1,1,1,18,1)
    
  
  
  
    ' libéllé dans saisie  cellule  ******************************
    
  
    ' *********************************
    
    s$ = "date affectation.D.A" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,7,7,adr(s$))    :   ' date affectation D.A
    
    s$ = "date demande de Prix" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,8,8,adr(s$))    :   ' date demande de prix
    
    s$ = "date Reception Devis" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,9,9,adr(s$))    :   ' date reception devis
    
    s$ = "N° de Commande" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,10,10,adr(s$))    :   ' N° de Commande
    
    s$ = "date Envoi Commande" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,11,11,adr(s$))    :   ' date envoi Commande
    
    s$ = "Date A.R Saisie" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,12,12,adr(s$))    :   ' date A.R
    
    s$ = "Date A.R Saisie" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,13,13,adr(s$))    :   ' date A.R Saisie
    
  
    
    s$ = "Saisie Fournisseur" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,6,6,adr(s$))    :   ' saisie ou modif Fournisseur  depuisligne 2 à X et cellule 6
    
    ' saisie dans commentaire
    s$ = "Saisie Commentaire" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,14,14,adr(s$))    :   ' commentraire
    
    ' saisie dans commentaire 2
    s$ = "Saisie Commentaire 2" : ' cellule ["+str$(i%)+","+str$(j%)+"]"
    res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,2,nb_enr%,17,17,adr(s$))    :   ' commentraire
    
   ' res% = dll_call6("SetKGFGridCellRangeQueryText",KG%,i%,i%,j%,j%,adr(s$))

    ' largeur des colonnes
    
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,1)    : ' avant 100
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,100)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,80)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,95)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,350)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,350)  
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,7,7,100)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,8,13,90)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,14,14,1)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,15,15,1)     : ' avant 90
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,16,16,1)       : ' avant 50
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,17,17,600)   : ' commentairen 2
    
    
    
    res% = dll_call4("SetKGFGridRowRangeHeight",KG%,1,1,50)     : ' hauteur ligne
    
    res% = dll_call6("SetKGFGridCellRangeColor",KG%,1,1,1,17,hex("66FF66"))
    
   ' img$ = "Android.bmp"
   ' res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,2,adr(img$)) : ' ok
    
    v$ = "Arial"
    res% = dll_call6("SetKGFGridCellRangeFontName",KG%,1,18,1,6,adr(v$))
    
    res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,1,1,1,16,10)    : ' taille font 1ere ligne
    
    v$ = "Date du Jour"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,2,2,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,2,2,5)
    
    v$ = "DA"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,3,3,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,3,3,5)
    
        
    v$ = "Ref."
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,4,4,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,4,4,5)
    
    v$ = "Désignation."
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,5,5,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,5,5,5)
    
    
    v$ = "Fournisseur"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,6,6,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,6,6,5)
    
    v$ = "DateAf.DA "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,7,7,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,5)
    
    v$ = "Date Dde Prix"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,8,8,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,8,8,5)
    
    v$ = "Dat.rec dev "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,9,9,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "N°.cde "   : ' cette ligne etait avnt 08/01/2024 Date de Commande
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,10,10,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Dat.env cde "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,11,11,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Dat.AR "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,12,12,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "AR Saisie"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,13,13,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Commentaire 1 ne sert plus "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,14,14,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Matr."
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,15,15,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Ligne"
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,16,16,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
    
    v$ = "Commentaire 2 "
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,17,17,adr(v$))
    res% = dll_call6("SetKGFGridCellRangeJustification",KG%,1,1,7,7,6)
     ' **** ajout du 23/02/2024 pour fixer des colonnes
    
     dim c%
    s$ = "Arial Black"
                                      : ' défaut: texte en Arial Black pour cellules fixes
      c% = ((0*0)+255)*256+255                             : ' défaut: texte en jaune pour cellules fixes
      res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%)
      res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes
     res% = dll_call2("SetKGFGridFixedColumns",KG%,2)     : ' <=== fixer les  colonnes de gauche
    
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyVen 23 Fév 2024 - 23:35

C'est très difficile de juger d'après ces morceaux de code fragmentaire.

Ce que le vois (à la fin du code que tu as posté), c'est que tu déclares les DEUX premières colonnes comme fixe, exactement comme dans ma démo. Bien. Sauf que j'ai bien précisé que TOUTES les cellules et TOUTES les colonnes fixes doivent être du type TEXTE (code 2 !) et non pas du type numérique (code 1). Je pense que c'est pourquoi la lecture de ces cellules échoue et le résultat est un string vide, et donc la cellule s'affiche en blanc (vide).

Quelques conseils:
- regarde la structure de mn programme: la place des labels, des DIM, des constantes, des définitions des objets visuels etc. Essaie de structurer ton programme de fa_on similaire - regrouper au début, et par nature, toutes les déclarations de base qui ne participent pas à la logique d'exécution du programme.
- respecte les règles relatives aux fonctions de lignes/colonnes fixes - elles sont décrites dans mon post. En particulier, je ne suis pas sûr que ton intention était bien d'avoir les deux premières colonnes fixes...
- essaie de produire un code restraint, SANS tous les détails ne concernant pas les zones cncernées par le problème, et un code complet exécutable de sorte que je puisse reproduire le problème ici. Réalise également des captures d'écran afin d'illustrer la situation.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyDim 25 Fév 2024 - 9:30

Bonjour à tous !

@Klaus

Sujet : ListBoxGroup

Testé avec succès !
Merci Klaus !


Il y a aussi une alternative 100% Panoramic que j’utilise lorsque que j’ai une base de données qui est éclatée à différents endroits d’un programme. Un ascenseur maître, sous forme de SCROLL_BAR,  établit la synchronisation et le défilement des LISTs.

Démonstration : 
Code:
label choixList_1, choixList_2, choixList_3 ,choixList_4, scroll

dim ligne%

width 0,330 : height 0,350
form 30 : left 30,315 : top 30,150 : width 30,330 : height 30,350

list 1 : top 1,10 : left 1, 30 : width 1,110 : height 1,130 : color 1,255,255,200
list 2 : top 2,160 : left 2,140 : width 2,150 : height 2,120
list 3 : parent 3,30 : top 3,10 : left 3,10 : width 3,110 : height 3,260
list 4 : parent 4,30 : top 4,110 : left 4,150 : width 4,150 : height 4,80 : font_size 4,12

scroll_bar 5 : vertical 5 : top 5,10 : left 5,10 : width 5,15 : height 5,height(1)

container 8 : top 8,170 : left 8,20 : width 8,90 : height 8,90
alpha 9 : parent 9,8 : left 9,10 : top 9,20
alpha 10 : left 10,35 : top 10,145
alpha 11 : left 11,145 : top 11,285
alpha 12 : parent 12,30 : left 12,15 : top 12,275
alpha 13 : parent 13,30 : left 13,155 : top 13,195

for ligne% = 1 to 20
    item_add 1,"LIST 1, ligne " + str$(ligne%)
    item_add 2,"LIST 2, ligne " + str$(ligne%)
    item_add 3,"LIST 3, ligne " + str$(ligne%)
    item_add 4,"LIST 4, ligne " + str$(ligne%)
next ligne%

min 5,1 : max 5,count(1) : on_change 5,scroll

on_click 1,choixList_1
on_click 2,choixList_2
on_click 3,choixList_3
on_click 4,choixList_4
end

choixList_1:
    item_select 2,item_index(1)
    item_select 3,item_index(1)
    item_select 4,item_index(1)

    caption 9,item_index$(1) + chr$(13) + item_index$(2) + chr$(13) + item_index$(3) + chr$(13) + item_index$(4)
    caption 10,item_index$(1)

    off_change 5
    position 5,item_index(1)
    on_change 5,scroll
return  

choixList_2:
    caption 11,item_index$(2)
return

choixList_3:
    caption 12,item_index$(3)
return

choixList_4:
    caption 13,item_index$(4)
return

scroll:
   item_select 1,position(5)
   item_select 2,position(5)
   item_select 3,position(5)
   item_select 4,position(5)
return  
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyDim 25 Fév 2024 - 14:36

Oui, tu as raison - la même ligne apparaît dans la fenêtre de visualisation.

Mais il y a une grande différence: la ligne sélectionnée n'a pas la même position relative dans les différentes fenêtres de visualisation. Ceci interdit d'avoir des listes parallèles, un peu comme des colonnes d'un tableau, et de les scroller de façon sunchrone.

Il y a aussi une autre différence: les LIST esclaves  ne se déplacent pas lorsqu'on scrolle avec la barre de défilement de la liste maître !Et c'est cela l'objectif principal de ListBoxGroup...

EDIT

Est-ce que tu as vu KGF.dll V10.01 du 22/02/2024 publié à 11:33, avec la nouveauté pour KGFGrid ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyDim 25 Fév 2024 - 17:23

@Klaus

Citation :
Mais il y a une grande différence: la ligne sélectionnée n'a pas la même position relative dans les différentes fenêtres de visualisation. Ceci interdit d'avoir des listes parallèles, un peu comme des colonnes d'un tableau, et de les scroller de façon sunchrone.
Il y a aussi une autre différence: les LIST esclaves  ne se déplacent pas lorsqu'on scrolle avec la barre de défilement de la liste maître !Et c'est cela l'objectif principal de ListBoxGroup...

Oui, effectivement, c’est indéniable, ListBoxGroup possède des caractéristiques intéressantes qui sont très pratiques voire incontournables suivant le résultat final souhaité.


Citation :
Est-ce que tu as vu KGF.dll V10.01 du 22/02/2024 publié à 11:33, avec la nouveauté pour KGFGrid 

Oui, j’ai l’ai vu, mais je n’ai pas encore pris le temps d’essayer le nouveau KGFGrid.
C'est vraiment un plus d'avoir ajouté la possibilité de figer les premières colonnes / lignes.

Bravo et merci !  cheers
Revenir en haut Aller en bas
Marc

Marc


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyDim 25 Fév 2024 - 22:28

@Klaus

Sujet : KGFGrid

J'ai pris une petite partie du source ci-dessus de Lepetitmarocain pour effectuer des tests.

Lorsque je fixe la première ligne de KGFGrid, elle perd son formatage : toutes les colonnes de la première ligne prennent la largeur de la première cellule.

Code:
dim res%, KG%
width 0,width(0)-width_client(0)+1120
height 0,height(0)-height_client(0)+620

dll_on "kgf"

creerKGFgrid()

end
' ------------------------------------------------------------------------------
sub creerKGFgrid()
    ' Configuration générale
    KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),1,1)
    res% = dll_call5("LocateKGFGrid",KG%,10,10,1100,600)
    res% = dll_call5("SetGlobalKGFGridDimensions",KG%,10,6,100,25)
    
    ' largeur des colonnes
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,1,1,20)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,2,2,100)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,3,3,80)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,95)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,5,5,350)
    res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,6,6,350)  

    ' fixer la première ligne
    res% = dll_call2("SetKGFGridFixedRows",KG%,1)
end_sub

Capture d'écran:
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyLun 26 Fév 2024 - 1:11

KGF.dll V10.03 du 26/02/2024

Nouveautés:
- KGFGrid - correction d'un bug de hauteur/largeur des lignes/colonnes fixes

Modules modifiés:
KGF.dll

La doc est inchangée - ça viendra prochainement.

Ce bug est corrigé. Un oubli de ma part - cela n'aurait pas dû arriver. Merci pour le signalement, Marc !

Voici le programme de démo qui génère la colonne 4 plus large et la ligne 4 plus haute:
Code:
' prototype_KGFGrid.bas

label gauche, haut, sgauche, shaut

dim res%, KG%, r%, c%, s$

dll_on "KGF.dll"

full_space 0
button 1 : top 1,10 : left 1,10 : width 1,100 : caption 1,"A gauche" : on_click 1,gauche
button 2 : top 2,10 : left 2,120 : width 2,100 : caption 2,"En haut" : on_click 2,haut
button 11 : top 11,40 : left 11,10 : width 11,100 : caption 11,"Fixer 2 colonnes" : on_click 11,sgauche
  inactive 11
button 21 : top 21,40 : left 21,120 : width 21,100 : caption 21,"Fixer 2 lignes" : on_click 21,shaut
  inactive 21
memo 30 : top 30,300 : left 30,200 : width 30,500 : height 30,300 : bar_both 30
  font_name 30,"Courier" : font_size 30,12
  item_add 30,"Choisir le mode opératoire:"
  item_add 30,"  A gauche = les deux colonnes de gauche sont fixes"
  item_add 30,"  En haut  = les deux lignes du haut sont fixes"
end

sub tableau_initial()
  KG% = dll_call1("DeleteKGFGrid",KG%)
  KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),1,1)
  res% = dll_call5("LocateKGFGrid",KG%,200,80,500,200)
  res% = dll_call5("SetGlobalKGFGridDimensions",KG%,20,10,80,25)
  res% = dll_call6("SetKGFGridCellRangeType",KG%,1,20,1,10,1)
  res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,120)
  res% = dll_call4("SetKGFGridRowRangeHeight",KG%,4,4,50)
  display 
end_sub

sub charge()
for r%=1 to 20
  for c%=1 to 10
    s$ = "r"+str$(r%)+" c"+str$(c%)
    res% = dll_call6("SetKGFGridCellRangeValue",KG%,r%,r%,c%,c%,adr(s$))
    display
  next c%
next r%
end_sub


gauche:
  inactive 11
  inactive 21
  tableau_initial()
  charge()
  active 11
  clear 30
  item_add 30,"Choisir me mode opératoire:"
  item_add 30,"  A gauche = les deux colonnes de gauche sont fixes"
  item_add 30,"  En haut  = les deux lignes du haut sont fixes"
  item_add 30," "
  item_add 30,"Fixer 2 colonnes = installer les 2 colonnes fixes"
  return

sgauche:
  s$ = "Arial Black"                                  : ' défaut: texte en Arial Black pour cellules fixes
  c% = ((0*0)+255)*256+255                            : ' défaut: texte en jaune pour cellules fixes
  res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%)
  res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes
  res% = dll_call2("SetKGFGridFixedColumns",KG%,2)    : ' <=== fixer les deux colonnes de gauche
  inactive 11
  clear 30
  item_add 30,"Choisir me mode opératoire:"
  item_add 30,"  A gauche = les deux colonnes de gauche sont fixes"
  item_add 30,"  En haut  = les deux lignes du haut sont fixes"
  item_add 30," "
  item_add 30,"Colonnes fixes sur fond par défaut (clAqua=FFFF00)"
  item_add 30,"Police: Arial Black 12 jaune gras italique"
  return

haut:
  inactive 11
  inactive 21
  tableau_initial()
  charge()
  active 21
  clear 30
  item_add 30,"Choisir me mode opératoire:"
  item_add 30,"  A gauche = les deux colonnes de gauche sont fixes"
  item_add 30,"  En haut  = les deux lignes du haut sont fixes"
  item_add 30," "
  item_add 30,"Fixer 2 Lignes = installer les 2 lignes fixes"
  return

shaut:
  c% = ((0*256)+255)*256+255                          : ' défaut: fond jaune pour cellules fixes
  res% = dll_call2("SetKGFGridFixedDefaultCellColor",KG%,c%)
  s$ = "Arial Black"                                  : ' défaut: texte en Arial Black pour cellules fixes
  c% = ((255*256)+0)*256+0                            : ' défaut: texte en bleu pour cellules fixes
  res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%)
  res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes
  res% = dll_call2("SetKGFGridFixedRows",KG%,2)        : ' <=== fixer les deux lignes du haut
  inactive 21
  clear 30
  item_add 30,"Choisir me mode opératoire:"
  item_add 30,"  A gauche = les deux colonnes de gauche sont fixes"
  item_add 30,"  En haut  = les deux lignes du haut sont fixes"
  item_add 30," "
  item_add 30,"Lignes fixes sur fond jaune (clYellow=00FFFF)"
  item_add 30,"Police: Arial Black 12 bleu gras italique"
  return

end
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyLun 26 Fév 2024 - 1:31

Citation :
Ce bug est corrigé.

Merci Klaus !
C'est tout bon !  cheers

Je continuerai demain les tests des différentes fonctions.
Revenir en haut Aller en bas
Marc

Marc


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyLun 26 Fév 2024 - 15:18

@Klaus :

Idée d'amélioration de l'objet KGFGrid :

- Etendre la fonction SetKGFGridCellRangeJustification aux cellules fixes.

- Lors d'un redimensionnement de l'objet KGFGrid complet, les lignes fixes disparaissent (voir le programme ci-dessous).


Programme test où l'objet KGFGrid est asservi au redimensionnement du FORM 0 :
Code:
' Test_KGFGrid.bas
dim res%, KG%, r%, c%, s$

label redim0

dll_on "KGF.dll"

tableau_initial()
charge()
fixerLigne()

on_resize 0,redim0

end

sub tableau_initial()
  dim_local largeur%, hauteur%
  largeur% = width_client(0) - 20 :' 20 ==> marges : 10 pixels à droite + 10 pixels à gauche  
  hauteur% = height_client(0) - 20 : ' 20 ==> marges : 10 pixels en haut + 10 pixels en bas
  
  KG% = dll_call1("DeleteKGFGrid",KG%)
  KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),1,1)
  res% = dll_call5("LocateKGFGrid",KG%,10,10,largeur%,hauteur%)
  res% = dll_call5("SetGlobalKGFGridDimensions",KG%,20,10,80,25)
  res% = dll_call6("SetKGFGridCellRangeType",KG%,1,20,1,10,1)
  res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,120)
  res% = dll_call4("SetKGFGridRowRangeHeight",KG%,4,4,50)
  display
end_sub

sub charge()
  for r%=1 to 20
    for c%=1 to 10
      s$ = "r"+str$(r%)+" c"+str$(c%)
      res% = dll_call6("SetKGFGridCellRangeValue",KG%,r%,r%,c%,c%,adr(s$))
      display
    next c%
  next r%
end_sub

sub fixerLigne()
  c% = ((0*256)+255)*256+255                          : ' défaut: fond jaune pour cellules fixes
  res% = dll_call2("SetKGFGridFixedDefaultCellColor",KG%,c%)
  s$ = "Arial Black"                                  : ' défaut: texte en Arial Black pour cellules fixes
  c% = ((255*256)+0)*256+0                            : ' défaut: texte en bleu pour cellules fixes
  res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%)
  res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes
  res% = dll_call2("SetKGFGridFixedRows",KG%,2)        : ' <=== fixer les deux lignes du haut
end_sub

redim0:
    redimensionnementKGFGrid()
return

sub redimensionnementKGFGrid()
    ' Redimensionnement de KGFGrid en fonction des dimensions de la fenetre 0
    dim_local largeur%, hauteur%
    
    largeur% = width_client(0) - 20 :' 20 ==> marges : 10 pixels à droite + 10 pixels à gauche  
    hauteur% = height_client(0) - 20 : ' 20 ==> marges : 10 pixels en haut + 10 pixels en bas

    res% = dll_call5("LocateKGFGrid",KG%,10,10,largeur%,hauteur%) :' position x, y, largeur, hauteur
end_sub

Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyLun 26 Fév 2024 - 15:48

Les cellules fixes disparaissent - oui, il faut les redemander.

L'extension des attributs aux cellules fixes - c'est en gestation.

En fait, j'ai utilisé une petite astuce technique pour réaliser les lignes et colonnes fixes.
Je rend invisibles ces colonnes, je crée un KGFGris suplémentaire avec les dimenions de zones fices et je le olace à l'endroit du KGFGrid d'origine qui, de son côté, est déplacé horizontalement ou verticalement, selon le cas.

Ceci signifie que le dois copier le contenu des cellules rendues jn visibles dans celles dunouveau KGFGrid. Mes données, c'était facile. Tu as pu constater qu'au début, des dimensions manquaient... c'est fait. Police, attributs et couleurs - c'est fait. Le format d'affichage et la justification - c'est en cours.

Pour le moment, j'ai semé la pagaille dans mon code - faudra que je corrige cela d'abord avant de continuer.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyLun 26 Fév 2024 - 17:25

@Klaus :
 
Merci pour les explications.
 
J’ai restructuré le programme de Lepetitmarocain et je constate une anomalie :
Lors d’un clic sur une cellule partiellement visible, le tableau se décale pour obtenir une vue complète de la cellule, mais la ligne fixe ne se décale pas.
 
Avec des captures d’écran, se sera plus parlant :
 
Situation de départ:
 
Après avoir cliqué, la ligne fixe n’a pas suivi le reste du tableau:



Une action sur l'ascenseur horizontal rétablit la situation.
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyLun 26 Fév 2024 - 23:13

Intéressant. Je pense savoir d'où ça vient, mais il faut d'abord que je répare la pagaille que j'y ai mise... mais je m'en occupe.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyMar 27 Fév 2024 - 10:49

Bonjour à tous.

@Marc.
Merci beaucoup d'avoir testé mon morceau de programme.
Je ne savais pas comment expliquer le problème à Klaus.

@Klaus
Merci pour ton travail.

Bonne journée.
Revenir en haut Aller en bas
lepetitmarocain




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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyMar 27 Fév 2024 - 11:03

Bonjour de nouveau.
@Klaus
Je constate que sur les lignes fixes, il n'y a toujours pas de libellé, alors qu'il y en a dans le programme.
Je pense donc qu'il n'y aura également pas de lignes venant de mon fichier.
Merci.
Bonne journée
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyMar 27 Fév 2024 - 12:01

Il n'y a pas de libéllé ? Essaie de déclarer, pour les lignes fixes, toute les cellules de ces lignes en type "texte" (type 1). C'est uniquement ce type de cellule qui est pris en compte actuellement pour les lignes/colonnes fixes.

Cela fera partie d'une évolution à venir.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyMer 28 Fév 2024 - 17:01

KGF.dll V10.04 du 28/02/2024

Nouveautés:
- KGFGrid - correction d'un bug de hauteur/largeur des lignes/colonnes fixes
- KGFGrid: reprise dans les zones fixes du type de cellules string, integer et flottant, justification et bordures


Modules modifiés:
KGF.dll

La doc est inchangée - ça viendra prochainement.

Voilà. Be bug est corrigé, et on reprend maintenant correctement les cellules de type string, integer et flottant. On applique également la justification ainsi que les bordures des cellules individuelles dans les parties fixes.

Je rappelle le programme de démo:
Code:
' prototype_KGFGrid.bas

label gauche, haut, sgauche, shaut

dim res%, KG%, r%, c%, s$
dim KGOK%

dll_on "KGF.dll"

full_space 0
button 1 : top 1,10 : left 1,10 : width 1,100 : caption 1,"A gauche" : on_click 1,gauche
button 2 : top 2,10 : left 2,120 : width 2,100 : caption 2,"En haut" : on_click 2,haut
button 11 : top 11,40 : left 11,10 : width 11,100 : caption 11,"Fixer 2 colonnes" : on_click 11,sgauche
  inactive 11
button 21 : top 21,40 : left 21,120 : width 21,100 : caption 21,"Fixer 2 lignes" : on_click 21,shaut
  inactive 21
memo 30 : top 30,300 : left 30,200 : width 30,500 : height 30,300 : bar_both 30
  font_name 30,"Courier" : font_size 30,12
  item_add 30,"Choisir le mode opératoire:"
  item_add 30,"  A gauche = les deux colonnes de gauche sont fixes"
  item_add 30,"  En haut  = les deux lignes du haut sont fixes"
end

sub tableau_initial()
  KG% = dll_call1("DeleteKGFGrid",KG%)
  KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),2,1)
  res% = dll_call5("LocateKGFGrid",KG%,200,80,500,200)
  res% = dll_call5("SetGlobalKGFGridDimensions",KG%,20,10,80,25)
  res% = dll_call6("SetKGFGridCellRangeType",KG%,1,20,1,10,1)              : ' <===== crash ici !
  res% = dll_call4("SetKGFGridColumnRangeWidth",KG%,4,4,120)
  res% = dll_call4("SetKGFGridRowRangeHeight",KG%,4,4,50)
  display 
end_sub

sub charge()
  for r%=1 to 20
    for c%=1 to 10
      s$ = "r"+str$(r%)+" c"+str$(c%)
      res% = dll_call6("SetKGFGridCellRangeValue",KG%,r%,r%,c%,c%,adr(s$))
      display
    next c%
  next r%
end_sub


gauche:
  inactive 11
  inactive 21
  tableau_initial()
  charge()
  active 11
  clear 30
  item_add 30,"Choisir me mode opératoire:"
  item_add 30,"  A gauche = les deux colonnes de gauche sont fixes"
  item_add 30,"  En haut  = les deux lignes du haut sont fixes"
  item_add 30," "
  item_add 30,"Fixer 2 colonnes = installer les 2 colonnes fixes"
  return

sgauche:
  s$ = "Arial Black"                                  : ' défaut: texte en Arial Black pour cellules fixes
  c% = ((0*0)+255)*256+255                            : ' défaut: texte en jaune pour cellules fixes
  res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%)
  res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes
  res% = dll_call2("SetKGFGridFixedColumns",KG%,2)    : ' <=== fixer les deux colonnes de gauche
  inactive 11
  clear 30
  item_add 30,"Choisir me mode opératoire:"
  item_add 30,"  A gauche = les deux colonnes de gauche sont fixes"
  item_add 30,"  En haut  = les deux lignes du haut sont fixes"
  item_add 30," "
  item_add 30,"Colonnes fixes sur fond par défaut (clAqua=FFFF00)"
  item_add 30,"Police: Arial Black 12 jaune gras italique"
  return

haut:
  inactive 11
  inactive 21
  tableau_initial()
  charge()
  active 21
  clear 30
  item_add 30,"Choisir me mode opératoire:"
  item_add 30,"  A gauche = les deux colonnes de gauche sont fixes"
  item_add 30,"  En haut  = les deux lignes du haut sont fixes"
  item_add 30," "
  item_add 30,"Fixer 2 Lignes = installer les 2 lignes fixes"
  return

shaut:
  c% = ((0*256)+255)*256+255                          : ' défaut: fond jaune pour cellules fixes
  res% = dll_call2("SetKGFGridFixedDefaultCellColor",KG%,c%)
  s$ = "Arial Black"                                  : ' défaut: texte en Arial Black pour cellules fixes
  c% = ((255*256)+0)*256+0                            : ' défaut: texte en bleu pour cellules fixes
  res% = dll_call4("SetKGFGridDefaultFixedCellFont",KG%,adr(s$),12,c%)
  res% = dll_call5("SetKGFGridDefaultFixedCellAttributes",KG%,1,1,0,0) : ' défaut: texte en gras italique pour cellules fixes
  res% = dll_call2("SetKGFGridFixedRows",KG%,2)        : ' <=== fixer les deux lignes du haut
  inactive 21
  clear 30
  item_add 30,"Choisir me mode opératoire:"
  item_add 30,"  A gauche = les deux colonnes de gauche sont fixes"
  item_add 30,"  En haut  = les deux lignes du haut sont fixes"
  item_add 30," "
  item_add 30,"Lignes fixes sur fond jaune (clYellow=00FFFF)"
  item_add 30,"Police: Arial Black 12 bleu gras italique"
  return

end
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyDim 5 Mai 2024 - 10:57

KGF.dll V10.05 du 04/05/2024

Nouveautés:
- Nouvelles fonctions: Crypt64 et Uncrypt64

Modules modifiés:
KGF.dll

La doc est inchangée - ça viendra prochainement.

Ces fonctions cryptent ou décryptent un texte selon la méthode Base64.
Les caractères pris en compte sont:
Code:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/
Le résultat crypté est une chaîne de caractuères lisible mais dépourvue de sens.

Format d'appel:
Code:
res% = dll_call2("Crypt64",adr(entree$),adr(sortie$))
res% = dll_call2("Uncrypt64",adr(entree$),adr(sortie$))

Comme d'habitude, il faut réserver un espace plus long pour la chaîne de sortie que pour la chaîne d'entréé en cas de cryptage, et l'inverse pour le décryptage. Le principe est le suivant:
Code:
dim entree$, sortie$
entree$ = "Mon texte"
sortie$ = string$(50," ")
res% = dll_call2("Crypt64",adr(entree$),adr(sortie$))
sortie$ = trim$(sortie$)

Idem pour Uncrypt64.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyLun 6 Mai 2024 - 11:41

KGF.dll V10.06 du 06/05/2024

Nouveautés:
- Nouvelles fonctions: ComputerName, GetRemoteProcessList

Modules modifiés:
KGF.dll

La doc est inchangée - ça viendra prochainement.

ComputerName donne le nom de l'ordinateur sur lequel on travaille:
Code:
dim res%, nom$
nom$ = string$(50," ")
res% = dll_call1("ComputerName",adr(nom$)
nom$ = trim$(nom$)

GetRemoteProcessList donne la liste des processus actifs sur une machine distante du même réseau,
ou elle vérifie si un programme spécifique est actif sur une machine distante du même réseau.
Code:
dim res%,computer$, prog$
memo 17
computer$ = "SERVEUR"

' récupérer la liste des processus du système distant nommé SERVEUR:
res% = dll_call3("GetRemoteProcessList ",adr(computer$),handle(17),0)

' vérifier si le programme Mon_Test est actif sur le système nommé SERVEUR:
prog$ = "Mon_Test"
res% = dll_call3("GetRemoteProcessList ",adr(computer$),0,adr(prog$))
if res%<0
  message prog$+" est inactif sur "+computer$
else
  message prog$+" est actif "+computer$
end_if
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyLun 5 Aoû 2024 - 12:51

KGF.dll V10.07 du 05/08/2024

Nouveautés:
- Nouvelles fonction: PurgeCurrentPrinterQueue

Modules modifiés:
KGF.dll

La doc est inchangée - ça viendra prochainement.

Ca vous est déjà arrivé ? On essaie d'imprimer un document, et l'impression plante pour une raison quelconque (plus d'encre, coupure de courant, ...) ou on s'aperçoit qu'on a lancé l'impression à tort - dans de multiples cas, on est forcé d'arrêter l'impression, ou elle est arrêtée d'office. Or, la tache reste dans la file d'attente. Et quelques fois, il est impossible de l'enlever.

Voici une fonction qui permet de purger la file d'attente de l'imprimante sélectionnée par défaut, quelqiue soit sa situation. Cette fonction ne nécessite aucun paramètre. En voici une démo:
Code:
; test_PurgeJobsOnCurrentPrinter.bas

label test0, test1, resetprinter
dim res%

width 0,screen_x
button 1 : caption 1,"Complet" : on_click 1,test0
button 2 : caption 2,"Réduit" : on_click 2,test1 : left 2,100
button 4 : caption 4,"Effacer" : on_click 4,resetprinter : left 4,200
memo 3  : bar_both 3 : top 3,40 : height 3,height_client(0)-40 : width 3,width_client(0)-20 : top 3,40
dll_on "KGF.dll"
end

test0:
  res% = dll_call2("GetPrinterQueueInformation",0,handle(3))
  return

test1:
  res% = dll_call2("GetPrinterQueueInformation",1,handle(3))
  return
 
resetprinter:
  res% = dll_call0("PurgeCurrentPrinterQueue")
  message "PurgeCurrentPrinterQueue = "+str$(res%)
  clear 3
  return

Pour essayer, débranche l'imprimante (en retirant le cânle ou en la mettant hors tension), lancez une impression sur cette imprimante et ouvrez la file d'attente. Vous verrez la tâche d'impression dans la liste des données à imprimer.

Maintenant, lancez le programme ci-dessus. Cliquez sur "Réduit" et vous verrez la même tâche apparaître dans le mémo.

Maintenant, cliquez sur "Effacer", et la tâche disparaît de la liste des tâches dans la file d'attente. Si vous cliquez à nouveau sur "Réduit", le mémo restera vide - la file d'attente a été purgée.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 14 EmptyMer 28 Aoû 2024 - 23:35

Salut Klaus.

Voilà une fonction qui pourrait être qualifiée d'écologiste et sauvera des feuilles de papiers.
Laughing
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyJeu 29 Aoû 2024 - 11:48

KGF.dll V10.08 du 29/08/2024

Nouveautés:
- Réécriture complète de la fonction SelectWindowsPrinter

Modules modifiés:
KGF.dll

La doc est inchangée - ça viendra prochainement.

Cette réécriture a été rendue nécessaire car avec les nouvelles versions de Windows (10 et 11), cette fonction ne marchait plus dans tous les cas. ET en même temps, j'ai ajouté une fonctionnalité supplémentaire.

Voici ce que disait la doc:
KGF_dll - nouvelles versions - Page 14 Aa1133

On voit que si le premier paramètre est zéro, le second indique lindice de l'imprimante à sélectionner. Ce comportement reste, mais en lus, cette imprimante devient maintenant l'imprimante par défaut du système.

Si l'on passe l(adresse d'une variable string dans le premier paramètre, alors deux cas sont maintenant possibles:

1. la variable contient le nom EXACT d'une des imprimantes du système
==> dans ce cas, cette imprimande sera sélectionnée. Et si le second paramètre est différent de zéro (1 par exemple), alors cetteimprimante deviendra l'imprimante par défaut su système. Sinon, elle reste sélectionnée pour le programme en cours, mais pas pour les autres

2. la variable est un string vide ou ne contient que des espaces
==> dans ce cas, un dialogue Windows de sélection d'imprimante apparaît. Si l'on abandonne se dialogue, rien ne se passe. Si l'on sélectionne une imprimante dans ce dialogue, le fonctioinnement est alors identique au cas précédent.

Je rappelle qu'il y a depuis longtemps une fonction qui retourne la liste des noms des imprimantes:
Code:
res% = DLL_call1("GetPrinterNames",handle(list%))
Cette fonction retourne le résultat dans un objet LIST Panoramic. Les noms sont dans l'ordre, et leur indice (1, 2, 3, ...) correspond à l'indice attendu par le programme dans le second paramètre si le repmier paramètre est égal à zéro.

On a donc toute latitude pour choisir une imprimante, soit localement pour e programme en cours, soit globalement avec effet oermanent.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyMer 4 Sep 2024 - 2:24

KGF.dll V10.09 du 04/09/2024

Nouveautés:
- nouvel objet: PrinterPreview

Modules modifiés:
KGF.dll

La doc est inchangée - ça viendra prochainement.

Cet objet est le début d'une révolution des possibilités d'impression avec Panoramic !

Cet objet permettra de composer une ou plusieurs pages d'impression (nombre non limité).

La différence importante est que ces pages ne sont pas directement imprimées, mais gardées dans une structure particulière (Extended Metafile de Microsoft Windows, pour les puristes). On peut à tout moment appeler la prévisualisation avec sélection des pages, imprimer une page spécifique ou toutes les pages.
Mais un peut également ajouter des choses sur des pages déjà imprimées et visualiser le résultat avant l'impression réelle. On peut même refaure totalement une page si le résultat ne convient pas.

Pour l'heure, la partie impression réelle est simulée par la création forfaitaire de 3 pages d'impression. Actuellement, tous ce qui concerne la prévisualisation est opérationnel. La partie impression proprement-dite suivra prochainement.

Jugez plutôt: voici une petite démo avec 4 boutons:
- creation de la prévisualisation
- suppression de la prévisualisation
- création des 3 pages de démo
- ouverture de la prévisualisation
Le code:
Code:
' test_PrinterPreview.bas

label createprinterpreview, deleteprinterpreview, builddemopages, showprinterpreview

dim PRV%, res%

full_space 0

button 1 : top 1,10 : left 1,10 : caption 1,"Create Preview"
  width 1,120 : font_bold 1 : on_click 1,createprinterpreview
button 2 : top 2,top(1)+height(1) : left 2,10 : caption 2,"Delete Preview"
  width 2,120 : font_bold 2 : on_click 2,deleteprinterpreview
button 3 : top 3,top(2)+height(2)+10 : left 3,10 : caption 3,"Build démo pages"
  width 3,120 : font_bold 3 : on_click 3,builddemopages
button 4 : top 4,top(3)+height(3) : left 4,10 : caption 4,"Show Preview"
  width 4,120 : font_bold 4 : on_click 4,showprinterpreview
 

dll_on "KGF.dll"

end

createprinterpreview:
  PRV% = dll_call0("CreatePrinterPreview")
  message "CreatePrinterPreview: PRV%="+hex$(PRV%)
  return
 
deleteprinterpreview:
  PRV% = dll_call1("DeletePrinterPreview",PRV%)
  message "DeletePrinterPreview: PRV%="+hex$(PRV%)
  return
 
builddemopages:
  res% = dll_call1("BuildDemoPrinterPreview",PRV%)
  message "BuildDemoPrinterPreview: res%="+str$(res%)
  return

showprinterpreview:
  res% = dll_call1("ShowPrinterPreview",PRV%)
  message "ShowPrinterPreview: res%="+str$(res%)
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 14 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 14 EmptyMar 10 Sep 2024 - 11:06

KGF.dll V10.10 du 10/09/2024

Nouveautés:
- PrinterPreview: finalisation du nouveau système d'impression

Modules modifiés:
KGF.dll

La doc est inchangée - ça viendra prochainement.

La révolution des capacités d'impression se poursuit :

On peut maintenant créer une ou plusieurs pages d'impression 'DIN A 4 pour le moment), sans les imprimer physiquement.
A tout moment, on peut les prévisualiser (toute la liste sous forme d'icônes ou individuellement sous forme d'aperçu de la page), et on peut les imprimer individuellement (et prochainement globalement).

Sur chaque page, on peut placer du texte (même multi-lignes !), des dessins (lignes, rectangles, rectangles arrondis, ellipses), et des images (à aprtir d'un fichier ou à partir du presse-papier).

Je mets à disposition un programme de démo ci-après, dans lequel chaue fonction est accesible par un bouton? En bas de la fen$tre, une ligne d'état indique le résultat de chaque opération.

Avant tout, essayez le bouton "Insert Programmed page". Ce bouton crée l'objet PrinterPreview, puis crée 4 pages de démo, avant d'inésérer par programme une nouvelle page devant la page 2. Cette page insérée devient bien sûr page 2 à son tour. Et ce bouton y crée un fond jaune avec bord noir sous forme d'un rectangle, phuis ajoute un texte de 3 lignes, avace de dessiner une ellipse à fond transparent et d'ajouter une image sélectionnée par un dialogue d'ouverture. Pour le moment, se sont des images BMP. D'autres formats suivront.

Autre fonction capitale: on peut sauvegarder les pages d'impression constiuée dans un fichier de sauvegarde avec l'extension *.pbf (Previwe Backup File). Un tel fichier peut être rechargé plus tard, visualisé et/ou imprimé, mais surtout modifié ! Et oui, avec cet outil, on peut modifier une impréssion déjà réalisée ! Ajout ou suppression de pages, ajout de textes, grahiques, d'images... c'est tout nouveau !

Petite note importante:

Pour les tests, j'ai utilisé une imprimante virtuelle PDFCreator qui crée une image de l'impression dans un fichier PDF. Or,, cet outil (freeware) a un bug dans la gestion des impressions multi-pages. J'ai installé PDF24-Creator et tout fonctionne parfaitement.

A la fin de ce post, il y a l'image qui a servi pour le test dont le résultat est ici:
KGF_dll - nouvelles versions - Page 14 Aa1135

Voici le code du programme de démo:
Code:
' test_PrinterPreview.bas

inactive 0

label createprinterpreview, deleteprinterpreview, builddemopages
label SetprogrammedpageFont, insertprogrammedpage, showprinterpreview
label addpage, insertpage, reopenpage, closepage, deletepage, returnactualpage,
label returnpagecount, savepagestofile, loadpagesfromfile
label close100, validatefont, none
label setprinterpreviewfont, printtext, printshape, printimage
label close200, validateprinttext
label close300, validateprintshape
label close400, validateprintimage

dim PRV%, res%, ind%, f$

dim FontName$      : FontName$      = "Arial"
dim FontSize%      : FontSize%      = 12
dim FontAttributes$ : FontAttributes$ = ""
dim FontColor%      : FontColor%      = hex("FFFFFF")
dim BackColor%      : BackColor%      = -1                    : ' fond transparent

dim text_X%                : text_X%                =  0
dim text_Y%                : text_Y%                =  0
dim text_text$              : text_text$              =  ""
dim shape_X1%              : shape_X1%              =  0
dim shape_Y1%              : shape_Y1%              =  0
dim shape_X2%              : shape_X2%              =  0
dim shape_Y2%              : shape_Y2%              =  0
dim shape_Type%            : shape_Type%            =  1  : ' LINE
dim shape_RADIUS%          : shape_Radius%          =  0
dim shape_BorderColor%      : shape_BorderColor%      =  0  : ' noir
dim shape_BackgroundColor%  : shape_BackgroundColor%  = -1  : ' transparent
dim shape_Transparent%      : shape_Transparent%      =  1  : ' transparent
dim shape_PenWidth%        : shape_PenWidth%        =  1
dim image_X1%              : image_X1%              =  0
dim image_Y1%              : shape_Y1%              =  0
dim image_X2%              : image_Y1%              =  0
dim image_Y2%              : image_Y2%              =  0
dim image_src%              : image_src%              =  1  : ' origine de l'image
dim image_file$            : image_file$            =  ""   

dim buttonwidth%            : buttonwidth%            = 150

full_space 0

button 1 : top 1,10 : left 1,10 : caption 1,"Create Preview"
  width 1,buttonwidth% : font_bold 1 : on_click 1,createprinterpreview
button 2 : top 2,top(1)+height(1) : left 2,10 : caption 2,"Delete Preview"
  width 2,buttonwidth% : font_bold 2 : on_click 2,deleteprinterpreview 
 
button 3 : top 3,top(2)+height(2)+40 : left 3,10 : caption 3,"Build démo pages"
  width 3,buttonwidth% : font_bold 3 : on_click 3,builddemopages
button 4 : top 4,top(3)+height(3) : left 4,10 : caption 4,"Insert Programmed page"
  width 4,buttonwidth% : font_bold 4 : on_click 4,insertprogrammedpage
button 5 : top 5,top(4)+height(4) : left 5,10 : caption 5,"Show Preview"
  width 5,buttonwidth% : font_bold 5 : on_click 5,showprinterpreview
 
button 10 : top 10,top(4)+height(4)+40 : left 10,10 : caption 10,"Add Page"
  width 10,buttonwidth% : font_bold 10 : on_click 10,addpage
button 11 : top 11,top(10)+height(10) : left 11,10 : caption 11,"Insert Page"
  width 11,buttonwidth% : font_bold 11 : on_click 11,insertpage
button 12 : top 12,top(11)+height(11) : left 12,10 : caption 12,"Reopen Page"
  width 12,buttonwidth% : font_bold 12 : on_click 12,reopenpage
button 13 : top 13,top(12)+height(12) : left 13,10 : caption 13,"Close Page"
  width 13,buttonwidth% : font_bold 13 : on_click 13,closepage
button 14 : top 14,top(13)+height(13) : left 14,10 : caption 14,"Delete Actual Page"
  width 14,buttonwidth% : font_bold 14 : on_click 14,deletepage
button 15 : top 15,top(14)+height(14) : left 15,10 : caption 15,"Return Actual Page"
  width 15,buttonwidth% : font_bold 15 : on_click 15,returnactualpage
button 16 : top 16,top(15)+height(15) : left 16,10 : caption 16,"Return Page Count"
  width 16,buttonwidth% : font_bold 16 : on_click 16,returnpagecount
 
button 17 : top 17,top(15)+height(16) : left 17,10 : caption 17,"Save pages to file"
  width 17,buttonwidth% : font_bold 17 : on_click 17,savepagestofile
button 18 : top 18,top(17)+height(17) : left 18,10 : caption 18,"Load pages from filet"
  width 18,buttonwidth% : font_bold 18 : on_click 18,loadpagesfromfile


button 20 : top 20,top(16)+height(16)+40 : left 20,10 : caption 20,"Change Font"
  width 20,buttonwidth% : font_bold 20 : on_click 20,setprinterpreviewfont
button 21 : top 21,top(20)+height(20) : left 21,10 : caption 21,"Print Text"
  width 21,buttonwidth% : font_bold 21 : on_click 21,printtext
button 22 : top 22,top(21)+height(21) : left 22,10 : caption 22,"Print Shape"
  width 22,buttonwidth% : font_bold 22 : on_click 22,printshape
button 23 : top 23,top(22)+height(22) : left 23,10 : caption 23,"Print Image"
  width 23,buttonwidth% : font_bold 23 : on_click 23,printimage
 
 
 
form 100 : hide 100 : width 100,500 : height 100,500
  top 100,(screen_y-height(100))/2 : left 100,(screen_x-width(100))/2
  caption 100,"Font selector" : on_close 100,close100
alpha 101 : parent 101,100 : top 101,10 : left 101,10 : caption 101,"Fonts:"
list 102 : parent 102,100 : top 102,30 : left 102,10 : width 102,200 : height 102,height_client(100)-40
  font_names_load 102
alpha 103 : parent 103,100 : top 103,10 : left 103,240 : caption 103,"Parameters:"
alpha 104 : parent 104,100 : top 104,40 : left 104,260 : caption 104,"Size:"
combo 105 : parent 105,100 : top 105,40 : left 105,320 : width 105,40
  item_add 105,"8" 
  item_add 105,"9" 
  item_add 105,"10" 
  item_add 105,"11" 
  item_add 105,"12" 
  item_add 105,"14" 
  item_add 105,"16" 
  item_add 105,"18" 
  item_add 105,"20" 
  item_add 105,"22" 
  item_add 105,"24" 
  item_add 105,"26" 
  item_add 105,"28" 
  item_add 105,"36" 
  item_add 105,"48" 
  item_add 105,"72"
  item_select 105,5
container 106 : parent 106,100 : top 106,80 : left 106,260 : caption 106,"Font attributes:"
  width 106,120 : height 106,130
check 1061 : parent 1061,106 : top 1061,20 : left 1061,20 : caption 1061,"Bold" 
  font_bold 1061
check 1062 : parent 1062,106 : top 1062,40 : left 1062,20 : caption 1062,"Italic" 
  font_italic 1062
check 1063 : parent 1063,106 : top 1063,60 : left 1063,20 : caption 1063,"Underline" 
  font_underline 1063
check 1064 : parent 1064,106 : top 1064,80 : left 1064,20 : caption 1064,"Strikeout" 
  font_strike 1064
button 1065 : parent 1065,106 : top 1065,100 : left 1065,20 : caption 1065,"None"
  on_click 1065,none 
check 107 : parent 107,100 : top 107,220 : left 107,260 : caption 107,"Background transparent"
  width 107,200 : mark_on 107
alpha 108 : parent 108,100 : top 108,250 : left 108,260 : caption 108,"Background RGB color:"
spin 1081 : parent 1081,100 : top 1081,270 : left 1081,280 : width 1081,50
  min 1081,0 : max 1081,255 : position 1081,0
spin 1082 : parent 1082,100 : top 1082,270 : left 1082,340 : width 1082,50
  min 1082,0 : max 1082,255 : position 1082,0
spin 1083 : parent 1083,100 : top 1083,270 : left 1083,400 : width 1083,50
  min 1083,0 : max 1083,255 : position 1083,0
alpha 109 : parent 109,100 : top 109,300 : left 109,260 : caption 109,"Font RGB color:"
spin 1091 : parent 1091,100 : top 1091,320 : left 1091,280 : width 1091,50
  min 1091,0 : max 1091,255 : position 1091,0
spin 1092 : parent 1092,100 : top 1092,320 : left 1092,340 : width 1092,50
  min 1092,0 : max 1092,255 : position 1092,0
spin 1093 : parent 1093,100 : top 1093,320 : left 1093,400 : width 1093,50
  min 1093,0 : max 1093,255 : position 1093,0
button 110 : parent 110,100 : top 110,360 : left 110,260 : caption 110,"Validate"
  height 110,40 : width 110,150 : font_size 110,16 : font_bold 110 : on_click 110,validatefont
 
form 200 : hide 200 : width 200,700 : height 200,500
  top 200,(screen_y-height(200))/2 : left 200,(screen_x-width(200))/2
  caption 200,"Text to print" : on_close 200,close200
alpha 201 : parent 201,200 : top 201,20 : left 201,20 : caption 201,"Position X (mm):"
spin 202 : parent 202,200 : top 202,20 : left 202,110 : width 202,50
  min 202,0 : max 202,209 : position 202,0
alpha 203 : parent 203,200 : top 203,20 : left 203,200 : caption 203,"Position y (mm):"
spin 204 : parent 204,200 : top 204,20 : left 204,290 : width 204,50
  min 204,0 : max 204,296 : position 204,0
alpha 205 : parent 205,200 : top 205,50 : left 205,20 : caption 205,"Text to print:"
memo 206 : parent 206,200 : top 206,70 : left 206,20 : width 206,640: height 206,300
  bar_both 206
button 210 : parent 210,200 : top 210,360 : left 210,260 : caption 210,"Validate"
  height 210,40 : width 210,150 : font_size 210,16 : font_bold 210 : on_click 210,validateprinttext
 
form 300 : hide 300 : width 300,700 : height 300,500
  top 300,(screen_y-height(300))/2 : left 300,(screen_x-width(300))/2
  caption 300,"Shape to print" : on_close 300,close300
alpha 301 : parent 301,300 : top 301,20 : left 301,20 : caption 301,"Start Position X1 (mm):"
spin 302 : parent 302,300 : top 302,20 : left 302,160 : width 302,50
  min 302,0 : max 302,209 : position 302,0
alpha 303 : parent 303,300 : top 303,20 : left 303,260 : caption 303,"Position Y1 (mm):"
spin 304 : parent 304,300 : top 304,20 : left 304,410 : width 304,50
  min 304,0 : max 304,296 : position 304,0
alpha 305 : parent 305,300 : top 305,50 : left 305,20 : caption 305,"End Position X2 (mm):"
spin 306 : parent 306,300 : top 306,50 : left 306,160 : width 306,50
  min 306,0 : max 306,209 : position 306,0
alpha 307 : parent 307,300 : top 307,50 : left 307,260 : caption 307,"End Position Y2 (mm):"
spin 308 : parent 308,300 : top 308,50 : left 308,410 : width 308,50
  min 308,0 : max 308,296 : position 308,0
alpha 309 : parent 309,300 : top 309,80 : left 309,20 : caption 309,"Shape type:"
combo 310 : parent 310,300 : top 310,80 : left 310,160 : width 310,120
  item_add 310,"Line"
  item_add 310,"Rectangle"
  item_add 310,"Rounded rectangle"
  item_add 310,"Ellipse"
  item_select 310,2
alpha 311 : parent 311,300 : top 311,80 : left 311,320 : caption 311,"Radius (pixels):"
spin 312 : parent 312,300 : top 312,80 : left 312,410 : width 312,50
alpha 313 : parent 313,300 : top 313,110 : left 313,20 : caption 313,"Border RGB color:"
spin 3131 : parent 3131,300 : top 3131,110 : left 3131,160 : width 3131,50
  min 3131,0 : max 3131,255 : position 3131,0
spin 3132 : parent 3132,300 : top 3132,110 : left 3132,220 : width 3132,50
  min 3132,0 : max 3132,255 : position 3132,0
spin 3133 : parent 3133,300 : top 3133,110 : left 3133,280 : width 3133,50
  min 3133,0 : max 3133,255 : position 3133,0
alpha 314 : parent 314,300 : top 314,140 : left 314,20 : caption 314,"Fill RGB color:"
spin 3141 : parent 3141,300 : top 3141,140 : left 3141,160 : width 3141,50
  min 3141,0 : max 3141,255 : position 3141,0
spin 3142 : parent 3142,300 : top 3142,140 : left 3142,220 : width 3142,50
  min 3142,0 : max 3142,255 : position 3142,0
spin 3143 : parent 3143,300 : top 3143,140 : left 3143,280 : width 3143,50
  min 3143,0 : max 3143,255 : position 3143,0
alpha 315 : parent 315,300 : top 315,140 : left 315,360 : caption 315,"Transparent:"
check 316 : parent 316,300 : top 316,140 : left 316,440
  mark_on 316 
alpha 317 : parent 317,300 : top 317,170 : left 317,20 : caption 317,"Pen width (pixels):"
spin 318 : parent 318,300 : top 318,170 : left 318,160 : width 318,50
  min 318,1 : max 318,300 : position 318,1
button 320 : parent 320,300 : top 320,360 : left 320,260 : caption 320,"Validate"
  height 320,40 : width 320,150 : font_size 320,16 : font_bold 320 : on_click 320,validateprintshape 
 
form 400 : hide 400 : width 400,700 : height 400,500
  top 400,(screen_y-height(400))/2 : left 400,(screen_x-width(400))/2
  caption 400,"Image to print" : on_close 400,close400
alpha 401 : parent 401,400 : top 401,20 : left 401,20 : caption 401,"Start Position X1 (mm):"
spin 402 : parent 402,400 : top 402,20 : left 402,160 : width 402,50
  min 402,0 : max 402,209 : position 402,0
alpha 403 : parent 403,400 : top 403,20 : left 403,260 : caption 403,"Position Y1 (mm):"
spin 404 : parent 404,400 : top 404,20 : left 404,410 : width 404,50
  min 404,0 : max 404,296 : position 404,0
alpha 405 : parent 405,400 : top 405,50 : left 405,20 : caption 405,"End Position X2 (mm):"
spin 406 : parent 406,400 : top 406,50 : left 406,160 : width 406,50
  min 406,0 : max 406,209 : position 406,0
alpha 407 : parent 407,400 : top 407,50 : left 407,260 : caption 407,"End Position Y2 (mm):"
spin 408 : parent 408,400 : top 408,50 : left 408,410 : width 408,50
  min 408,0 : max 408,296 : position 408,0
alpha 409 : parent 409,400 : top 409,80 : left 409,20 : caption 409,"Image source:"
combo 410 : parent 410,400 : top 410,80 : left 410,160 : width 410,120
  item_add 410,"Clipboard"
  item_add 410,"File"
  item_select 410,1
button 420 : parent 420,400 : top 420,360 : left 420,260 : caption 420,"Validate"
  height 420,40 : width 420,150 : font_size 420,16 : font_bold 420 : on_click 420,validateprintimage 

open_dialog 996 : filter 996,"Preview baclup file (*.pbf)|*.pbf)"
save_dialog 997 : filter 997,"Preview baclup file (*.pbf)|*.pbf)"
open_dialog 998 : filter 998,"Image file (*.bmp)|*.bmp"
alpha 999 : top 999,height_client(0)-30 : left 999,0 : font_bold 999 : caption 999,"Ready"

dll_on "KGF.dll"
active 0
to_foreground 0

end

fnc GetPageIndex%(txt$)
  dim_local index%
  if message_input("Select a page by index",txt$,"1")=1
    result val(message_text$)
  else
    result 0
  end_if
end_fnc
 

createprinterpreview:
  PRV% = dll_call1("CreatePrinterPreview",1)
  caption 999, "CreatePrinterPreview: PRV%="+hex$(PRV%)
  return
 
deleteprinterpreview:
  PRV% = dll_call1("DeletePrinterPreview",PRV%)
  caption 999, "DeletePrinterPreview: PRV%="+hex$(PRV%)
  return
 
builddemopages:
  res% = dll_call1("BuildDemoPrinterPreview",PRV%)
  caption 999, "BuildDemoPrinterPreview: PRV%="+hex$(PRV%)
  return
   
SetprogrammedpageFont:
  FontName$ = "Arial Black"
  FontSize% = 48
  FontAttributes$ = "B,I,"
  FontColor% = (0*256+0)*256+0              : ' noir
  BackColor% = -1                          : ' fond transparent
  res% = dll_call6("SetPrinterPreviewFont",PRV%,adr(FontName$),FontSize%,adr(FontAttributes$),FontColor%,BackColor%)
  caption 999, "SetPrinterPreviewFont: res%="+str$(res%)
  return
   
insertprogrammedpage:
' Ici, on insère une nouvelle page devant la page avec indexe 2.

' Si l'objet PrinterPreview n'est pas créé, on le cée.
  if PRV%=0
    PRV% = dll_call1("CreatePrinterPreview",1)
    caption 999, "CreatePrinterPreview: PRV%="+hex$(PRV%)
  end_if

' s'il y a moins de 2 pages, alors on crée les pages de démo
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,7,0)      : ' action 7: retourner le nombre de pages présentes
  if res%<2
    res% = dll_call1("BuildDemoPrinterPreview",PRV%)
    caption 999, "BuildDemoPrinterPreview: PRV%="+hex$(PRV%)
    if res%<0 then return
  end_if

' on crée une nuvelle page et on l'insére devant la page 2
  ind% = 2
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,2,ind%)  : ' action 2: insertion nouvelle page
  caption 999, "ManagePagesForPrinterPreview InsertPage: res%="+str$(res%)
  if res%<0 then return
  gosub SetprogrammedpageFont
  if res%<0 then return

' on réouvre la page 2 (la page nouvellement insé&rée) 
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,3,ind%)  : ' action 3: réouverture page ind%
  caption 999, "ManagePagesForPrinterPreview ReopenPage: res%="+str$(res%)
  if res%<0 then return
  gosub SetprogrammedpageFont
  if res%<0 then return
 
' on dessine un rectangle plain de fond jaune et de bord noir sur toute la page
' pour cela, on impose d'abord le style de dessin
  shape_X1%              = 0                    : ' format DIN A4 = 210 x 297 mm
  shape_Y1%              = 0
  shape_X2%              = 209
  shape_Y2%              = 296
  shape_Type%            = 2                    : ' rectangle
  shape_RADIUS%          = 0
  shape_BorderColor%      = (0*256+0)*256+0      : ' noir
  shape_BackgroundColor%  = (0*256+255)*256+255  : ' jaune
  shape_Transparent%      = 0                    : ' opaque
  shape_PenWidth%        = 10                    : ' épaisseur du trait 10 pixels
  if shape_Transparent%=1 then shape_BackgroundColor% = 0-1
  res% = dll_call5("SetPrinterPreviewShapeStyle",PRV%,shape_BorderColor%,shape_BackgroundColor%,shape_PenWidth%,shape_RADIUS%)
  caption 999, "SetPrinterPreviewShapeStyle: res%="+str$(res%)
  if res%<>0 then return 

' puis on dessine le rectangle 
  res% = dll_call6("PrintShapeToPrinterPreview",PRV%,shape_X1%,shape_Y1%,shape_Type%, shape_X2%, shape_Y2%)
  caption 999, "PrintShapeToPrinterPreview: res%="+str$(res%) 
  if res%<>0 then return 

' on imprime un teste multi_lignes en haut de la page
' pour cela, e style de texte a été imposé lors de la création de la page 
  text_X% = 30
  text_Y% = 30
  memo 1000 : hide 1000 : bar_both 1000
  font_names_load 1000
  text_text$ = text$(1000)
  delete 1000
  res% = dll_call5("PrintTextToPrinterPreview",PRV%,text_X%,text_Y%,adr(text_text$),2)
  caption 999, "PrintTextToPrinterPreview: res%="+str$(res%)
 
' on dessine une ellipse trabsparente de bord bleu
' pour cela, on impose d'abord le style de dessin
  shape_X1%              = 50                 
  shape_Y1%              = 70
  shape_X2%              = 180
  shape_Y2%              = 120
  shape_Type%            = 4                    : ' ellipse
  shape_RADIUS%          = 0
  shape_BorderColor%      = (255*256+0)*256+0    : ' bleu
  shape_BackgroundColor%  = (0*256+0)*256+0      : ' noir  (sera ignoré)
  shape_Transparent%      = 1                    : ' transparent
  shape_PenWidth%        = 50                    : ' épaisseur du trait 10 pixels
  if shape_Transparent%=1 then shape_BackgroundColor% = 0-1
  res% = dll_call5("SetPrinterPreviewShapeStyle",PRV%,shape_BorderColor%,shape_BackgroundColor%,shape_PenWidth%,shape_RADIUS%)
  caption 999, "SetPrinterPreviewShapeStyle: res%="+str$(res%)
  if res%<>0 then return 
                     
' on dessine l'ellipse
  res% = dll_call6("PrintShapeToPrinterPreview",PRV%,shape_X1%,shape_Y1%,shape_Type%, shape_X2%, shape_Y2%)
  caption 999, "PrintShapeToPrinterPreview: res%="+str$(res%) 
  if res%<>0 then return 

' ici, on place une image BMP dans la page (d'autres formats suivront)
' l'image est choisie par un dialogue d'ouverture
  image_X1%              = 30
  image_Y1%              = 140
  image_X2%              = 190
  image_Y2%              = 290
  image_src%              = 1            : ' 0=image dans le presse-papier  1=dialogue d'ouverture
  if image_src%=1
    image_file$ = file_name$(998)
    if image_file$="_" then return
    if file_exists(image_file$)=0
      message("PrintImageToPrinterPreview: Image file does not esist"
      return
    end_if
    image_src% = adr(image_file$)
  end_if
  res% = dll_call6("PrintImageToPrinterPreview",PRV%,image_src%,image_X1%,image_Y1%,image_X2%,image_Y2%)
  caption 999, "PrintImageToPrinterPreview: res%="+str$(res%)
 
' onn ferme maintenant la page en cours de sonstruction - cette action est ESSENTIELLE !
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,4,0)      : ' action 4: fermer page actuelle
  caption 999, "ManagePagesForPrinterPreview ClosePage: res%="+str$(res%)

' on crée la fenêtre de prévisualisation et on l'affiche
  res% = dll_call1("ShowPrinterPreview",PRV%)
  caption 999, "ShowPrinterPreview: res%="+str$(res%)

  return

showprinterpreview:
  res% = dll_call1("ShowPrinterPreview",PRV%)
  caption 999, "ShowPrinterPreview: res%="+str$(res%)
  return

addpage:
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,1,0)  : ' action 1: ajout nouvelle page
  caption 999, "ManagePagesForPrinterPreview AddPage: res%="+str$(res%)
  gosub validatefont
  return

insertpage:
  ind% = GetPageIndex%("Insert in front of page: ")
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,2,ind%)  : ' action 2: insertion nouvelle page
  caption 999, "ManagePagesForPrinterPreview InsertPage: res%="+str$(res%)
  gosub validatefont
  return
 
reopenpage:
  ind% = GetPageIndex%("Reopen page: ")
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,3,ind%)  : ' action 3: réouverture page ind%
  caption 999, "ManagePagesForPrinterPreview ReopenPage: res%="+str$(res%)
  gosub validatefont
  return

closepage:
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,4,0)      : ' action 4: fermer page actuelle
  caption 999, "ManagePagesForPrinterPreview ClosePage: res%="+str$(res%)
  return

deletepage:
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,5,0)      : ' action 5: supprimer page actuelle
  caption 999, "ManagePagesForPrinterPreview DeletePage: res%="+str$(res%)
  return
 
returnactualpage:
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,6,0)      : ' action 6: retourner index de page actuelle
  caption 999, "ManagePagesForPrinterPreview Return page: page actuelle="+str$(res%)
  return

returnpagecount:
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,7,0)      : ' action 7: retourner le nombre de pages présentes
  caption 999, "ManagePagesForPrinterPreview Return page count: nombre="+str$(res%)
  return
 
savepagestofile:
  f$ = file_name$(997)
  if f$="_" then return
  message f$
  if file_exists(f$)=1
    if message_confirmation_yes_no("Replace existing backup file ?")<>1 then return
  end_if
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,8,adr(f$)) : ' action 8: sauvegarder tout dans un fichier
  caption 999, "ManagePagesForPrinterPreview Save all to file: res%="+str$(res%)
  return
 
loadpagesfromfile:
  f$ = file_name$(996)
  if f$="_" then return
  if file_exists(f$)<>1
    res% = -1
    caption 999, "ManagePagesForPrinterPreview Load all from file: res%="+str$(res%)
    if message_confirmation_yes_no("Replace existiong backup file ?")<>1 then return
  end_if
  res% = dll_call3("ManagePagesForPrinterPreview",PRV%,9,adr(f$)) : ' action 8: charger tout à partir d'un fichier
  caption 999, "ManagePagesForPrinterPreview Load all from file: res%="+str$(res%)
  return 

setprinterpreviewfont:
  inactive 0
  show 100
  return
 
close100:
  hide 100
  active 0
  to_foreground 0
  return
 
none:
  mark_off 1061
  mark_off 1062
  mark_off 1063
  mark_off 1064
  return
 
validatefont:
  FontName$ = "Arial"
  if item_index(102)>0 then FontName$ = item_index$(102)
  FontSize% = 12
  if item_index(102)>0 then FontSize% = val(item_index$(105))
  FontAttributes$ = ""
  if checked(1061)=1 then FontAttributes$ = FontAttributes$ + "B,"
  if checked(1062)=1 then FontAttributes$ = FontAttributes$ + "I,"
  if checked(1063)=1 then FontAttributes$ = FontAttributes$ + "U,"
  if checked(1064)=1 then FontAttributes$ = FontAttributes$ + "S,"
  FontColor% = (position(1093)*256+position(1092))*256+position(1091)
  BackColor% = -1                    : ' fond transparent
  if checked(107)=0 then BackColor% = (position(1083)*256+position(1082))*256+position(1081)
  res% = dll_call6("SetPrinterPreviewFont",PRV%,adr(FontName$),FontSize%,adr(FontAttributes$),FontColor%,BackColor%)
  hide 100
  active 0
  to_foreground 0
  caption 999, "SetPrinterPreviewFont: res%="+str$(res%)
  return
 
printtext:
  inactive 0
  show 200
  return
 
close200:
  hide 200
  active 0
  to_foreground 0
  return

validateprinttext:
  text_X% = position(202)
  text_Y% = position(204)
  text_text$ = text$(206)
  res% = dll_call5("PrintTextToPrinterPreview",PRV%,text_X%,text_Y%,adr(text_text$),2)
  hide 200
  active 0
  to_foreground 0
  caption 999, "PrintTextToPrinterPreview: res%="+str$(res%)
  return

printshape:
  inactive 0
  show 300
  return
 
validateprintshape:
  shape_X1%              = position(302)
  shape_Y1%              = position(304)
  shape_X2%              = position(306)
  shape_Y2%              = position(308)
  shape_Type%            = item_index(310)       
  shape_RADIUS%          = position(312)
  shape_BorderColor%      = (position(3133)*256+position(3132))*256+position(3131)
  shape_BackgroundColor%  = (position(3143)*256+position(3142))*256+position(3141)
  shape_Transparent%      = checked(316)
  shape_PenWidth%        = position(318)
  if shape_Transparent%=1 then shape_BackgroundColor% = 0-1
 
  res% = dll_call5("SetPrinterPreviewShapeStyle",PRV%,shape_BorderColor%,shape_BackgroundColor%,shape_PenWidth%,shape_RADIUS%)
  if res%<>0 
    hide 300
    active 0
    to_foreground 0
    caption 999, "SetPrinterPreviewShapeStyle: res%="+str$(res%) 
  end_if
 
  res% = dll_call6("PrintShapeToPrinterPreview",PRV%,shape_X1%,shape_Y1%,shape_Type%, shape_X2%, shape_Y2%)
  hide 300
  active 0
  to_foreground 0
  caption 999, "PrintShapeToPrinterPreview: res%="+str$(res%)
  return
 
close300:
  hide 300
  active 0
  to_foreground 0
  return
 
printimage:
  inactive 0
  show 400
  return
 
close400:
  hide 400
  active 0
  to_foreground 0
  return

validateprintimage:
  image_X1%              = position(402)
  image_Y1%              = position(404)
  image_X2%              = position(406)
  image_Y2%              = position(408)
  image_src%              = item_index(410) - 1
  if image_src%=1
    image_file$ = file_name$(998)
    if image_file$="_" then return
    if file_exists(image_file$)=0
      message("PrintImageToPrinterPreview: Image file does not exist"
      return
    end_if
    image_src% = adr(image_file$)
  end_if
  res% = dll_call6("PrintImageToPrinterPreview",PRV%,image_src%,image_X1%,image_Y1%,image_X2%,image_Y2%)
  hide 400
  active 0
  to_foreground 0
  caption 999, "PrintImageToPrinterPreview: res%="+str$(res%)
  return
 

Et voici la photo utilisée dans la démo (n'importe quelle BMP fait l'affaire !):
KGF_dll - nouvelles versions - Page 14 Histog10


Dernière édition par Klaus le Sam 14 Sep 2024 - 16:37, édité 4 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 14 sur 15Aller à la page : Précédent  1 ... 8 ... 13, 14, 15  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» Nouvelles versions
» Synedit_Editor - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - 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: