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 26 Emptypar Pedro Aujourd'hui à 10:37

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

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

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

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

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

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

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

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

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

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

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

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

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

» fichier.exe
KGF_dll - nouvelles versions - Page 26 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 du moment : -28%
-28% Machine à café avec broyeur ...
Voir le deal
229.99 €

 

 KGF_dll - nouvelles versions

Aller en bas 
+13
The Gamer
Nardo26
silverman
Minibug
Pedro
mindstorm
pascal10000
Jicehel
papydall
Jean Claude
JL35
Yannick
Klaus
17 participants
Aller à la page : Précédent  1 ... 14 ... 25, 26, 27 ... 33 ... 40  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 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyLun 6 Avr 2015 - 17:10

Ok, Papydall ! Dans le post suivant avec la nouvelle version, ce sera fait !
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 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyLun 6 Avr 2015 - 17:13

Nouvelle version:
KGF.dll V4.67 du 06/04/2015

Nouveautés:
suite de la gestion Excel/OpenCalc: toutes les fonctions acceptant un numéro de ligne et/ou colonne
travaillent maintenant automatiquement sur la sélection active, si un de ces deux paramètres est passé comme zéro
et des tests de toutes les fonctions avec OpenCalc


Modules modifiés:
KGF.dll

La doc sera à jour prochainement.
Les sources sont à jour.

On peut même importer/exporter séparément, maintenant, les données et les formules !

Doc provisoire de l'existant:
' ouvrir un tableur et se connecter à ce tableur
res% = dll_call2("StartSpreadSheet",quoi%,visible%)
' quoi%: 1=Excel 2=OPenCalc
visible%: 1=visible 0=non visible

' se déconnecter du tableur et le fermer
res% = dll_call1("TerminateSpreadSheet",%kill)
kill%: si OpenCale st si kill%=1, alors le process soffice.bin sera supprimé automatiquement

' tester quel tableur est actif
res% = dll_call0("GetSpreadSheetType")
res%: -1=rien 0=a été lancé, mais n'est plus disponible 1=Excel 2=OpenCalc

' écrire une cellule de la page active du document actif
res% = dll_call4("WriteSpreadSheetCellByIndex",x%,y%,adr(txt$),adr(frm$))
' x%=colonne y%=ligne txt$=données frm$=formule
si le 3ème et/ou le 4ème paramètre est passé comme 0, la modification de cette partie n'aura pas lieu

' exporter un GRID dans la page active directement
res% = dll_call4("ExportGridToSpreadSheet",object_internal(grid%),act%,deltax%,deltay%)
' grid%=numéro du GRID
' act%: 0=en tant que données 1=en tant que formules
' deltax%, deltay% = délacage horizontal/vertical en destination dans la page active

' lire une cellule de la page active du document actif
res% = dll_call4("ReadSpreadSheetCellByIndex",x%,y%,adr(txt$),adr(frm$))
' x%=colonne y%=ligne txt$=données frm$=formule
si le 3ème et/ou le 4ème paramètre est passé comme 0, la partie correspondante n'est pas lue

' importer un GRID de la page active directement
res% = dll_call4("ImportGridFromSpreadSheet",object_internal(grid%),act%,deltax%,deltay%)
' grid%=numéro du GRID
' act%: 0=en tant que données 1=en tant que formules
' deltax%, deltay% = délacage horizontal/vertical en source dans la page active

' ouvrir un document existant
res% = dll_call1("OpenSpreadSheet",adr(f$))
' f$ = chemin et nom vers le fichier existant

' enregistrer un document du tableur
res% = dll_call0("SaveSpreadSheet")
' note: il faut que ce document ait déjà un nom !

' enregistrer un document dans un autre fichier
res% = dll_call1("SaveSpreadSheetAs",adr(f$))
' f$ = chemin et nom vers le nouveau fichier

' fermer un document
res% = dll_call0("CloseSpreadSheet")

' insérer une nouvelle page
res% = dll_call2("NewSpreadSheetPage",adr(nom$),pos%)
' nom$=nom de la page
' pos%=position 0=après la page active 1=après la dernière page

' activer une page par son indice
res% = dll_call1("ActivateSpreadSheetPageByIndex",n%)
' n%=indice (1,2,...)

' activer une page par son nom
res% = dll_call1("ActivateSpreadSheetPageByName",adr(s$))
' s$=nom de la page recherchée

' supprimer une page par son indice
res% = dll_call1("RemoveSpreadSheetPageByIndex",n%)
' n%=indice (1,2,...)

' supprimer une page par son nom
res% = dll_call1("RemoveSpreadSheetPageByName",adr(s$))
' s$=nom de la page à supprimer

' retourner le nombre de pages du document
res% = dll_call0("GetSpreadSheetPageCount")

' retourner l'indice de la page active
res% = dll_call0("GetSpreadSheetActivePageNumber")

' retourner le nom de la page active
res% = dll_call1("GetSpreadSheetActivePageName",adr(nom$))
nom$ recevra le nom de la page active

' ajuster les dimensions d'une ligne et/ou d'une colonne
res% = dll_call4("SetSpreadSheetDimensions",l%,h%,c%,w%)
' si l%>0, la ligne l% sera mise à h% millimètres de hauteur
' si c%>0, la colonne c% sera mise à w% millimètres de largeur

' couleurs de fond et/ou de police d'une cellule
res% = dll_call6("SetSpreadSheetColors",c%,l%,DoBack%,bclr%,DoFont%,fclr%)
' si DoBack%=1 alors la couleur de fond de la cellule sera mise à bclr%
' si DoFont%=1 alors la couleur de police de la cellule sera mise à fclr%

' nom et/ou taille de la police
res% = dll_call4("SetSpreadSheetFont",c%,l%,adr(font$),siz%)
' si siz%=0 la taille ne sera pas changée
' si adr(font$) est passée comme 0, la police ne sera pas changée

' atributs graphiques des caractères
res% = dll_call6("SetSpreadSheetAtributes",c%,l%,gras%,italique%,souligne%,barre%)
' les attributs sont passée en 0 ou 1

' bordures autour des cellules
res% = dll_call5("SetSpreadSheetBorders",c%,l%,typ%,style%,clr%)
' typ%: type de bordure: 0=aucune 1=toutes 2=bas 3=haut 4=gauche 5=droite 6=oblique en bas 7=oblique en haut
' style%: style de ligne: 0=Aucun 1=Trait 2=Tirets 3=Points 4=Tiret point
' 5=Tiret point point 6=Moyen tiret slash point 7=Trait 8=Tirets 9=Double

' sélectionner un rectangle
res% = dll_call4("SelectSpreadSheetRange",x1%,y1%,x2%,y2%)
' (x1%,y1%)=coint en haut à gauche (x2%,y2%)=coin en bas à droite

' récupérer le rectangle de la sélection actuelle
res% = dll_call4("GetSelectedSpreadSheetRange",adr(x1%),adr(y1%),adr(x2%),adr(y2%))
' (x1%,y1%)=coint en haut à gauche (x2%,y2%)=coin en bas à droite

' appliquer une bordure à la sélection actuelle
res% = dll_call3("SetSpreadSheetSelectionBorders",bord%,style%,clr%)
' bord%: somme des valeurs suivantes:
' 1 =haut 2=gauche 4=droite 8=bas 16=diagonal haut 32=diagonal bas 64=intérieur horizontal 128= intérieur vertical

Et voici le programme de démo avec toutes les fonctions:
(note: pour importer/exporter, un décalage de 3 colonnes est explicitement codé dans la démo !)
Les menus ont été réorganisés pour refléter la structure: Fichier(Document) - Pages - Options.
Toutes les fonctions ont été testées avec Excel et OpenCalc !
Pour tester les couleurs: les lignes "couleur" du menu Edition changent ces couleurs de façon aléatoire.
Pour tester les bordures: connecter sur Excel ou OpenCalc, cocher les cases des bordures souhaitées,
choisir une ligne et colonne hors colonnes 9 à 12, puis utiliser le menu Edition\Bordures.
Ou pour un rectangle: dans le menu Edition, choisissez Selection, cofigurez la bordure avec les champs à droite, puis utilisez menu Edition`\Bordure de sélection.
Code:
' GRID_et_EXCEL.bas


label connect, exit, editmode, export, import, disconnect
label open, save, saveas, close
label new_sheet, act_by_ind, act_by_name, del_by_ind, del_by_name
label col_width, line_height, back_color, pol_color, pol_size, pol_name
label pol_att, borders, sel_range, sel_borders
label test_what, page_count, ind_actif, name_act

dim nlin% : nlin% = 11
dim ncol% : ncol% = 8

dim res%, no%, no1%, no2%, editmode%

width 0,750

no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Fichiers"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Connecter" : on_click no%,connect
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Déconnecter" : on_click no%,disconnect
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Sortir" : on_click no%,exit
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Document"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Ouvrir..." : on_click no%,open
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Enregistrer" : on_click no%,save
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Enregistrer sous..." : on_click no%,saveas
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Fermer" : on_click no%,close
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Exporter" : on_click no%,export
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Importer" : on_click no%,import
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Pages"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nouveau" : on_click no%,new_sheet
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Activer par indice" : on_click no%,act_by_ind
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Activer par nom" : on_click no%,act_by_name
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Supprimer par indice" : on_click no%,del_by_ind
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Supprimer par nom" : on_click no%,del_by_name
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Edition"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Largeur de colonne" : on_click no%,col_width
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Hauteur de ligne" : on_click no%,line_height
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Couleur de fond" : on_click no%,back_color
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Couleur de police" : on_click no%,pol_color
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Taille de police" : on_click no%,pol_size
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nom de police" : on_click no%,pol_name
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Attributs de police" : on_click no%,pol_att
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Bordures" : on_click no%,borders
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Sélection" : on_click no%,sel_range
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Bordures de sélection" : on_click no%,sel_borders
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Options"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Mode Edition" : on_click no%,editmode
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Test tableur" : on_click no%,test_what
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nombre de pages" : on_click no%,page_count
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Indice page active" : on_click no%,ind_actif
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nom page active" : on_click no%,name_act

grid 100 : top 100,10 : left 100,10 : width 100,525 : height 100,280
grid_column 100,ncol% : grid_row 100,nlin%

option 111 : top 111,320 : left 111,50 : caption 111,"Détection automatique" : width 111,130
option 112 : top 112,340 : left 112,50 : caption 112,"Excel"
option 113 : top 113,360 : left 113,50 : caption 113,"OpenCalc"

alpha 121 : top 121,320 : left 121,200 : caption 121,"Colonne:"
edit 122 : top 122,320 : left 122,250 : width 122,40
alpha 123 : top 123,320 : left 123,310 : caption 123,"Largeur:"
edit 124 : top 124,320 : left 124,360 : width 124,40

alpha 131 : top 131,350 : left 131,200 : caption 131,"Ligne:"
edit 132 : top 132,350 : left 132,250 : width 132,40
alpha 133 : top 133,350 : left 133,310 : caption 133,"Hauteur:"
edit 134 : top 134,350 : left 134,360 : width 134,40

alpha 141 : top 141,320 : left 141,420 : caption 141,"Police:"
combo 142 : top 142,320 : left 142,470 : width 142,40
  item_add 142,8
  item_add 142,10
  item_add 142,12
  item_add 142,14
  item_add 142,16
  text 142,10
 
combo 143 : top 143,350 : left 143,470 : width 143,130
  font_names_load 143
  text 143,"Arial"

check 151 : top 151,380 : left 151,470 : width 151,40 : caption 151,"B" : font_bold 151
check 152 : top 152,380 : left 152,510 : width 152,40 : caption 152,"It" : font_italic 152
check 153 : top 153,380 : left 153,550 : width 153,40 : caption 153,"U" : font_underline 153
check 154 : top 154,380 : left 154,590 : width 154,40 : caption 154,"S" : font_strike 154

alpha 161 : top 161,10 : left 161,550 : caption 161,"Bords:"
check 162 : top 162,30 : left 162,590 : caption 162,"Haut"
check 163 : top 163,60 : left 163,550 : caption 163,"Gauche"
check 164 : top 164,60 : left 164,630 : caption 164,"Droite"
check 165 : top 165,90 : left 165,590 : caption 165,"Bas"
check 166 : top 166,120 : left 166,550 : caption 166,"Diag \"
check 167 : top 167,120 : left 167,630 : caption 167,"Diag /"
check 168 : top 168,150 : left 168,550 : caption 168,"Intérieur -"
check 169 : top 169,150 : left 169,630 : caption 169,"Intérieur |"
combo 170 : top 170,180 : left 170,550
  item_add 170,"0 = Aucun"
  item_add 170,"1 = Trait"
  item_add 170,"2 = Tirets"
  item_add 170,"3 = Points"
  item_add 170,"4 = Tiret point"
  item_add 170,"5 = Tiret point point"
  item_add 170,"6 = Moyen tiret slash point"
  item_add 170,"7 = Trait"
  item_add 170,"8 = Tirets"
  item_add 170,"9 = Double"
  text 170,item_read$(170,1)

open_dialog 101
save_dialog 102

dll_on "KGF.dll"

mark_on 111


end

exit:
  ' terminate
  res% = dll_call1("KillProcessByHandle",handle(0))
 
test_what:
  Test_What()
  return

connect:
  ConnectToExcel()
  return
 
disconnect:
  DisconnectFromExcel()
  return

open:
  open()
  return

saveas:
  SaveAs()
  return
 
save:
  Save()
  return
 
close:
  Close()
  return
 
new_sheet:
  NewSheet()
  return

act_by_ind:
  ActivateIndex()
  return
 
act_by_name:
  ActivateName()
  return

del_by_ind:
  RemoveIndex()
  return

del_by_name:
  RemoveName()
  return

page_count:
  GetPageCount()
  return

ind_actif:
  GetActiveIndex()
  return

name_act:
  GetActiveName()
  return
 
col_width:
  SetColWidth()
  return
 
line_height:
  SetLineHeight()
  return
 
back_color:
  BackColor()
  return
 
pol_color:
  FontColor()
  return

pol_size:
  FontSize()
  return

pol_name:
  FontName()
  return

pol_att:
  FontAttributes()
  return

borders:
  Borders()
  return

sel_range:
  SelectRange()
  return
 
sel_borders:
  SelectionBorders()
  return

editmode:
  editmode% = 1 - editmode%
  if editmode%=0
    res% = DLL_call6("GridFunction",object_internal(100),1,0,0,0,0)
    mark_off number_click
  else
    res% = DLL_call6("GridFunction",object_internal(100),1,1,0,0,0)
    mark_on number_click
  end_if
  return
 
export:
  ExportGridToExcel()
  return
 
import:
  ImportGridFromExcel()
  return
 
 

sub ConnectToExcel()
  dim_local res%
  if checked(111)=1
    res% = dll_call2("StartSpreadSheet",1,1)        : ' essayer Excel
    if res%<0
      res% = dll_call2("StartSpreadSheet",2,1)      : ' essayer OpenCalc
      if res%<0 then message "Aucun tableur n'est trouvé"
    end_if
  end_if
  if checked(112)=1
    res% = dll_call2("StartSpreadSheet",1,1)        : ' essayer Excel
    if res%<0 then message "Excel n'est pas trouvé"
  end_if
  if checked(113)=1
    res% = dll_call2("StartSpreadSheet",2,1)      : ' essayer OpenCalc
    if res%<0 then message "OpenCalc n'est pas trouvé"
  end_if
end_sub

sub DisconnectFromExcel()
  dim_local res%
  res% = dll_call1("TerminateSpreadSheet",1)
end_sub

sub ExportGridToExcel()
  dim_local res%, x%, y%, s$
  res% = dll_call0("GetSpreadSheetType")
  if res%<1 then exit_sub
 
  ' 1ère alternative: export par fonction directe
  ' décalage de 3 cellules vers la droite et de 2 lignes vers le bas
'  res% = dll_call4("ExportGridToSpreadSheet",object_internal(100),0,3,2)
  ' sans décalage:
  res% = dll_call4("ExportGridToSpreadSheet",object_internal(100),0,0,0)
  exit_sub

  ' 2ème alternative: export par boucle
  for y%=1 to nlin%
    for x%=1 to ncol%
      s$ = grid_read$(100,y%,x%)
      res% = dll_call4("WriteSpreadSheetCellByIndex",x%,y%,adr(s$),0)
    next x%
  next y%
 
end_sub

sub ImportGridFromExcel()
  dim_local res%, x%, y%, s$
  res% = dll_call0("GetSpreadSheetType")
  if res%<1 then exit_sub
  res% = dll_call4("ImportGridFromSpreadSheet",object_internal(100),0,3,2)
end_sub

sub Test_What()
  dim_local res%
  res% = dll_call0("GetSpreadSheetType")
  select res%
    case -1: message "aucun tableur n'est lancé"
    case  0: message "un tableur a été lancé, mais il n'est plus disponible"
    case  1: message "Excel est en cours..."
    case  2: message "OpenCalc est en cours..."
  end_select
end_sub

sub open()
  dim_local res%, f$
  filter 101,"Fichiers Excel|*.xls"
  f$ = file_name$(101)
  if f$="_" then exit_sub
  if lower$(right$(f$,4))<>".xls" then f$ = f$ + ".xls"
  res% = dll_call1("OpenSpreadSheet",adr(f$))
end_sub

sub SaveAs()
  dim_local res%, f$
  filter 102,"Fichiers Excel|*.xls"
  f$ = file_name$(102)
  if f$="_" then exit_sub
  if lower$(right$(f$,4))<>".xls" then f$ = f$ + ".xls"
  res% = dll_call1("SaveSpreadSheetAs",adr(f$))
end_sub

sub Save()
  dim_local res%
  res% = dll_call0("SaveSpreadSheet")
end_sub

sub Close()
  dim_local res%
  res% = dll_call0("CloseSpreadSheet")
end_sub

sub NewSheet()
  dim_local res%, nom$
  nom$ = message_input$("Nouvelle page","Nom de la page:","")
  if nom$="" then exit_sub
  res% = dll_call2("NewSpreadSheetPage",adr(nom$),1)
end_sub

sub  ActivateIndex()
  dim_local res%, n%, s$
  s$ = message_input$("Activer une page","Numéro de la page:","")
  if s$="" then exit_sub
  if numeric(s$)=0 then exit_sub
  n% = val(s$)
  res% = dll_call1("ActivateSpreadSheetPageByIndex",n%)
end_sub

sub  ActivateName()
  dim_local res%, n%, s$
  s$ = message_input$("Activer une page","Nom de la page:","")
  if s$="" then exit_sub
  res% = dll_call1("ActivateSpreadSheetPageByName",adr(s$))
end_sub

sub  RemoveIndex()
  dim_local res%, n%, s$
  s$ = message_input$("Supprimer une page","Numéro de la page:","")
  if s$="" then exit_sub
  if numeric(s$)=0 then exit_sub
  n% = val(s$)
  res% = dll_call1("RemoveSpreadSheetPageByIndex",n%)
end_sub

sub  RemoveName()
  dim_local res%, n%, s$
  s$ = message_input$("Supprimer une page","Nom de la page:","")
  if s$="" then exit_sub
  res% = dll_call1("RemoveSpreadSheetPageByName",adr(s$))
end_sub

sub  GetPageCount()
  dim_local res%
  res% = dll_call0("GetSpreadSheetPageCount")
  message "Le document a "+str$(res%)+" pages"
end_sub

sub  GetActiveIndex()
  dim_local res%
  res% = dll_call0("GetSpreadSheetActivePageNumber")
  message "La page active est la page numéro "+str$(res%)
end_sub

sub  GetActiveName()
  dim_local res%, nom$
  nom$ = string$(255," ")
  res% = dll_call1("GetSpreadSheetActivePageName",adr(nom$))
  message "La page actuelle s'appelle ["+trim$(nom$)+"]"
end_sub

sub SetColWidth()
  dim_local res%, s$, c%, w%
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  s$ = trim$(text$(124))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  w% = val(s$)*100
  res% = dll_call4("SetSpreadSheetDimensions",0-1,0-1,c%,w%)
end_sub

sub SetLineHeight()
  dim_local res%, s$, l%, h%
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(134))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  h% = val(s$)*100
  res% = dll_call4("SetSpreadSheetDimensions",l%,h%,0-1,0-1)
end_sub

sub BackColor()
  dim_local res%, l%, c%, clr%, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)
  res% = dll_call6("SetSpreadSheetColors",c%,l%,1,clr%,0,0)
end_sub

sub FontColor()
  dim_local res%, l%, c%, clr%, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)
  res% = dll_call6("SetSpreadSheetColors",c%,l%,0,0,1,clr%)
end_sub

sub FontSize()
  dim_local res%, l%, c%, siz%, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  siz% = val(text$(142))
  res% = dll_call4("SetSpreadSheetFont",c%,l%,0,siz%)
end_sub

sub FontName()
  dim_local res%, l%, c%, nam$, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  nam$ = text$(143)
  res% = dll_call4("SetSpreadSheetFont",c%,l%,adr(nam$),0)
end_sub

sub FontAttributes()
  dim_local res%, l%, c%, nam$, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  nam$ = text$(143)
  res% = dll_call6("SetSpreadSheetAtributes",c%,l%,checked(151),checked(152),checked(153),checked(154))
end_sub

sub Borders()
  dim_local res%, l%, c%, nam$, s$, style%, clr%, i%
  s$ = trim$(text$(132))
  if len(s$)=0 then exit_sub
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then exit_sub
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  style% = item_index(170)
  if style%=0 then style% = 1
  style% = style% - 1
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)

  ' pour documenter les possibilités
  for i%=1 to count(170)
    res% = dll_call5("SetSpreadSheetBorders",9,i%*2-1,1,i%-1,clr%)
    s$ = item_read$(170,i%)
    res% = dll_call4("WriteSpreadSheetCellByIndex",10,i%*2-1,adr(s$),0)
  next i%

  ' bords individuels de la cellule choisie
  if checked(162)=1    : ' haut
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,3,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,3,0,0)
  end_if
  if checked(163)=1    : ' gauche
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,4,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,4,0,0)
  end_if
  if checked(164)=1    : ' droite
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,5,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,5,0,0)
  end_if
  if checked(165)=1    : ' bas
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,2,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,2,0,0)
  end_if
  if checked(166)=1    : ' diagonal haut
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,6,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,6,0,0)
  end_if
  if checked(167)=1    : ' diagonal bas
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,7,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,7,0,0)
  end_if
  s$ = "Style "+str$(style%)
  res% = dll_call4("WriteSpreadSheetCellByIndex",c%,l%,adr(s$),0)
end_sub
 
sub SelectRange()
  dim_local res%, x1%, y1%, x2%, y2%
  res% = dll_call4("SelectSpreadSheetRange",4,5,7,12)
  res% = dll_call4("GetSelectedSpreadSheetRange",adr(x1%),adr(y1%),adr(x2%),adr(y2%))
  message "Sélection: ("+str$(x1%)+","+str$(y1%)+") -> ("+str$(x2%)+","+str$(y2%)+")"
end_sub

sub SelectionBorders()
  dim_local res%, style%, clr%, bord%
  style% = item_index(170)
  if style%=0 then style% = 1
  style% = style% - 1
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)
  res% = dll_call4("SelectSpreadSheetRange",4,5,7,12)

  bord% = 0
  if checked(162)=1 then bord% = bord% +  1    : ' haut
  if checked(163)=1 then bord% = bord% +  2    : ' gauche
  if checked(164)=1 then bord% = bord% +  4    : ' droite
  if checked(165)=1 then bord% = bord% +  8    : ' bas
  if checked(166)=1 then bord% = bord% +  16    : ' diagonal haut
  if checked(167)=1 then bord% = bord% +  32    : ' diagonal bas
  if checked(168)=1 then bord% = bord% +  64    : ' intérieur horizontal
  if checked(169)=1 then bord% = bord% + 128    : ' intérieur vertical

  res% = dll_call3("SetSpreadSheetSelectionBorders",bord%,style%,clr%)

end_sub
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyMar 7 Avr 2015 - 7:39

Bonjour Klaus,

Je tente d'utiliser les fonction GRID mais j'ai plusieurs questions sans réponse...

Tout d'abord, est il possible d'utiliser tes fonctions sur plusieurs GRID simultanément a l'écran ?
Pour l'instant lorsque le colore le GRID 2 , le GRID 1 redevient 'normal', etc...

De plus pourrais tu m'expliquer a quoi sert le ligne :
res%=dll_call6("GridFunction",object_internal(1),8,1,0,0,0)

Je le met a chaque tableau mais je ne voit pas bien comment cela fonctionne.

C'est vrai que la doc de KGF devient vraiment compliquée a utiliser.
Parfois même j'abandonne car je ne trouve pas les infos dans toutes cette masse de données.
Le bon fichier d'aide, la bonne fonction... c'est dommage !!!!

Peut être pourrais tu simplifier le nombre de fichiers sur KGF...
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Yannick




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

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 26 EmptyMar 7 Avr 2015 - 8:30

Là, je vais pouvoir te répondre pour Klaus

Object_Internal(N) renvoi le numéro d' objet interne de l' objet N
Si tu places cet appel pour tout tes tableaux, sans changer le numéro d' objet
qui doit correspondre au tableau, il est normal que tu es des soucis....
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyMar 7 Avr 2015 - 10:06

Bonjour ygeronimi,

Oui bien sur mais ce n'est pas le cas !!

je fais différents test mais je ne m'en sort pas.
peut que ce n'est pas possible...


Attendons la réponse du Chef !!
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyMar 7 Avr 2015 - 11:09

@Minibug:
1. les fonctions StringGrid sont conçues pour fonctionner avec un nombre libre d'objets GRID
2. le GRID visé par chaque fonction est désigné par le paramètre object_internal(n), avec n étant le numéro de l'objet Panoramic
3. la fonction res%=dll_call6("GridFunction",object_internal(1),8,1,0,0,0) active l'utilisation des couleurs personnalisées des lignes, colonnes et/ou cellules du GRID visé, mais en effaçant tous les paramétrages de couleur pour ce GRID. Si tu mets 5 à la place du 8, l'effet est le même, mais sans effacer les paramétrages. Ceci permet de configurer les couleurs, progressivement, et à un moment de tout effacer et recommencer...
4. les couleurs sont paramétrées par GridFunction codes 2, 3, 4, 5 ou 7.

Essaie le programme de démo que j'ai fourni avec ces fonctions, et adapte-le progressivement.
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 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyMar 7 Avr 2015 - 11:15

Nouvelle version:
KGF.dll V4.68 du 07/04/2015

Nouveautés:
suite de la gestion Excel/OpenCalc: gestion du copier/couper/coller
et des tests de toutes les fonctions avec OpenCalc


Modules modifiés:
KGF.dll

La doc sera à jour prochainement.
Les sources sont à jour.

On peut même importer/exporter séparément, maintenant, les données et les formules !

Doc provisoire de l'existant:
' ouvrir un tableur et se connecter à ce tableur
res% = dll_call2("StartSpreadSheet",quoi%,visible%)
' quoi%: 1=Excel 2=OPenCalc
visible%: 1=visible 0=non visible

' se déconnecter du tableur et le fermer
res% = dll_call1("TerminateSpreadSheet",%kill)
kill%: si OpenCale st si kill%=1, alors le process soffice.bin sera supprimé automatiquement

' tester quel tableur est actif
res% = dll_call0("GetSpreadSheetType")
res%: -1=rien 0=a été lancé, mais n'est plus disponible 1=Excel 2=OpenCalc

' écrire une cellule de la page active du document actif
res% = dll_call4("WriteSpreadSheetCellByIndex",x%,y%,adr(txt$),adr(frm$))
' x%=colonne y%=ligne txt$=données frm$=formule
si le 3ème et/ou le 4ème paramètre est passé comme 0, la modification de cette partie n'aura pas lieu

' exporter un GRID dans la page active directement
res% = dll_call4("ExportGridToSpreadSheet",object_internal(grid%),act%,deltax%,deltay%)
' grid%=numéro du GRID
' act%: 0=en tant que données 1=en tant que formules
' deltax%, deltay% = délacage horizontal/vertical en destination dans la page active

' lire une cellule de la page active du document actif
res% = dll_call4("ReadSpreadSheetCellByIndex",x%,y%,adr(txt$),adr(frm$))
' x%=colonne y%=ligne txt$=données frm$=formule
si le 3ème et/ou le 4ème paramètre est passé comme 0, la partie correspondante n'est pas lue

' importer un GRID de la page active directement
res% = dll_call4("ImportGridFromSpreadSheet",object_internal(grid%),act%,deltax%,deltay%)
' grid%=numéro du GRID
' act%: 0=en tant que données 1=en tant que formules
' deltax%, deltay% = délacage horizontal/vertical en source dans la page active

' ouvrir un document existant
res% = dll_call1("OpenSpreadSheet",adr(f$))
' f$ = chemin et nom vers le fichier existant

' enregistrer un document du tableur
res% = dll_call0("SaveSpreadSheet")
' note: il faut que ce document ait déjà un nom !

' enregistrer un document dans un autre fichier
res% = dll_call1("SaveSpreadSheetAs",adr(f$))
' f$ = chemin et nom vers le nouveau fichier

' fermer un document
res% = dll_call0("CloseSpreadSheet")

' insérer une nouvelle page
res% = dll_call2("NewSpreadSheetPage",adr(nom$),pos%)
' nom$=nom de la page
' pos%=position 0=après la page active 1=après la dernière page

' activer une page par son indice
res% = dll_call1("ActivateSpreadSheetPageByIndex",n%)
' n%=indice (1,2,...)

' activer une page par son nom
res% = dll_call1("ActivateSpreadSheetPageByName",adr(s$))
' s$=nom de la page recherchée

' supprimer une page par son indice
res% = dll_call1("RemoveSpreadSheetPageByIndex",n%)
' n%=indice (1,2,...)

' supprimer une page par son nom
res% = dll_call1("RemoveSpreadSheetPageByName",adr(s$))
' s$=nom de la page à supprimer

' retourner le nombre de pages du document
res% = dll_call0("GetSpreadSheetPageCount")

' retourner l'indice de la page active
res% = dll_call0("GetSpreadSheetActivePageNumber")

' retourner le nom de la page active
res% = dll_call1("GetSpreadSheetActivePageName",adr(nom$))
nom$ recevra le nom de la page active

' ajuster les dimensions d'une ligne et/ou d'une colonne
res% = dll_call4("SetSpreadSheetDimensions",l%,h%,c%,w%)
' si l%>0, la ligne l% sera mise à h% millimètres de hauteur
' si c%>0, la colonne c% sera mise à w% millimètres de largeur

' couleurs de fond et/ou de police d'une cellule
res% = dll_call6("SetSpreadSheetColors",c%,l%,DoBack%,bclr%,DoFont%,fclr%)
' si DoBack%=1 alors la couleur de fond de la cellule sera mise à bclr%
' si DoFont%=1 alors la couleur de police de la cellule sera mise à fclr%

' nom et/ou taille de la police
res% = dll_call4("SetSpreadSheetFont",c%,l%,adr(font$),siz%)
' si siz%=0 la taille ne sera pas changée
' si adr(font$) est passée comme 0, la police ne sera pas changée

' atributs graphiques des caractères
res% = dll_call6("SetSpreadSheetAtributes",c%,l%,gras%,italique%,souligne%,barre%)
' les attributs sont passée en 0 ou 1

' bordures autour des cellules
res% = dll_call5("SetSpreadSheetBorders",c%,l%,typ%,style%,clr%)
' typ%: type de bordure: 0=aucune 1=toutes 2=bas 3=haut 4=gauche 5=droite 6=oblique en bas 7=oblique en haut
' style%: style de ligne: 0=Aucun 1=Trait 2=Tirets 3=Points 4=Tiret point
' 5=Tiret point point 6=Moyen tiret slash point 7=Trait 8=Tirets 9=Double

' sélectionner un rectangle
res% = dll_call4("SelectSpreadSheetRange",x1%,y1%,x2%,y2%)
' (x1%,y1%)=coint en haut à gauche (x2%,y2%)=coin en bas à droite

' récupérer le rectangle de la sélection actuelle
res% = dll_call4("GetSelectedSpreadSheetRange",adr(x1%),adr(y1%),adr(x2%),adr(y2%))
' (x1%,y1%)=coint en haut à gauche (x2%,y2%)=coin en bas à droite

' appliquer une bordure à la sélection actuelle
res% = dll_call3("SetSpreadSheetSelectionBorders",bord%,style%,clr%)
' bord%: somme des valeurs suivantes:
' 1 =haut 2=gauche 4=droite 8=bas 16=diagonal haut 32=diagonal bas 64=intérieur horizontal 128= intérieur vertical

' copier la sélection actuelle
res% = dll_call0("CopySpreadSheetSelection")

' couper la sélection actuelle
res% = dll_call0("CutSpreadSheetSelection")

' coller les éléments copiers/coupés à un endroit donné de la feuille active
res% = dll_call2("PasteToSpreadSheet",x%,y%)
' (x%,y%) = endroit à partir duquel le collage aura lieu

Et voici le programme de démo avec toutes les fonctions:
(note: pour importer/exporter, un décalage de 3 colonnes est explicitement codé dans la démo !)
Les menus ont été réorganisés pour refléter la structure: Fichier(Document) - Pages - Options.
Toutes les fonctions ont été testées avec Excel et OpenCalc !
Pour tester les couleurs: les lignes "couleur" du menu Edition changent ces couleurs de façon aléatoire.
Pour tester les bordures: connecter sur Excel ou OpenCalc, cocher les cases des bordures souhaitées,
choisir une ligne et colonne hors colonnes 9 à 12, puis utiliser le menu Edition\Bordures.
Ou pour un rectangle: dans le menu Edition, choisissez Selection, cofigurez la bordure avec les champs à droite, puis utilisez menu Edition`\Bordure de sélection.
Code:
' GRID_et_EXCEL.bas


label connect, exit, editmode, export, import, disconnect
label open, save, saveas, close
label new_sheet, act_by_ind, act_by_name, del_by_ind, del_by_name
label col_width, line_height, back_color, pol_color, pol_size, pol_name
label pol_att, borders, sel_range, sel_borders, copy_select, cut_select, paste
label test_what, page_count, ind_actif, name_act

dim nlin% : nlin% = 11
dim ncol% : ncol% = 8

dim res%, no%, no1%, no2%, editmode%

width 0,750

no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Fichiers"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Connecter" : on_click no%,connect
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Déconnecter" : on_click no%,disconnect
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Sortir" : on_click no%,exit
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Document"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Ouvrir..." : on_click no%,open
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Enregistrer" : on_click no%,save
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Enregistrer sous..." : on_click no%,saveas
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Fermer" : on_click no%,close
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Exporter" : on_click no%,export
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Importer" : on_click no%,import
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Pages"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nouveau" : on_click no%,new_sheet
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Activer par indice" : on_click no%,act_by_ind
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Activer par nom" : on_click no%,act_by_name
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Supprimer par indice" : on_click no%,del_by_ind
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Supprimer par nom" : on_click no%,del_by_name
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Edition"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Largeur de colonne" : on_click no%,col_width
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Hauteur de ligne" : on_click no%,line_height
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Couleur de fond" : on_click no%,back_color
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Couleur de police" : on_click no%,pol_color
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Taille de police" : on_click no%,pol_size
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nom de police" : on_click no%,pol_name
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Attributs de police" : on_click no%,pol_att
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Bordures" : on_click no%,borders
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Sélection" : on_click no%,sel_range
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Bordures de sélection" : on_click no%,sel_borders
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Copier la sélection" : on_click no%,copy_select
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Couper la sélection" : on_click no%,cut_select
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Coller" : on_click no%,paste
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Options"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Mode Edition" : on_click no%,editmode
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Test tableur" : on_click no%,test_what
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nombre de pages" : on_click no%,page_count
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Indice page active" : on_click no%,ind_actif
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nom page active" : on_click no%,name_act

grid 100 : top 100,10 : left 100,10 : width 100,525 : height 100,280
grid_column 100,ncol% : grid_row 100,nlin%

option 111 : top 111,320 : left 111,50 : caption 111,"Détection automatique" : width 111,130
option 112 : top 112,340 : left 112,50 : caption 112,"Excel"
option 113 : top 113,360 : left 113,50 : caption 113,"OpenCalc"

alpha 121 : top 121,320 : left 121,200 : caption 121,"Colonne:"
edit 122 : top 122,320 : left 122,250 : width 122,40
alpha 123 : top 123,320 : left 123,310 : caption 123,"Largeur:"
edit 124 : top 124,320 : left 124,360 : width 124,40

alpha 131 : top 131,350 : left 131,200 : caption 131,"Ligne:"
edit 132 : top 132,350 : left 132,250 : width 132,40
alpha 133 : top 133,350 : left 133,310 : caption 133,"Hauteur:"
edit 134 : top 134,350 : left 134,360 : width 134,40

alpha 141 : top 141,320 : left 141,420 : caption 141,"Police:"
combo 142 : top 142,320 : left 142,470 : width 142,40
  item_add 142,8
  item_add 142,10
  item_add 142,12
  item_add 142,14
  item_add 142,16
  text 142,10
 
combo 143 : top 143,350 : left 143,470 : width 143,130
  font_names_load 143
  text 143,"Arial"

check 151 : top 151,380 : left 151,470 : width 151,40 : caption 151,"B" : font_bold 151
check 152 : top 152,380 : left 152,510 : width 152,40 : caption 152,"It" : font_italic 152
check 153 : top 153,380 : left 153,550 : width 153,40 : caption 153,"U" : font_underline 153
check 154 : top 154,380 : left 154,590 : width 154,40 : caption 154,"S" : font_strike 154

alpha 161 : top 161,10 : left 161,550 : caption 161,"Bords:"
check 162 : top 162,30 : left 162,590 : caption 162,"Haut"
check 163 : top 163,60 : left 163,550 : caption 163,"Gauche"
check 164 : top 164,60 : left 164,630 : caption 164,"Droite"
check 165 : top 165,90 : left 165,590 : caption 165,"Bas"
check 166 : top 166,120 : left 166,550 : caption 166,"Diag \"
check 167 : top 167,120 : left 167,630 : caption 167,"Diag /"
check 168 : top 168,150 : left 168,550 : caption 168,"Intérieur -"
check 169 : top 169,150 : left 169,630 : caption 169,"Intérieur |"
combo 170 : top 170,180 : left 170,550
  item_add 170,"0 = Aucun"
  item_add 170,"1 = Trait"
  item_add 170,"2 = Tirets"
  item_add 170,"3 = Points"
  item_add 170,"4 = Tiret point"
  item_add 170,"5 = Tiret point point"
  item_add 170,"6 = Moyen tiret slash point"
  item_add 170,"7 = Trait"
  item_add 170,"8 = Tirets"
  item_add 170,"9 = Double"
  text 170,item_read$(170,1)

open_dialog 101
save_dialog 102

dll_on "KGF.dll"

mark_on 111


end

exit:
  ' terminate
  res% = dll_call1("KillProcessByHandle",handle(0))
 
test_what:
  Test_What()
  return

connect:
  ConnectToExcel()
  return
 
disconnect:
  DisconnectFromExcel()
  return

open:
  open()
  return

saveas:
  SaveAs()
  return
 
save:
  Save()
  return
 
close:
  Close()
  return
 
new_sheet:
  NewSheet()
  return

act_by_ind:
  ActivateIndex()
  return
 
act_by_name:
  ActivateName()
  return

del_by_ind:
  RemoveIndex()
  return

del_by_name:
  RemoveName()
  return

page_count:
  GetPageCount()
  return

ind_actif:
  GetActiveIndex()
  return

name_act:
  GetActiveName()
  return
 
col_width:
  SetColWidth()
  return
 
line_height:
  SetLineHeight()
  return
 
back_color:
  BackColor()
  return
 
pol_color:
  FontColor()
  return

pol_size:
  FontSize()
  return

pol_name:
  FontName()
  return

pol_att:
  FontAttributes()
  return

borders:
  Borders()
  return

sel_range:
  SelectRange()
  return
 
sel_borders:
  SelectionBorders()
  return
 
copy_select:
  CopySelection()
  return
 
cut_select:
  CutSelection()
  return

paste:
  Paste()
  return

editmode:
  editmode% = 1 - editmode%
  if editmode%=0
    res% = DLL_call6("GridFunction",object_internal(100),1,0,0,0,0)
    mark_off number_click
  else
    res% = DLL_call6("GridFunction",object_internal(100),1,1,0,0,0)
    mark_on number_click
  end_if
  return
 
export:
  ExportGridToExcel()
  return
 
import:
  ImportGridFromExcel()
  return
 
 

sub ConnectToExcel()
  dim_local res%
  if checked(111)=1
    res% = dll_call2("StartSpreadSheet",1,1)        : ' essayer Excel
    if res%<0
      res% = dll_call2("StartSpreadSheet",2,1)      : ' essayer OpenCalc
      if res%<0 then message "Aucun tableur n'est trouvé"
    end_if
  end_if
  if checked(112)=1
    res% = dll_call2("StartSpreadSheet",1,1)        : ' essayer Excel
    if res%<0 then message "Excel n'est pas trouvé"
  end_if
  if checked(113)=1
    res% = dll_call2("StartSpreadSheet",2,1)      : ' essayer OpenCalc
    if res%<0 then message "OpenCalc n'est pas trouvé"
  end_if
end_sub

sub DisconnectFromExcel()
  dim_local res%
  res% = dll_call1("TerminateSpreadSheet",1)
end_sub

sub ExportGridToExcel()
  dim_local res%, x%, y%, s$
  res% = dll_call0("GetSpreadSheetType")
  if res%<1 then exit_sub
 
  ' 1ère alternative: export par fonction directe
  ' décalage de 3 cellules vers la droite et de 2 lignes vers le bas
'  res% = dll_call4("ExportGridToSpreadSheet",object_internal(100),0,3,2)
  ' sans décalage:
  res% = dll_call4("ExportGridToSpreadSheet",object_internal(100),0,0,0)
  exit_sub

  ' 2ème alternative: export par boucle
  for y%=1 to nlin%
    for x%=1 to ncol%
      s$ = grid_read$(100,y%,x%)
      res% = dll_call4("WriteSpreadSheetCellByIndex",x%,y%,adr(s$),0)
    next x%
  next y%
 
end_sub

sub ImportGridFromExcel()
  dim_local res%, x%, y%, s$
  res% = dll_call0("GetSpreadSheetType")
  if res%<1 then exit_sub
  res% = dll_call4("ImportGridFromSpreadSheet",object_internal(100),0,3,2)
end_sub

sub Test_What()
  dim_local res%
  res% = dll_call0("GetSpreadSheetType")
  select res%
    case -1: message "aucun tableur n'est lancé"
    case  0: message "un tableur a été lancé, mais il n'est plus disponible"
    case  1: message "Excel est en cours..."
    case  2: message "OpenCalc est en cours..."
  end_select
end_sub

sub open()
  dim_local res%, f$
  filter 101,"Fichiers Excel|*.xls"
  f$ = file_name$(101)
  if f$="_" then exit_sub
  if lower$(right$(f$,4))<>".xls" then f$ = f$ + ".xls"
  res% = dll_call1("OpenSpreadSheet",adr(f$))
end_sub

sub SaveAs()
  dim_local res%, f$
  filter 102,"Fichiers Excel|*.xls"
  f$ = file_name$(102)
  if f$="_" then exit_sub
  if lower$(right$(f$,4))<>".xls" then f$ = f$ + ".xls"
  res% = dll_call1("SaveSpreadSheetAs",adr(f$))
end_sub

sub Save()
  dim_local res%
  res% = dll_call0("SaveSpreadSheet")
end_sub

sub Close()
  dim_local res%
  res% = dll_call0("CloseSpreadSheet")
end_sub

sub NewSheet()
  dim_local res%, nom$
  nom$ = message_input$("Nouvelle page","Nom de la page:","")
  if nom$="" then exit_sub
  res% = dll_call2("NewSpreadSheetPage",adr(nom$),1)
end_sub

sub  ActivateIndex()
  dim_local res%, n%, s$
  s$ = message_input$("Activer une page","Numéro de la page:","")
  if s$="" then exit_sub
  if numeric(s$)=0 then exit_sub
  n% = val(s$)
  res% = dll_call1("ActivateSpreadSheetPageByIndex",n%)
end_sub

sub  ActivateName()
  dim_local res%, n%, s$
  s$ = message_input$("Activer une page","Nom de la page:","")
  if s$="" then exit_sub
  res% = dll_call1("ActivateSpreadSheetPageByName",adr(s$))
end_sub

sub  RemoveIndex()
  dim_local res%, n%, s$
  s$ = message_input$("Supprimer une page","Numéro de la page:","")
  if s$="" then exit_sub
  if numeric(s$)=0 then exit_sub
  n% = val(s$)
  res% = dll_call1("RemoveSpreadSheetPageByIndex",n%)
end_sub

sub  RemoveName()
  dim_local res%, n%, s$
  s$ = message_input$("Supprimer une page","Nom de la page:","")
  if s$="" then exit_sub
  res% = dll_call1("RemoveSpreadSheetPageByName",adr(s$))
end_sub

sub  GetPageCount()
  dim_local res%
  res% = dll_call0("GetSpreadSheetPageCount")
  message "Le document a "+str$(res%)+" pages"
end_sub

sub  GetActiveIndex()
  dim_local res%
  res% = dll_call0("GetSpreadSheetActivePageNumber")
  message "La page active est la page numéro "+str$(res%)
end_sub

sub  GetActiveName()
  dim_local res%, nom$
  nom$ = string$(255," ")
  res% = dll_call1("GetSpreadSheetActivePageName",adr(nom$))
  message "La page actuelle s'appelle ["+trim$(nom$)+"]"
end_sub

sub SetColWidth()
  dim_local res%, s$, c%, w%
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  s$ = trim$(text$(124))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  w% = val(s$)*100
  res% = dll_call4("SetSpreadSheetDimensions",0-1,0-1,c%,w%)
end_sub

sub SetLineHeight()
  dim_local res%, s$, l%, h%
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(134))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  h% = val(s$)*100
  res% = dll_call4("SetSpreadSheetDimensions",l%,h%,0-1,0-1)
end_sub

sub BackColor()
  dim_local res%, l%, c%, clr%, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)
  res% = dll_call6("SetSpreadSheetColors",c%,l%,1,clr%,0,0)
end_sub

sub FontColor()
  dim_local res%, l%, c%, clr%, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)
  res% = dll_call6("SetSpreadSheetColors",c%,l%,0,0,1,clr%)
end_sub

sub FontSize()
  dim_local res%, l%, c%, siz%, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  siz% = val(text$(142))
  res% = dll_call4("SetSpreadSheetFont",c%,l%,0,siz%)
end_sub

sub FontName()
  dim_local res%, l%, c%, nam$, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  nam$ = text$(143)
  res% = dll_call4("SetSpreadSheetFont",c%,l%,adr(nam$),0)
end_sub

sub FontAttributes()
  dim_local res%, l%, c%, nam$, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  nam$ = text$(143)
  res% = dll_call6("SetSpreadSheetAtributes",c%,l%,checked(151),checked(152),checked(153),checked(154))
end_sub

sub Borders()
  dim_local res%, l%, c%, nam$, s$, style%, clr%, i%
  s$ = trim$(text$(132))
  if len(s$)=0 then exit_sub
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then exit_sub
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  style% = item_index(170)
  if style%=0 then style% = 1
  style% = style% - 1
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)

  ' pour documenter les possibilités
  for i%=1 to count(170)
    res% = dll_call5("SetSpreadSheetBorders",9,i%*2-1,1,i%-1,clr%)
    s$ = item_read$(170,i%)
    res% = dll_call4("WriteSpreadSheetCellByIndex",10,i%*2-1,adr(s$),0)
  next i%

  ' bords individuels de la cellule choisie
  if checked(162)=1    : ' haut
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,3,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,3,0,0)
  end_if
  if checked(163)=1    : ' gauche
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,4,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,4,0,0)
  end_if
  if checked(164)=1    : ' droite
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,5,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,5,0,0)
  end_if
  if checked(165)=1    : ' bas
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,2,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,2,0,0)
  end_if
  if checked(166)=1    : ' diagonal haut
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,6,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,6,0,0)
  end_if
  if checked(167)=1    : ' diagonal bas
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,7,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,7,0,0)
  end_if
  s$ = "Style "+str$(style%)
  res% = dll_call4("WriteSpreadSheetCellByIndex",c%,l%,adr(s$),0)
end_sub
 
sub SelectRange()
  dim_local res%, x1%, y1%, x2%, y2%
  res% = dll_call4("SelectSpreadSheetRange",4,5,7,12)
  res% = dll_call4("GetSelectedSpreadSheetRange",adr(x1%),adr(y1%),adr(x2%),adr(y2%))
  message "Sélection: ("+str$(x1%)+","+str$(y1%)+") -> ("+str$(x2%)+","+str$(y2%)+")"
end_sub

sub SelectionBorders()
  dim_local res%, style%, clr%, bord%
  style% = item_index(170)
  if style%=0 then style% = 1
  style% = style% - 1
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)
  res% = dll_call4("SelectSpreadSheetRange",4,5,7,12)

  bord% = 0
  if checked(162)=1 then bord% = bord% +  1    : ' haut
  if checked(163)=1 then bord% = bord% +  2    : ' gauche
  if checked(164)=1 then bord% = bord% +  4    : ' droite
  if checked(165)=1 then bord% = bord% +  8    : ' bas
  if checked(166)=1 then bord% = bord% +  16    : ' diagonal haut
  if checked(167)=1 then bord% = bord% +  32    : ' diagonal bas
  if checked(168)=1 then bord% = bord% +  64    : ' intérieur horizontal
  if checked(169)=1 then bord% = bord% + 128    : ' intérieur vertical

  res% = dll_call3("SetSpreadSheetSelectionBorders",bord%,style%,clr%)

end_sub

sub CopySelection()
  dim_local res%
  res% = dll_call4("SelectSpreadSheetRange",4,5,7,12)
  res% = dll_call0("CopySpreadSheetSelection")
end_sub

sub CutSelection()
  dim_local res%
  res% = dll_call4("SelectSpreadSheetRange",4,5,7,12)
  res% = dll_call0("CutSpreadSheetSelection")
end_sub

sub Paste()
  dim_local res%
  res% = dll_call2("PasteToSpreadSheet",4,14)
end_sub
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyMar 7 Avr 2015 - 11:41

Merci Klaus pour ces explications.

J'ai utilisé la fonction 5 au lieu de la 8 et tout est OK !

Encore merci
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyMar 7 Avr 2015 - 12:16

Smile Smile Smile Smile Smile
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 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyMar 7 Avr 2015 - 21:07

Nouvelle version:
KGF.dll V4.69 du 07/04/2015

Nouveautés:
suite de la gestion Excel/OpenCalc: gestion simultanée d'un Excel et d'un OpenCalc !
et des tests de toutes les fonctions avec OpenCalc


Modules modifiés:
KGF.dll

La doc sera à jour prochainement.
Les sources sont à jour.

Pour cette nouvelle version, j'ai fait très fort: on peut gérer simultanément un exemplaire des deux tableurs, sélectionner celui sur lequel un veut travailler, puis effectuer des actions sur le tableur sélectionné. Ceci permet par exemple de copier des tableaux de Excel à OpenCalc et vice-versa !

On peut même importer/exporter séparément, maintenant, les données et les formules !

Doc provisoire de l'existant:
Spoiler:

Et voici le programme de démo avec toutes les fonctions:
(note: pour importer/exporter, un décalage de 3 colonnes est explicitement codé dans la démo !)
Les menus ont été réorganisés pour refléter la structure: Fichier(Document) - Pages - Options.
Toutes les fonctions ont été testées avec Excel et OpenCalc !
Pour tester les couleurs: les lignes "couleur" du menu Edition changent ces couleurs de façon aléatoire.
Pour tester les bordures: connecter sur Excel ou OpenCalc, cocher les cases des bordures souhaitées,
choisir une ligne et colonne hors colonnes 9 à 12, puis utiliser le menu Edition\Bordures.
Ou pour un rectangle: dans le menu Edition, choisissez Selection, cofigurez la bordure avec les champs à droite, puis utilisez menu Edition`\Bordure de sélection.
Code:
' GRID_et_EXCEL.bas


label connect, connect_exist, exit, editmode, export, import, disconnect
label open, save, saveas, close
label new_sheet, act_by_ind, act_by_name, del_by_ind, del_by_name
label col_width, line_height, back_color, pol_color, pol_size, pol_name
label pol_att, borders, sel_range, sel_borders, copy_select, cut_select, paste
label test_what, page_count, ind_actif, name_act

dim nlin% : nlin% = 11
dim ncol% : ncol% = 8

dim res%, no%, no1%, no2%, editmode%

width 0,750

no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Fichiers"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Connecter nouveau" : on_click no%,connect
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Connecter existant" : on_click no%,connect_exist
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Déconnecter" : on_click no%,disconnect
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Sortir" : on_click no%,exit
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Document"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Ouvrir..." : on_click no%,open
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Enregistrer" : on_click no%,save
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Enregistrer sous..." : on_click no%,saveas
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Fermer" : on_click no%,close
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Exporter" : on_click no%,export
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Importer" : on_click no%,import
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Pages"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nouveau" : on_click no%,new_sheet
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Activer par indice" : on_click no%,act_by_ind
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Activer par nom" : on_click no%,act_by_name
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Supprimer par indice" : on_click no%,del_by_ind
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Supprimer par nom" : on_click no%,del_by_name
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Edition"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Largeur de colonne" : on_click no%,col_width
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Hauteur de ligne" : on_click no%,line_height
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Couleur de fond" : on_click no%,back_color
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Couleur de police" : on_click no%,pol_color
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Taille de police" : on_click no%,pol_size
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nom de police" : on_click no%,pol_name
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Attributs de police" : on_click no%,pol_att
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Bordures" : on_click no%,borders
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Sélection" : on_click no%,sel_range
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Bordures de sélection" : on_click no%,sel_borders
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Copier la sélection" : on_click no%,copy_select
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Couper la sélection" : on_click no%,cut_select
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Coller" : on_click no%,paste
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Options"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Mode Edition" : on_click no%,editmode
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Test tableur" : on_click no%,test_what
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nombre de pages" : on_click no%,page_count
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Indice page active" : on_click no%,ind_actif
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nom page active" : on_click no%,name_act

grid 100 : top 100,10 : left 100,10 : width 100,525 : height 100,280
grid_column 100,ncol% : grid_row 100,nlin%

option 111 : top 111,320 : left 111,50 : caption 111,"Détection automatique" : width 111,130
option 112 : top 112,340 : left 112,50 : caption 112,"Excel"
option 113 : top 113,360 : left 113,50 : caption 113,"OpenCalc"

alpha 121 : top 121,320 : left 121,200 : caption 121,"Colonne:"
edit 122 : top 122,320 : left 122,250 : width 122,40
alpha 123 : top 123,320 : left 123,310 : caption 123,"Largeur:"
edit 124 : top 124,320 : left 124,360 : width 124,40

alpha 131 : top 131,350 : left 131,200 : caption 131,"Ligne:"
edit 132 : top 132,350 : left 132,250 : width 132,40
alpha 133 : top 133,350 : left 133,310 : caption 133,"Hauteur:"
edit 134 : top 134,350 : left 134,360 : width 134,40

alpha 141 : top 141,320 : left 141,420 : caption 141,"Police:"
combo 142 : top 142,320 : left 142,470 : width 142,40
  item_add 142,8
  item_add 142,10
  item_add 142,12
  item_add 142,14
  item_add 142,16
  text 142,10
  
combo 143 : top 143,350 : left 143,470 : width 143,130
  font_names_load 143
  text 143,"Arial"

check 151 : top 151,380 : left 151,470 : width 151,40 : caption 151,"B" : font_bold 151
check 152 : top 152,380 : left 152,510 : width 152,40 : caption 152,"It" : font_italic 152
check 153 : top 153,380 : left 153,550 : width 153,40 : caption 153,"U" : font_underline 153
check 154 : top 154,380 : left 154,590 : width 154,40 : caption 154,"S" : font_strike 154

alpha 161 : top 161,10 : left 161,550 : caption 161,"Bords:"
check 162 : top 162,30 : left 162,590 : caption 162,"Haut"
check 163 : top 163,60 : left 163,550 : caption 163,"Gauche"
check 164 : top 164,60 : left 164,630 : caption 164,"Droite"
check 165 : top 165,90 : left 165,590 : caption 165,"Bas"
check 166 : top 166,120 : left 166,550 : caption 166,"Diag "
check 167 : top 167,120 : left 167,630 : caption 167,"Diag /"
check 168 : top 168,150 : left 168,550 : caption 168,"Intérieur -"
check 169 : top 169,150 : left 169,630 : caption 169,"Intérieur |"
combo 170 : top 170,180 : left 170,550
  item_add 170,"0 = Aucun"
  item_add 170,"1 = Trait"
  item_add 170,"2 = Tirets"
  item_add 170,"3 = Points"
  item_add 170,"4 = Tiret point"
  item_add 170,"5 = Tiret point point"
  item_add 170,"6 = Moyen tiret slash point"
  item_add 170,"7 = Trait"
  item_add 170,"8 = Tirets"
  item_add 170,"9 = Double"
  text 170,item_read$(170,1)

open_dialog 101
save_dialog 102

dll_on "KGF.dll"

mark_on 111


end

exit:
  ' terminate
  res% = dll_call1("KillProcessByHandle",handle(0))
  
test_what:
  Test_What()
  return

connect:
  ConnectToExcel(0)
  return
  
connect_Exist:
  ConnectToExcel(1)
  return

disconnect:
  DisconnectFromExcel()
  return

open:
  open()
  return

saveas:
  SaveAs()
  return
  
save:
  Save()
  return
  
close:
  Close()
  return
  
new_sheet:
  NewSheet()
  return

act_by_ind:
  ActivateIndex()
  return
  
act_by_name:
  ActivateName()
  return

del_by_ind:
  RemoveIndex()
  return

del_by_name:
  RemoveName()
  return

page_count:
  GetPageCount()
  return

ind_actif:
  GetActiveIndex()
  return

name_act:
  GetActiveName()
  return
  
col_width:
  SetColWidth()
  return
  
line_height:
  SetLineHeight()
  return
  
back_color:
  BackColor()
  return
  
pol_color:
  FontColor()
  return

pol_size:
  FontSize()
  return

pol_name:
  FontName()
  return

pol_att:
  FontAttributes()
  return

borders:
  Borders()
  return

sel_range:
  SelectRange()
  return
  
sel_borders:
  SelectionBorders()
  return
  
copy_select:
  CopySelection()
  return
  
cut_select:
  CutSelection()
  return

paste:
  Paste()
  return

editmode:
  editmode% = 1 - editmode%
  if editmode%=0
    res% = DLL_call6("GridFunction",object_internal(100),1,0,0,0,0)
    mark_off number_click
  else
    res% = DLL_call6("GridFunction",object_internal(100),1,1,0,0,0)
    mark_on number_click
  end_if
  return
  
export:
  ExportGridToExcel()
  return
  
import:
  ImportGridFromExcel()
  return
  
  

sub ConnectToExcel(what%)
  dim_local res%
  if what%=0
    if checked(111)=1
      res% = dll_call2("StartSpreadSheet",1,1)        : ' essayer Excel
      if res%<0
        res% = dll_call2("StartSpreadSheet",2,1)      : ' essayer OpenCalc
        if res%<0 then message "Aucun tableur n'est trouvé"
      end_if
    end_if
    if checked(112)=1
      res% = dll_call2("StartSpreadSheet",1,1)        : ' essayer Excel
      if res%<0 then message "Excel n'est pas trouvé"
    end_if
    if checked(113)=1
      res% = dll_call2("StartSpreadSheet",2,1)      : ' essayer OpenCalc
      if res%<0 then message "OpenCalc n'est pas trouvé"
    end_if
  else
    if checked(111)=1 then exit_sub
    if checked(112)=1 then res% = dll_call1("ConnectToSpreadSheet",1)
    if checked(113)=1 then res% = dll_call1("ConnectToSpreadSheet",2)
    if res%<0 then message "Ce tableur n'est pas actif"
  end_if
end_sub

sub DisconnectFromExcel()
  dim_local res%
  res% = dll_call1("TerminateSpreadSheet",1)
end_sub

sub ExportGridToExcel()
  dim_local res%, x%, y%, s$
  res% = dll_call0("GetSpreadSheetType")
  if res%<1 then exit_sub
  
  ' 1ère alternative: export par fonction directe
  ' décalage de 3 cellules vers la droite et de 2 lignes vers le bas
'  res% = dll_call4("ExportGridToSpreadSheet",object_internal(100),0,3,2)
  ' sans décalage:
  res% = dll_call4("ExportGridToSpreadSheet",object_internal(100),0,0,0)
  exit_sub

  ' 2ème alternative: export par boucle
  for y%=1 to nlin%
    for x%=1 to ncol%
      s$ = grid_read$(100,y%,x%)
      res% = dll_call4("WriteSpreadSheetCellByIndex",x%,y%,adr(s$),0)
    next x%
  next y%
  
end_sub

sub ImportGridFromExcel()
  dim_local res%, x%, y%, s$
  res% = dll_call0("GetSpreadSheetType")
  if res%<1 then exit_sub
  res% = dll_call4("ImportGridFromSpreadSheet",object_internal(100),0,3,2)
end_sub

sub Test_What()
  dim_local res%
  res% = dll_call0("GetSpreadSheetType")
  select res%
    case -1: message "aucun tableur n'est lancé"
    case  0: message "un tableur a été lancé, mais il n'est plus disponible"
    case  1: message "Excel est en cours..."
    case  2: message "OpenCalc est en cours..."
  end_select
end_sub

sub open()
  dim_local res%, f$
  filter 101,"Fichiers Excel|*.xls"
  f$ = file_name$(101)
  if f$="_" then exit_sub
  if lower$(right$(f$,4))<>".xls" then f$ = f$ + ".xls"
  res% = dll_call1("OpenSpreadSheet",adr(f$))
end_sub

sub SaveAs()
  dim_local res%, f$
  filter 102,"Fichiers Excel|*.xls"
  f$ = file_name$(102)
  if f$="_" then exit_sub
  if lower$(right$(f$,4))<>".xls" then f$ = f$ + ".xls"
  res% = dll_call1("SaveSpreadSheetAs",adr(f$))
end_sub

sub Save()
  dim_local res%
  res% = dll_call0("SaveSpreadSheet")
end_sub

sub Close()
  dim_local res%
  res% = dll_call0("CloseSpreadSheet")
end_sub

sub NewSheet()
  dim_local res%, nom$
  nom$ = message_input$("Nouvelle page","Nom de la page:","")
  if nom$="" then exit_sub
  res% = dll_call2("NewSpreadSheetPage",adr(nom$),1)
end_sub

sub  ActivateIndex()
  dim_local res%, n%, s$
  s$ = message_input$("Activer une page","Numéro de la page:","")
  if s$="" then exit_sub
  if numeric(s$)=0 then exit_sub
  n% = val(s$)
  res% = dll_call1("ActivateSpreadSheetPageByIndex",n%)
end_sub

sub  ActivateName()
  dim_local res%, n%, s$
  s$ = message_input$("Activer une page","Nom de la page:","")
  if s$="" then exit_sub
  res% = dll_call1("ActivateSpreadSheetPageByName",adr(s$))
end_sub

sub  RemoveIndex()
  dim_local res%, n%, s$
  s$ = message_input$("Supprimer une page","Numéro de la page:","")
  if s$="" then exit_sub
  if numeric(s$)=0 then exit_sub
  n% = val(s$)
  res% = dll_call1("RemoveSpreadSheetPageByIndex",n%)
end_sub

sub  RemoveName()
  dim_local res%, n%, s$
  s$ = message_input$("Supprimer une page","Nom de la page:","")
  if s$="" then exit_sub
  res% = dll_call1("RemoveSpreadSheetPageByName",adr(s$))
end_sub

sub  GetPageCount()
  dim_local res%
  res% = dll_call0("GetSpreadSheetPageCount")
  message "Le document a "+str$(res%)+" pages"
end_sub

sub  GetActiveIndex()
  dim_local res%
  res% = dll_call0("GetSpreadSheetActivePageNumber")
  message "La page active est la page numéro "+str$(res%)
end_sub

sub  GetActiveName()
  dim_local res%, nom$
  nom$ = string$(255," ")
  res% = dll_call1("GetSpreadSheetActivePageName",adr(nom$))
  message "La page actuelle s'appelle ["+trim$(nom$)+"]"
end_sub

sub SetColWidth()
  dim_local res%, s$, c%, w%
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  s$ = trim$(text$(124))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  w% = val(s$)*100
  res% = dll_call4("SetSpreadSheetDimensions",0-1,0-1,c%,w%)
end_sub

sub SetLineHeight()
  dim_local res%, s$, l%, h%
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(134))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  h% = val(s$)*100
  res% = dll_call4("SetSpreadSheetDimensions",l%,h%,0-1,0-1)
end_sub

sub BackColor()
  dim_local res%, l%, c%, clr%, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)
  res% = dll_call6("SetSpreadSheetColors",c%,l%,1,clr%,0,0)
end_sub

sub FontColor()
  dim_local res%, l%, c%, clr%, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)
  res% = dll_call6("SetSpreadSheetColors",c%,l%,0,0,1,clr%)
end_sub

sub FontSize()
  dim_local res%, l%, c%, siz%, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  siz% = val(text$(142))
  res% = dll_call4("SetSpreadSheetFont",c%,l%,0,siz%)
end_sub

sub FontName()
  dim_local res%, l%, c%, nam$, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  nam$ = text$(143)
  res% = dll_call4("SetSpreadSheetFont",c%,l%,adr(nam$),0)
end_sub

sub FontAttributes()
  dim_local res%, l%, c%, nam$, s$
  s$ = trim$(text$(132))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then s$ = "0"
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  nam$ = text$(143)
  res% = dll_call6("SetSpreadSheetAtributes",c%,l%,checked(151),checked(152),checked(153),checked(154))
end_sub

sub Borders()
  dim_local res%, l%, c%, nam$, s$, style%, clr%, i%
  s$ = trim$(text$(132))
  if len(s$)=0 then exit_sub
  if numeric(s$)=0 then exit_sub
  l% = val(s$)
  s$ = trim$(text$(122))
  if len(s$)=0 then exit_sub
  if numeric(s$)=0 then exit_sub
  c% = val(s$)
  style% = item_index(170)
  if style%=0 then style% = 1
  style% = style% - 1
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)

  ' pour documenter les possibilités
  for i%=1 to count(170)
    res% = dll_call5("SetSpreadSheetBorders",9,i%*2-1,1,i%-1,clr%)
    s$ = item_read$(170,i%)
    res% = dll_call4("WriteSpreadSheetCellByIndex",10,i%*2-1,adr(s$),0)
  next i%

  ' bords individuels de la cellule choisie
  if checked(162)=1    : ' haut
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,3,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,3,0,0)
  end_if
  if checked(163)=1    : ' gauche
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,4,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,4,0,0)
  end_if
  if checked(164)=1    : ' droite
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,5,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,5,0,0)
  end_if
  if checked(165)=1    : ' bas
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,2,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,2,0,0)
  end_if
  if checked(166)=1    : ' diagonal haut
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,6,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,6,0,0)
  end_if
  if checked(167)=1    : ' diagonal bas
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,7,style%,clr%)
  else
    res% = dll_call5("SetSpreadSheetBorders",c%,l%,7,0,0)
  end_if
  s$ = "Style "+str$(style%)
  res% = dll_call4("WriteSpreadSheetCellByIndex",c%,l%,adr(s$),0)
end_sub
  
sub SelectRange()
  dim_local res%, x1%, y1%, x2%, y2%
  res% = dll_call4("SelectSpreadSheetRange",4,5,7,12)
  res% = dll_call4("GetSelectedSpreadSheetRange",adr(x1%),adr(y1%),adr(x2%),adr(y2%))
  message "Sélection: ("+str$(x1%)+","+str$(y1%)+") -> ("+str$(x2%)+","+str$(y2%)+")"
end_sub

sub SelectionBorders()
  dim_local res%, style%, clr%, bord%
  style% = item_index(170)
  if style%=0 then style% = 1
  style% = style% - 1
  clr% = (rnd(255)*256+rnd(255))*256+rnd(255)
  res% = dll_call4("SelectSpreadSheetRange",4,5,7,12)

  bord% = 0
  if checked(162)=1 then bord% = bord% +   1    : ' haut
  if checked(163)=1 then bord% = bord% +   2    : ' gauche
  if checked(164)=1 then bord% = bord% +   4    : ' droite
  if checked(165)=1 then bord% = bord% +   8    : ' bas
  if checked(166)=1 then bord% = bord% +  16    : ' diagonal haut
  if checked(167)=1 then bord% = bord% +  32    : ' diagonal bas
  if checked(168)=1 then bord% = bord% +  64    : ' intérieur horizontal
  if checked(169)=1 then bord% = bord% + 128    : ' intérieur vertical

  res% = dll_call3("SetSpreadSheetSelectionBorders",bord%,style%,clr%)

end_sub

sub CopySelection()
  dim_local res%
  res% = dll_call4("SelectSpreadSheetRange",4,5,7,12)
  res% = dll_call0("CopySpreadSheetSelection")
end_sub

sub CutSelection()
  dim_local res%
  res% = dll_call4("SelectSpreadSheetRange",4,5,7,12)
  res% = dll_call0("CutSpreadSheetSelection")
end_sub

sub Paste()
  dim_local res%
  res% = dll_call2("PasteToSpreadSheet",4,14)
end_sub
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 26 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 26 EmptyLun 13 Avr 2015 - 18:24

J' ai un souci avec les fonctions de la surveillance des fenêtres.
L' "EDIT" de service ne change pas... Suspect

Code:
Variables()
Labels()
Init()
Gui()

End

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Variables()
   dim_local i%
'  objets
   dim no%
   dim MM%     :no%=no%+1 : MM%     =no%
   dim SM%(10) :for i%=1 to 10 : no%=no%+1 : SM%(i%)=no% : next i%
   dim Pan%    :no%=no%+1 : Pan%    =no%
   dim Recept% :no%=no%+1 : Recept% =no%  
'  évenements
   dim clic%
   dim Change%
   dim FChange%
'  adresses des fichiers externes
   dim Path$: Path$=dir_current$+""
   dim kgf$ : kgf$ =Path$+"Res\KGF.dll"
'  fonctions
   dim Recept$
   dim TableForm%(100)
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Labels()
   label clic,close0,Change
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Init()
   dll_on kgf$
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Gui()
   dim_local L%,H%,res%,
'  Menu
   Main_menu MM%
   Sub_menu SM%(1) :Parent SM%(1),MM%   : Caption SM%(1),"Fichiers": On_click SM%(1),Clic
   Sub_menu SM%(2) :Parent SM%(2),SM%(1): Caption SM%(2),"Films"   : On_click SM%(2),Clic
   Sub_menu SM%(3) :Parent SM%(3),SM%(1): Caption SM%(3),"Musiques": On_click SM%(3),Clic
   Sub_menu SM%(4) :Parent SM%(4),SM%(1): Caption SM%(4),"Photos"  : On_click SM%(4),Clic
   Sub_menu SM%(5) :Parent SM%(5),MM%   : Caption SM%(5),"Edition" : On_click SM%(5),Clic
   Sub_menu SM%(6) :Parent SM%(6),SM%(5): Caption SM%(6),"Play"    : On_click SM%(6),Clic
   Sub_menu SM%(7) :Parent SM%(7),SM%(5): Caption SM%(7),"Pause"   : On_click SM%(7),Clic
   Sub_menu SM%(8) :Parent SM%(8),SM%(5): Caption SM%(8),"Stop"    : On_click SM%(8),Clic
   Sub_menu SM%(9) :Parent SM%(9),MM%   : Caption SM%(9),"Paramètres"   : On_click SM%(9),Clic
   Sub_menu SM%(10):Parent SM%(10),MM%  : Caption SM%(10),"A Propos..." : On_click SM%(10),Clic

'  Surface utilisable
   Panel Pan% : Full_space Pan% : L%=Width(Pan%) : H%=Height(Pan%)
'  edit de reception
   Edit Recept%  : Parent Recept%,Pan%
'   hide Recept%
   On_change Recept%,Change
  
   res% = dll_call1("MoveSizeWindowInitHook",handle(Recept%))
   res% = dll_call1("MoveSizeWindowAddHook",handle(0))
   TableForm%(res%)=0
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

clic:
   clic%=number_click
return

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

close0:
return

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Change:
   Change%=number_change
   if Change%=Recept%
      Recept$=text$(Recept%)
      if left$(Recept$,1)="M"
         FChange%=Val(mid$(Recept$,2,len(Recept$)-1))
         FChange%=TableForm%(FChange%)
         select FChange%
            case 0 : message "form 0"
            case 1 : message "form 1"
         end_select
      end_if  
   end_if
return

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' #INCLUDE "FCT.bas"
Aurai je fait une gaffe quelque part ?...

EDIT :
Si en fait il change sur un déplacement et pas sur un changement de taille.
Mais il y a tout de même un hic.
On initialise le tableau avec 0 pour valeur (numéro du form 0)
Table%(1)=0 
mais l' edit me renvoie "M680" si j' extrais 680 et que je compare aux cases de mon tableau, il y a un souci.
680, n' est pas un numéro d' objet, ni un handle et mon tableau ne fait que 100 cases puisque l' on ne gère que 100 fenêtres
Dans la doc :
FChange%=Val(mid$(Recept$,2,len(Recept$)))
là c' est le bug assuré, je demande d' extraire les 4 caractères à partir du 2eme caractere...
pour n' extraire que la partie numérique ce serait :
FChange%=Val(mid$(Recept$,2,len(Recept$)-1))

EDIT 2 :
Si j' initialise la position de mon form 0 au centre de l' écran, un click sur le petit carré
met le form en plein écran et déplace sa position en 0,0.
Le mouvement n' est pas intercepté.
Revenir en haut Aller en bas
Yannick




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

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: Re   KGF_dll - nouvelles versions - Page 26 EmptyJeu 16 Avr 2015 - 3:52

Klaus ?....te serais tu perdu dans tes rosiers ?...
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 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 10:17

Désolé - j'étais parti pendant une semaine pour fêter le 100ème anniversaire de ma mère, dans un large cercle familial. Je suis de retour et je vais analyser ton problème...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 10:31

Désolé, je fais le plus petit hors sujet possible, mais félicitations à ta mère Klaus.
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 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 10:34

J'ai regardé ton code. J'ai même ajouté une fenêtre pour avoir "form 0" et "form 1". Et ça marche comme sur des roulettes. Je n'ai rien changé d'autre:
Code:
Variables()
Labels()
Init()
Gui()

End

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Variables()
  dim_local i%
'  objets
  dim no%
  dim MM%    :no%=no%+1 : MM%    =no%
  dim SM%(10) :for i%=1 to 10 : no%=no%+1 : SM%(i%)=no% : next i%
  dim Pan%    :no%=no%+1 : Pan%    =no%
  dim Recept% :no%=no%+1 : Recept% =no%
  dim Form1%  :no%=no%+1 : Form1%  =no%
'  évenements
  dim clic%
  dim Change%
  dim FChange%
'  adresses des fichiers externes
  dim Path$: Path$=dir_current$+""
  dim kgf$ : kgf$ = "KGF.dll" : ' kgf$ =Path$+"Res\KGF.dll"
'  fonctions
  dim Recept$
  dim TableForm%(100)
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Labels()
  label clic,close0,Change
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Init()
  dll_on kgf$
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Gui()
  dim_local L%,H%,res%,
'  Menu
  Main_menu MM%
  Sub_menu SM%(1) :Parent SM%(1),MM%  : Caption SM%(1),"Fichiers": On_click SM%(1),Clic
  Sub_menu SM%(2) :Parent SM%(2),SM%(1): Caption SM%(2),"Films"  : On_click SM%(2),Clic
  Sub_menu SM%(3) :Parent SM%(3),SM%(1): Caption SM%(3),"Musiques": On_click SM%(3),Clic
  Sub_menu SM%(4) :Parent SM%(4),SM%(1): Caption SM%(4),"Photos"  : On_click SM%(4),Clic
  Sub_menu SM%(5) :Parent SM%(5),MM%  : Caption SM%(5),"Edition" : On_click SM%(5),Clic
  Sub_menu SM%(6) :Parent SM%(6),SM%(5): Caption SM%(6),"Play"    : On_click SM%(6),Clic
  Sub_menu SM%(7) :Parent SM%(7),SM%(5): Caption SM%(7),"Pause"  : On_click SM%(7),Clic
  Sub_menu SM%(8) :Parent SM%(8),SM%(5): Caption SM%(8),"Stop"    : On_click SM%(8),Clic
  Sub_menu SM%(9) :Parent SM%(9),MM%  : Caption SM%(9),"Paramètres"  : On_click SM%(9),Clic
  Sub_menu SM%(10):Parent SM%(10),MM%  : Caption SM%(10),"A Propos..." : On_click SM%(10),Clic

'  Surface utilisable
  Panel Pan% : Full_space Pan% : L%=Width(Pan%) : H%=Height(Pan%)
'  edit de reception
  Edit Recept%  : Parent Recept%,Pan%
'  hide Recept%
  On_change Recept%,Change
 
  form Form1%

  res% = dll_call1("MoveSizeWindowInitHook",handle(Recept%))
  res% = dll_call1("MoveSizeWindowAddHook",handle(0))
  TableForm%(res%)=0
  res% = dll_call1("MoveSizeWindowAddHook",handle(Form1%))
  TableForm%(res%)=1
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

clic:
  clic%=number_click
return

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

close0:
return

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Change:
  Change%=number_change
  if Change%=Recept%
      Recept$=text$(Recept%)
      if left$(Recept$,1)="M"
        FChange%=Val(mid$(Recept$,2,len(Recept$)))
        FChange%=TableForm%(FChange%)
        select FChange%
            case 0 : message "form 0"
            case 1 : message "form 1"
        end_select
      end_if
  end_if
return

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' #INCLUDE "FCT.bas"

Windows 8.1, Panoramic V0.9.26i5 (dernière version), KGF.dll V4.69 du 07/04/2015 (dernière version)

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 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 10:36

On s'est croisé ... merci ! Tous les dimanche après-midi, elle se rend dans un cluib d'échec et joue des parties d'entraînement, et souvent, elle participe à des tournois !
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 26 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 11:27

Tout d' abord, Félicitation à ta mère pour cette centième bougie.

Pour en revenir à nos moutons... Laughing

Y aurait il une curiosité de plus entre windows 7 et 8 ?...
J' ai repris le code que tu as posté avec l' ajout du form 1
J' ai placé un message juste après la récupération du texte de l' edit.
Si je touche au form 1, la réponse est M680 ( réponse que j' avais avec le form 0 seul )
Si je touche au form 0, la réponse est M001 ( ce qui est la réponse attendue )

Suspect  Suspect  Suspect  Suspect  Suspect  Suspect

EDIT: Cela n' aura fonctionné qu' une fois, maintenant j' ai M680 pour tous les deux ! Suspect


Dernière édition par ygeronimi le Ven 17 Avr 2015 - 11:41, édité 1 fois
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 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 11:36

Je ne vois pas du tout d'où pourrait venir le 680. J'ai mis le même message au même endroit. Pour la form 0, j'obtiens M001, et M002 pour la form Form1% (qui n'est pas form 1, bien sûr). Les codes retournés sont les numéros d'ordre de déclaration par MoveSizeWindowAddHook. Si j'inverse les déclarations avec Form1% d'abord, puis form 0, j'obtiens M001 for Form1% et M002 pour la form 0. C'est d'ailleurs dans ce sens que ta table TableForm% ne sert pas à grand chose - tu peux directement utiliser la valeur retournée, comme ceci:
Code:
Change:
  Change%=number_change
  if Change%=Recept%
      Recept$=text$(Recept%)
message recept$
      if left$(Recept$,1)="M"
        FChange%=Val(mid$(Recept$,2,len(Recept$)))
        select FChange%
            case 1 : message "form 0"
            case 2 : message "form 1"
        end_select
      end_if
  end_if
return
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 26 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 11:44

On s' est croisé... Laughing

Effectivement le tableau n' est pas très utile mais je voulais partir sur l' exemple de la doc
avant de modifier à mon goût... Laughing

Bon, j' ai fait un deuxième essai et là affraid M680 pour tout le monde !
Revenir en haut Aller en bas
Yannick




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

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 11:56

C' est à se frapper la tête contre un mur !

J' ai enchainé des lancements successifs.

Essai 1 : M680 Mad
Essai 2 : M680 bounce
Essai 3 : Ok cheers
Essai 4 : M680 Sad
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 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 11:58

C'est un vrai mystère. J'ai regardé le source de façon approfondie, et je ne vois aucun moyen de retourner une valeur autre que M001 ou M002, dans la situation de ton code. En en aucun cas, cette valeur ne peut dépasser M100. Alors, M680 - c'est ahurissant. Mais je continuerai à chercher.

EDIT

J'ai allégé un peu ton code, et je peux faire autant d'essais que je veux - tout fonctionne bien. Aucune trace d'un 680:
Code:
Variables()
Labels()
Init()
Gui()

End

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Variables()
  dim_local i%
'  objets
  dim no%
  dim MM%    :no%=no%+1 : MM%    =no%
  dim SM%(10) :for i%=1 to 10 : no%=no%+1 : SM%(i%)=no% : next i%
  dim Pan%    :no%=no%+1 : Pan%    =no%
  dim Recept% :no%=no%+1 : Recept% =no%
  dim Form1%  :no%=no%+1 : Form1%  =no%
'  évenements
  dim clic%
  dim Change%
  dim FChange%
'  adresses des fichiers externes
  dim Path$: Path$=dir_current$+""
  dim kgf$ : kgf$ = "KGF.dll" : ' kgf$ =Path$+"Res\KGF.dll"
'  fonctions
  dim Recept$
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Labels()
  label clic,close0,Change
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Init()
  dll_on kgf$
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SUB Gui()
  dim_local L%,H%,res%,
'  Menu
  Main_menu MM%
  Sub_menu SM%(1) :Parent SM%(1),MM%  : Caption SM%(1),"Fichiers": On_click SM%(1),Clic
  Sub_menu SM%(2) :Parent SM%(2),SM%(1): Caption SM%(2),"Films"  : On_click SM%(2),Clic
  Sub_menu SM%(3) :Parent SM%(3),SM%(1): Caption SM%(3),"Musiques": On_click SM%(3),Clic
  Sub_menu SM%(4) :Parent SM%(4),SM%(1): Caption SM%(4),"Photos"  : On_click SM%(4),Clic
  Sub_menu SM%(5) :Parent SM%(5),MM%  : Caption SM%(5),"Edition" : On_click SM%(5),Clic
  Sub_menu SM%(6) :Parent SM%(6),SM%(5): Caption SM%(6),"Play"    : On_click SM%(6),Clic
  Sub_menu SM%(7) :Parent SM%(7),SM%(5): Caption SM%(7),"Pause"  : On_click SM%(7),Clic
  Sub_menu SM%(8) :Parent SM%(8),SM%(5): Caption SM%(8),"Stop"    : On_click SM%(8),Clic
  Sub_menu SM%(9) :Parent SM%(9),MM%  : Caption SM%(9),"Paramètres"  : On_click SM%(9),Clic
  Sub_menu SM%(10):Parent SM%(10),MM%  : Caption SM%(10),"A Propos..." : On_click SM%(10),Clic

'  Surface utilisable
  Panel Pan% : Full_space Pan% : L%=Width(Pan%) : H%=Height(Pan%)
'  edit de reception
  Edit Recept%  : Parent Recept%,Pan%
'  hide Recept%
  On_change Recept%,Change
 
  form Form1%

  res% = dll_call1("MoveSizeWindowInitHook",handle(Recept%))
  res% = dll_call1("MoveSizeWindowAddHook",handle(0))
  res% = dll_call1("MoveSizeWindowAddHook",handle(Form1%))
END_SUB

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

clic:
  clic%=number_click
return

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

close0:
return

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Change:
  Change%=number_change
  if Change%=Recept%
      Recept$=text$(Recept%)
' message recept$
      if left$(Recept$,1)="M"
        FChange%=Val(mid$(Recept$,2,len(Recept$)))
        select FChange%
            case 1 : message "form 0"
            case 2 : message "form 1"
        end_select
      end_if
  end_if
return

' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' #INCLUDE "FCT.bas"
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 26 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 12:26

Toi tu as allégé, moi je l' ai allourdi de quelques messages... Laughing

J' en ai placé après chaque ajout de form à la surveillance.
Et, le résultat fait que dans les cas où cela ne fonctionne pas, le res% d' ajout renvoie 1 pour tous les ajouts
ce qui veut dire que pour lui il n' y a que des form 0 scratch
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 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 12:44

Chez moi, res% vaut 1 après le premier appel, et 2 après le deuxième. Normal...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 13:13

Klaus, une fois de plus tu m’as battu d’un cran ! Laughing
Ma mère à moi, n’a que 99 ans seulement ! Et Dieu merci, elle se porte bien.
D’ailleurs moi-même j’ai un an de moins que toi.

Félicitations à ta mère !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




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

KGF_dll - nouvelles versions - Page 26 Empty
MessageSujet: re   KGF_dll - nouvelles versions - Page 26 EmptyVen 17 Avr 2015 - 13:15

J' ai une question à deux sous...

Peut on surveiller un objet tout simple ?
Je constate une chose, c' est qu' un Panel, en full_space, s' adapte à la taille du forme.


Revenir en haut Aller en bas
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 26 sur 40Aller à la page : Précédent  1 ... 14 ... 25, 26, 27 ... 33 ... 40  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: