' Interropmpre le traitement en cours par appui sur la touche Echap (ESC) if scancode = 27 null% = message_information_ok("Remplissage du tableau interrompu !") exit_for end_if
' Créer un objet COMBO pour sélectionner le type de séparateur de champs (séparateur de colonnes) combo 3 width 3,120 top 3,146 left 3,40 item_add 3," Virgule" item_add 3," Point-virgule" item_add 3," Tabulation" item_add 3," Espace" text 3," Virgule" on_change 3,choixSeparateur
' Créer la légende du COMBO 3 (Type de séparateur) alpha 4 top 4,129 left 4,45 caption 4,"Séparateur :"
' créer légendes des caractéristiques du fichier CSV alpha 5 top 5,70 font_name 5,"Arial" font_size 5,10 font_bold 5 caption 5,"Nom du fichier CSV :" left 5,420 - text_width(caption$(5),5)
alpha 6 top 6,91 font_name 6,"Arial" font_size 6,10 font_bold 6 caption 6,"Chemin d'accès au fichier CSV :" left 6,420 - text_width(caption$(6),6)
alpha 7 top 7,112 font_size 7,10 font_name 7,"Arial" font_bold 7 caption 7,"Nombre de colonnes :" left 7,420 - text_width(caption$(7),7)
alpha 8 top 8,133 font_name 8,"Arial" font_size 8,10 font_bold 8 caption 8,"Nombre d'enregistrements :" left 8,420 - text_width(caption$(8),8)
alpha 9 top 9,154 font_name 9,"Arial" font_size 9,10 font_bold 9 caption 9,"Taille du fichier CSV :" left 9,420 - text_width(caption$(9),9)
' créer zones d'affichage des caractéristiques du fichier CSV alpha 15 top 15,70 font_size 15,10 left 15,425
alpha 16 top 16,91 font_size 16,10 left 16,425
alpha 17 top 17,112 font_size 17,10 left 17,425
alpha 18 top 18,133 font_size 18,10 left 18,425
alpha 19 top 19,154 font_size 19,10 left 19,425
' créer objet LIST 25 pour afficher la liste des noms de colonne list 25 top 25,58 left 25,800 width 25,200 height 25,110
' créer légende du LIST 25 (affichage des noms de colonne) alpha 26 top 26,43 left 26,805 caption 26,"Noms des colonnes :"
' créer tableau de visualisation du fichier grid 31 top 31,190 left 31,20 width 31,980 height 31,390 grid_column_fixed 31,0 grid_column 31,15 grid_row 31,15 grid_column_sizing_on 31
' Créer boîte de dialogue "Ouvrir fichier" open_dialog 100 ' Créer un filtre pour ne sélectionner que les fichiers CSV filter 100,"Fichier CSV|*.csv"
' Créer boîte de dialogue "Enregistrer fichier" save_dialog 101
' Créer un objet non visible DLIST pour stocker le fichier CSV dlist 102
' Créer fenêtre d'attente create_hide panel 200 width 200,350 height 200,250 left 200,(width_client(0) - width(200)) / 2 top 200,(height_client(0) - height(200)) / 2 color 200,0,0,0 create_show
alpha 201 parent 201,200 font_color 201,255,255,255 font_size 201,20 top 201,120 left 201,90
alpha 202 parent 202,200 top 202,220 left 202,180 font_color 202,255,255,255 font_size 202,12 caption 202,"ESC pour interrompre"
alpha 203 parent 203,200 font_size 203,17 font_color 203,255,255,255 top 203,40 left 203,45 caption 203,"Remplissage du tableau..."
end_sub ' ------------------------------------------------------------------------------ choixSeparateur: ' Choix du séparateur de colonnes
if nomFichierEntrant$ = "_" or nomFichierEntrant$ = "" return end_if
set_focus 0
chargerFichier() return ' ------------------------------------------------------------------------------ fnc formater$(valeur%) ' Formater un nombre avec séparateur de milliers dim_local p%, nombre$
result nombre$ end_fnc ' ------------------------------------------------------------------------------ redim0: ' interdire le redimensionnement de la fenêtre principale inactive 0 width 0,width(0) - width_client(0) + 1020 height 0,height(0) - height_client(0) + 600 active 0 return
Bonne journée !
EDIT : Mise à jour du code-source le 05 septembre 2023.
Dernière édition par Marc le Jeu 14 Sep 2023 - 21:33, édité 2 fois
lechat75
Nombre de messages : 72 Age : 71 Localisation : MONTREUIL 93 Date d'inscription : 26/08/2018
Sujet: Re: Visualisation des fichiers CSV Ven 1 Sep 2023 - 10:23
bonjour à tous ! merci et bravo Marc , testé et approuvé ! c'est le type de programme qui m'est très utile il ne manque que la possibilité d'éditer les cellules de la grille ou de rajouter et supprimer des enregistrements mais je crois que c'est une autre paire de manches !!! bonne journée Philippe
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
J’ai rectifié quelques erreurs dans le code source : - Un fichier vide bloquait le programme ; - Un fichier ne contenant aucun enregistrement bloquait le programme ; - Dans certaines circonstances, une erreur de calcul de la largeur des colonnes pouvait survenir.
Le code-source, en tête du fil de discussion, est mis à jour.
Lechat75 a écrit:
il ne manque que la possibilité d'éditer les cellules de la grille ou de rajouter et supprimer des enregistrements mais je crois que c'est une autre paire de manches !!!
Pour le fun et parce que j’aime bien les défis, je vais tenter de faire une version «éditeur ». Alors peut-être à bientôt, j’espère !
lechat75
Nombre de messages : 72 Age : 71 Localisation : MONTREUIL 93 Date d'inscription : 26/08/2018
Sujet: Re: Visualisation des fichiers CSV Mar 5 Sep 2023 - 10:48
bonjour à tous ! merci Marc je vais vite télécharger la nouvelle version. j'avais bien pensé à compléter ton programme pour en faire un éditeur de fichier CSV mais cela me dépasse un peu. encore merci Phillippe
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Visualisation des fichiers CSV Mar 5 Sep 2023 - 21:06
Bonsoir à tous !
Voici une petite évolution du programme avec l’ajout (en vrac) de trois icônes sur la partie droite de la fenêtre.
- La première icône permet d’ajouter une colonne sur la gauche du GRID pour obtenir une numérotation des lignes ;
- La deuxième icône supprime la colonne de numérotation des lignes ;
- La troisième icône permet d’égaliser la largeur des colonnes. La largeur de chaque colonne étant modifiable à volonté avec la souris, un simple clic sur cette icone rétabli le dimensionnement initial.
Code:
' Fichiers CSV ' Marc - Septembre 2023 ' Ecrit en langage PANORAMIC 0.9.29.i9
dim nomFichierEntrant$, cheminAccesFichierEntrant$, tailleFichierEntrant% dim nomColonne$(50), separateur$, nombreColonnes%, nombreEnregistrements%, numerotationLignes% dim numeroLigne%, nombreColonnesGrid%
' Bloquer toute action sur la fenêtre principale inactive 0
' Effacer le contenu de l'objet LIST réservé à l'affichage des noms de colonnes clear 25
' Effacer le contenu de l'objet DLIST de stockage du ficher CSV clear 102
' Effacer le contenu du tableau de variables des noms de colonnes for n% = 1 to 50 nomColonne$(n%) = "" next n%
' Effacer le contenu du GRID grid_clear 31,grid_row(31),grid_column(31)
' Formater le GRID par défaut grid_column 31,12 grid_row 31,15 nombreColonnes% = 12 ajusterLargeurColonnes()
' Afficher le nom du fichier entrant caption 15,file_extract_name$(nomFichierEntrant$)
' Afficher chemin d'accès au fichier entrant caption 16,file_extract_path$(nomFichierEntrant$)
' Afficher la taille du fichier entrant CSV filebin_open_read 1,nomfichierEntrant$ tailleFichierEntrant% = filebin_size(1) filebin_close 1 if tailleFichierEntrant% > 1 caption 19,formater$(tailleFichierEntrant%) + " octets" else caption 19,"0 octet" end_if
' Sortir du sous-programme si le fichier est vide if tailleFichierEntrant% < 1 caption 18,"0" caption 17,"0" active 0 exit_sub end_if
' Charger le fichier CSV dans le DLIST 102 file_load 102,nomFichierEntrant$
' Afficher le nombre d'enregistrements nombreEnregistrements% = count(102) - 1 caption 18,formater$(nombreEnregistrements%)
' Choix du type de séparateur de colonne if text$(3) = " Virgule" separateur$ = chr$(44) else if text$(3) = " Point-virgule" separateur$ = chr$(59) else if text$(3) = " Tabulation" separateur$ = chr$(9) else if text$(3) = " Espace" separateur$ = chr$(32) end_if end_if end_if end_if
' Lire la première ligne du fichier entrant CSV enregistrement$ = item_read$(102,1)
' Extraire et afficher dans le LIST les noms de colonnes du fichier entrant CSV index% = 1 n% = 1 while index% <= len(enregistrement$) caractere$ = mid$(enregistrement$,index%,1) if caractere$ = separateur$ item_add 25,"Colonne " + str$(n%) + " : " + nomColonne$(n%) n% = n% + 1 if n% > 50 null% = message_warning_ok("Ce fichier comporte plus de 50 colonnes." + chr$(13) + "Seules les 50 premières seront affichées !") exit_while end_if else nomColonne$(n%) = nomColonne$(n%) + caractere$ end_if index% = index% + 1 end_while item_add 25,"Colonne " + str$(n%) + " : " + nomColonne$(n%)
' afficher le nombre de colonnes du fichier nombreColonnes% = n% caption 17,str$(nombreColonnes%)
remplirTableau()
' débloquer les actions sur la fenêtre principale active 0
' Donner le focus au GRID set_focus 31 end_sub ' ------------------------------------------------------------------------------ sub remplirTableau() dim_local ligne%, colonne%, enregistrement$, champ$, index% dim_local debutChamp%, finChamp%, null%
' Afficher la fenêtre d'attente show 200
' Ajuster le nombre de colonnes if numerotationlignes% = 0 nombreColonnesGrid% = nombreColonnes% else nombreColonnesGrid% = nombreColonnes% + 1 end_if grid_column 31,nombreColonnesGrid%
' Ajuster la largeur des colonnes ajusterLargeurColonnes()
' Ajuster le nombre de lignes if nombreEnregistrements% = 0 grid_row 31,2 grid_clear 31,2,nombreColonnesGrid% else grid_row 31,nombreEnregistrements% + 1 end_if
' Remplir les noms des colonnes du GRID if numerotationLignes% = 0 for colonne% = 1 to nombreColonnes% grid_write 31,1,colonne%,nomColonne$(colonne%) next colonne% else grid_write 31,1,1,"N° ligne" for colonne% = 1 to nombreColonnes% grid_write 31,1,colonne% + 1,nomColonne$(colonne%) next colonne% end_if
' vider la variable système SCANCODE null% = scancode
' Remplir les cellules du tableau if nombreEnregistrements% > 0 index% = 1 numeroLigne% = 1
' Interropmpre le traitement en cours par l'appui sur la touche Echap (ESC) if scancode = 27 null% = message_information_ok("Remplissage du tableau interrompu !") exit_for end_if
' Créer un objet COMBO pour sélectionner le type de séparateur de champs (séparateur de colonnes) combo 3 width 3,120 top 3,146 left 3,40 item_add 3," Virgule" item_add 3," Point-virgule" item_add 3," Tabulation" item_add 3," Espace" text 3," Virgule" on_change 3,choixSeparateur
' Créer la légende du COMBO 3 (Type de séparateur) alpha 4 top 4,129 left 4,45 caption 4,"Séparateur :"
' créer légendes des caractéristiques du fichier CSV alpha 5 top 5,70 font_name 5,"Arial" font_size 5,10 font_bold 5 caption 5,"Nom du fichier CSV :" left 5,420 - text_width(caption$(5),5)
alpha 6 top 6,91 font_name 6,"Arial" font_size 6,10 font_bold 6 caption 6,"Chemin d'accès au fichier CSV :" left 6,420 - text_width(caption$(6),6)
alpha 7 top 7,112 font_size 7,10 font_name 7,"Arial" font_bold 7 caption 7,"Nombre de colonnes :" left 7,420 - text_width(caption$(7),7)
alpha 8 top 8,133 font_name 8,"Arial" font_size 8,10 font_bold 8 caption 8,"Nombre d'enregistrements :" left 8,420 - text_width(caption$(8),8)
alpha 9 top 9,154 font_name 9,"Arial" font_size 9,10 font_bold 9 caption 9,"Taille du fichier CSV :" left 9,420 - text_width(caption$(9),9)
' créer zones d'affichage des caractéristiques du fichier CSV alpha 15 top 15,70 font_size 15,10 left 15,425
alpha 16 top 16,91 font_size 16,10 left 16,425
alpha 17 top 17,112 font_size 17,10 left 17,425
alpha 18 top 18,133 font_size 18,10 left 18,425
alpha 19 top 19,154 font_size 19,10 left 19,425
' créer objet LIST 25 pour afficher la liste des noms de colonne list 25 top 25,58 left 25,800 width 25,200 height 25,110
' créer légende du LIST 25 (affichage des noms de colonne) alpha 26 top 26,43 left 26,805 caption 26,"Noms des colonnes :"
' créer tableau de visualisation du fichier grid 31 top 31,190 left 31,20 width 31,980 height 31,390 grid_column_fixed 31,0 grid_column 31,12 grid_row 31,15 grid_fixed_color 31,200,200,200 grid_column_sizing_on 31 nombreColonnes% = grid_column(31) ajusterLargeurColonnes()
' Créer les icônes creerIconeNumeroLigneOFF() creerIconeNumeroLigneON() creerIconeEgaliserColonnes()
' Créer boîte de dialogue "Ouvrir fichier" open_dialog 100 ' Créer un filtre pour ne sélectionner que les fichiers CSV filter 100,"Fichier CSV|*.csv"
' Créer boîte de dialogue "Enregistrer fichier" save_dialog 101
' Créer un objet non visible DLIST pour stocker le fichier CSV dlist 102
' Créer fenêtre d'attente create_hide panel 200 width 200,350 height 200,250 left 200,(width_client(0) - width(200)) / 2 top 200,(height_client(0) - height(200)) / 2 color 200,0,0,0 create_show
alpha 201 parent 201,200 font_color 201,255,255,255 font_size 201,20 top 201,120 left 201,90
alpha 202 parent 202,200 top 202,220 left 202,180 font_color 202,255,255,255 font_size 202,12 caption 202,"ESC pour interrompre"
alpha 203 parent 203,200 font_size 203,17 font_color 203,255,255,255 top 203,40 left 203,45 caption 203,"Remplissage du tableau..." end_sub ' ------------------------------------------------------------------------------ sub creerIconeNumeroLigneON() dim_local point%
picture 37 width 37,42 height 37,42 top 37,210 left 37,1030 color 37,255,255,255 2d_target_is 37 2d_pen_color 0,0,0 2d_line 0,0,42,0 2d_line 0,0,0,42 2d_line 19,0,19,42 2d_line 0,14,42,14 2d_line 0,28,20,28 for point% = 19 to 41 step 2 2d_point point%,28 next point% 2d_line 8,20,11,17 2d_line 10,18,10,25 2d_point 8,33 2d_line 9,32,11,32 2d_line 11,33,11,35 2d_line 11,34,7,38 2d_line 8,38,12,38 2d_flood 13,8,200,200,200 2d_flood 31,6,200,200,200 2d_flood 2,17,200,200,200 2d_flood 2,31,200,200,200 cursor_point 37 hint 37,"Numéroter les lignes" on_click 37,numeroLigneOn end_sub ' ------------------------------------------------------------------------------ sub creerIconeNumeroLigneOFF() dim_local point%
picture 38 width 38,42 height 38,42 top 38,280 left 38,1030 color 38,255,255,255 2d_target_is 38 2d_pen_color 0,0,0 2d_line 0,0,42,0 2d_line 33,0,33,15 2d_line 0,0,0,42 2d_line 0,14,42,14 for point% = 1 to 41 step 2 2d_point point%,28 next point% for point% = 16 to 40 step 2 2d_point 33,point% next point% 2d_flood 3,3,200,200,200 2d_flood 35,3,200,200,200 cursor_point 38 hint 38,"Supprimer la numérotation des lignes" on_click 38,numeroLigneOff end_sub ' ------------------------------------------------------------------------------ sub creerIconeEgaliserColonnes() dim_local point%
picture 39 width 39,42 height 39,42 top 39,350 left 39,1030 color 39,255,255,255 2d_target_is 39 2d_pen_color 0,0,0 2d_line 0,0,42,0 2d_line 0,14,42,14 2d_flood 2,2,200,200,200 2d_line 17,0,17,15 2d_line 34,0,34,15 2d_line 0,0,0,42 2d_line 2,7,6,3 2d_line 2,7,6,11 2d_line 4,7,14,7 2d_line 15,7,11,3 2d_line 15,7,11,11 image 40 2d_image_copy 40,1,1,17,14 2d_image_paste 40,18,1 2d_image_paste 40,35,1 for point% = 1 to 42 step 2 2d_point point%,28 next point% for point% = 14 to 41 step 2 2d_point 17,point% next point% for point% = 14 to 41 step 2 2d_point 34,point% next point% cursor_point 39 hint 39,"Egaliser la largeur des colonnes" on_click 39,egaliserColonnes end_sub ' ------------------------------------------------------------------------------ choixSeparateur: ' Choix du séparateur de colonnes
if nomFichierEntrant$ = "_" or nomFichierEntrant$ = "" return end_if
set_focus 0
chargerFichier() return ' ------------------------------------------------------------------------------ fnc formater$(valeur%) ' Formater un nombre avec séparateur de milliers dim_local p%, nombre$
result nombre$ end_fnc ' ------------------------------------------------------------------------------ redim0: ' interdire le redimensionnement de la fenêtre principale inactive 0 width 0,width(0) - width_client(0) + 1100 height 0,height(0) - height_client(0) + 600 active 0 return
Maintenant je vais tenter de faire une version avec la possibilité d’éditer le fichier CSV. J’ai couché sur le papier quelques idées : - Editer une cellule ; - Supprimer une ligne ; - Ajouter une ligne ; - Supprimer une colonne ; - Ajouter une colonne ; - Modifier le titre d’une colonne ; - Sauvegarder au format CSV ; - Sauvegarder au format « Panoramic GRID ».
A bientôt !
lechat75 aime ce message
lechat75
Nombre de messages : 72 Age : 71 Localisation : MONTREUIL 93 Date d'inscription : 26/08/2018
Sujet: Re: Visualisation des fichiers CSV Mer 6 Sep 2023 - 9:50
Bonjour à tous ! Marc ton cahier des charges me paraît assez complet mais il manque la possibilité de déterminer la première ligne du fichier comme étant la ligne de titre de la colonne. très bien les modifs pour le formatage du tableau ! belle journée Philippe
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Visualisation des fichiers CSV Mer 6 Sep 2023 - 10:43
Bonjour Philippe (alias Lechat75)!
Citation :
il manque la possibilité de déterminer la première ligne du fichier comme étant la ligne de titre de la colonne.
C’est déjà le cas. Le remplissage est effectué automatiquement par le programme. Cette ligne est la première ligne sur fond gris du tableau. Elle est fixe ce qui permet de scroller les enregistrements tout en gardant la ligne de libellés visible. Mais je n’ai peut-être pas bien compris ta demande…
Bonne journée ensoleillée !
lechat75
Nombre de messages : 72 Age : 71 Localisation : MONTREUIL 93 Date d'inscription : 26/08/2018
Sujet: Re: Visualisation des fichiers CSV Jeu 7 Sep 2023 - 9:52
bonjour à tous ! @Marc en effet je n'avais pas bien exprimé ma demande c'était pour le cas où la première ligne ne contenait pas les noms des champs du fichier. bonne journée Philippe
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Visualisation des fichiers CSV Ven 8 Sep 2023 - 10:31
Bonjour à tous !
Lechat75 a écrit:
…c'était pour le cas où la première ligne ne contenait pas les noms des champs du fichier.
Pas de problème, un bouton (ou icône) supplémentaire pourrait permettre de déterminer le rôle de la première ligne : - Ligne classique d’enregistrement, c’est la commande GRID_ROW_FIXED N,0 - Ligne En-têtes de colonne, c’est la commande GRID_ROW_FIXED N,1
Je ferai ce soir l’ajout cette possibilité.
Bonne journée !
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Visualisation des fichiers CSV Sam 9 Sep 2023 - 7:54
Bonjour à tous !
Voici une version du lecteur de fichier CSV à laquelle j’ai ajouté une icône pour sélectionner la fonction de la première ligne du GRID.
Cette première ligne peut être, soit une ligne d’affichage d’en-têtes de colonnes, soit la première ligne des enregistrements.
Belle journée estivale à tous !
Code:
' Fichiers CSV ' Marc - Septembre 2023 ' Ecrit en langage PANORAMIC 0.9.29.i9
dim nomFichierEntrant$, cheminAccesFichierEntrant$, tailleFichierEntrant% dim nomColonne$(50), separateur$, nombreColonnes%, nombreEnregistrements%, numerotationLignes% dim numeroLigne%, nombreColonnesGrid%, titreColonnes%
if nomFichierEntrant$ = "_" or nomFichierEntrant$ ="" exit_sub end_if
' Bloquer toute action sur la fenêtre principale inactive 0
' Effacer le contenu de l'objet LIST réservé à l'affichage des noms de colonnes clear 25
' Effacer le contenu de l'objet DLIST de stockage du ficher CSV clear 102
' Effacer le contenu du tableau de variables des noms de colonnes for n% = 1 to 50 nomColonne$(n%) = "" next n%
' Effacer le contenu du GRID grid_clear 31,grid_row(31),grid_column(31)
' Afficher le nom du fichier entrant caption 15,file_extract_name$(nomFichierEntrant$)
' Afficher chemin d'accès au fichier entrant caption 16,file_extract_path$(nomFichierEntrant$)
' Afficher la taille du fichier entrant CSV filebin_open_read 1,nomfichierEntrant$ tailleFichierEntrant% = filebin_size(1) filebin_close 1 if tailleFichierEntrant% > 1 caption 19,formater$(tailleFichierEntrant%) + " octets" else caption 19,"0 octet" end_if
' Sortir du sous-programme si le fichier est vide if tailleFichierEntrant% < 1 caption 18,"0" caption 17,"0" active 0 exit_sub end_if
' Charger le fichier CSV dans le DLIST 102 file_load 102,nomFichierEntrant$
' Afficher le nombre d'enregistrements nombreEnregistrements% = count(102) if titreColonnes% = 1 caption 18,formater$(nombreEnregistrements% - 1) else caption 18,formater$(nombreEnregistrements%) end_if
' Choix du type de séparateur de colonne if text$(3) = " Virgule" separateur$ = chr$(44) else if text$(3) = " Point-virgule" separateur$ = chr$(59) else if text$(3) = " Tabulation" separateur$ = chr$(9) else if text$(3) = " Espace" separateur$ = chr$(32) end_if end_if end_if end_if
' Lire la première ligne du fichier entrant CSV enregistrement$ = item_read$(102,1)
' Extraire et afficher dans le LIST les noms de colonnes du fichier entrant CSV index% = 1 n% = 1 while index% <= len(enregistrement$) caractere$ = mid$(enregistrement$,index%,1) if caractere$ = separateur$ item_add 25,"Colonne " + str$(n%) + " : " + nomColonne$(n%) n% = n% + 1 if n% > 50 null% = message_warning_ok("Ce fichier comporte plus de 50 colonnes." + chr$(13) + "Seules les 50 premières seront affichées !") exit_while end_if else nomColonne$(n%) = nomColonne$(n%) + caractere$ end_if index% = index% + 1 end_while item_add 25,"Colonne " + str$(n%) + " : " + nomColonne$(n%)
' afficher le nombre de colonnes du fichier nombreColonnes% = n% caption 17,str$(nombreColonnes%)
remplirTableau()
' débloquer les actions sur la fenêtre principale active 0
' Donner le focus au GRID set_focus 31 end_sub ' ------------------------------------------------------------------------------ sub remplirTableau() dim_local ligne%, colonne%, enregistrement$, champ$, index% dim_local debutChamp%, finChamp%, null%
' Afficher la fenêtre d'attente show 200
' Ajuster le nombre de colonnes if numerotationlignes% = 0 nombreColonnesGrid% = nombreColonnes% else nombreColonnesGrid% = nombreColonnes% + 1 end_if grid_column 31,nombreColonnesGrid%
' Ajuster la largeur des colonnes ajusterLargeurColonnes()
' Ajuster le nombre de lignes if nombreEnregistrements% = 0 grid_row 31,2 grid_clear 31,2,nombreColonnesGrid% else grid_row 31,nombreEnregistrements% end_if
' Remplir la première ligne du GRID if numerotationLignes% = 0 for colonne% = 1 to nombreColonnes% grid_write 31,1,colonne%,nomColonne$(colonne%) next colonne% else if titreColonnes% = 1 grid_write 31,1,1,"N° ligne" else grid_write 31,1,1,"1" end_if for colonne% = 1 to nombreColonnes% grid_write 31,1,colonne% + 1,nomColonne$(colonne%) next colonne% end_if
' vider la variable système SCANCODE null% = scancode
' Remplir les cellules du tableau if nombreEnregistrements% > 1 index% = 1
' Interropmpre le traitement en cours par l'appui sur la touche Echap (ESC) if scancode = 27 null% = message_information_ok("Remplissage du tableau interrompu !") exit_for end_if
if titreColonnes% = 1 grid_write 31,1,1,"N° ligne" for numeroLigne% = 2 to grid_row(31) grid_write 31,numeroLigne%,1,str$(numeroLigne% - 1) next numeroLigne% else grid_clear 31,grid_row(31),1 grid_write 31,1,1,"1" for numeroLigne% = 2 to grid_row(31) grid_write 31,numeroLigne%,1,str$(numeroLigne%) next numeroLigne% end_if
active 0 return ' ------------------------------------------------------------------------------ numeroLigneOff: if numerotationLignes% = 0 return end_if
active 0 return ' ------------------------------------------------------------------------------ titreColonnesOnOff: if titreColonnes% = 0 titreColonnes% = 1 if grid_row(31) > 1 grid_row_fixed 31,1 end_if ' cacher l'objet LIST 25 : liste de colonnes show 25 ' cacher la légende du LIST 25 show 26 else titreColonnes% = 0 titreColonnes% = 0 grid_row_fixed 31,0 ' afficher l'objet LIST 25 : liste de colonnes hide 25 ' afficher la légende du lIST 25 hide 26 end_if
if grid_column_fixed(31) = 1 grid_clear 31,grid_row(31),1
if titreColonnes% = 1 grid_write 31,1,1,"N° ligne" for numeroLigne% = 2 to grid_row(31) grid_write 31,numeroLigne%,1,str$(numeroLigne% - 1) next numeroLigne% else grid_clear 31,grid_row(31),1 grid_write 31,1,1,"1" for numeroLigne% = 2 to grid_row(31) grid_write 31,numeroLigne%,1,str$(numeroLigne%) next numeroLigne% end_if end_if
chargerFichier() return ' ------------------------------------------------------------------------------ sub interfaceUtilisateur() ' Dimensionner la fenêtre principale width 0,width(0) - width_client(0) + 1100 height 0,height(0) - height_client(0) + 600
' Centrer sur l'écran la fenêtre principale top 0,(screen_y - height(0)) / 2 left 0,(screen_x - width(0)) / 2
' Interdire le redimensionnement de la fenêtre principale on_resize 0,redim0
' Légende du bandeau de la fenêtre principale caption 0,"PANORAMIC : Visualisation des fichiers CSV"
' Titre principal alpha 1 font_name 1,"Arial" font_size 1,24 top 1,15 caption 1,"Fichiers CSV"
' Centrer le titre principal horizontalement dans la fenêtre left 1,(width_client(0) - text_width(caption$(1),1)) / 2
' Créer un objet COMBO pour sélectionner le type de séparateur de champs (séparateur de colonnes) combo 3 width 3,120 top 3,146 left 3,40 item_add 3," Virgule" item_add 3," Point-virgule" item_add 3," Tabulation" item_add 3," Espace" text 3," Virgule" on_change 3,choixSeparateur
' Créer la légende du COMBO 3 (Type de séparateur) alpha 4 top 4,129 left 4,45 caption 4,"Séparateur :"
' créer légendes des caractéristiques du fichier CSV alpha 5 top 5,70 font_name 5,"Arial" font_size 5,10 font_bold 5 caption 5,"Nom du fichier CSV :" left 5,420 - text_width(caption$(5),5)
alpha 6 top 6,91 font_name 6,"Arial" font_size 6,10 font_bold 6 caption 6,"Chemin d'accès au fichier CSV :" left 6,420 - text_width(caption$(6),6)
alpha 7 top 7,112 font_size 7,10 font_name 7,"Arial" font_bold 7 caption 7,"Nombre de colonnes :" left 7,420 - text_width(caption$(7),7)
alpha 8 top 8,133 font_name 8,"Arial" font_size 8,10 font_bold 8 caption 8,"Nombre d'enregistrements :" left 8,420 - text_width(caption$(8),8)
alpha 9 top 9,154 font_name 9,"Arial" font_size 9,10 font_bold 9 caption 9,"Taille du fichier CSV :" left 9,420 - text_width(caption$(9),9)
' créer zones d'affichage des caractéristiques du fichier CSV alpha 15 top 15,70 font_size 15,10 left 15,425
alpha 16 top 16,91 font_size 16,10 left 16,425
alpha 17 top 17,112 font_size 17,10 left 17,425
alpha 18 top 18,133 font_size 18,10 left 18,425
alpha 19 top 19,154 font_size 19,10 left 19,425
' créer objet LIST 25 pour afficher la liste des noms de colonne list 25 top 25,58 left 25,800 width 25,200 height 25,110
' créer légende du LIST 25 (affichage des noms de colonne) alpha 26 top 26,43 left 26,805 caption 26,"Noms des colonnes :"
' créer tableau de visualisation du fichier grid 31 top 31,190 left 31,20 width 31,980 height 31,390 grid_column_fixed 31,0 grid_column 31,12 grid_row 31,15 grid_fixed_color 31,200,200,200 grid_column_sizing_on 31 nombreColonnes% = grid_column(31) ajusterLargeurColonnes() titreColonnes% = 1
' Créer les icônes creerIconeNumeroLigneOFF() creerIconeNumeroLigneON() creerIconeEgaliserColonnes() creerIconeTitreColonnesOnOff()
' Créer boîte de dialogue "Ouvrir fichier" open_dialog 100 ' Créer un filtre pour ne sélectionner que les fichiers CSV filter 100,"Fichier CSV|*.csv"
' Créer boîte de dialogue "Enregistrer fichier" save_dialog 101
' Créer un objet non visible DLIST pour stocker le fichier CSV dlist 102
' Créer fenêtre d'attente create_hide panel 200 width 200,350 height 200,250 left 200,(width_client(0) - width(200)) / 2 top 200,(height_client(0) - height(200)) / 2 color 200,0,0,0 create_show
alpha 201 parent 201,200 font_color 201,255,255,255 font_size 201,20 top 201,120 left 201,90
alpha 202 parent 202,200 top 202,220 left 202,180 font_color 202,255,255,255 font_size 202,12 caption 202,"ESC pour interrompre"
alpha 203 parent 203,200 font_size 203,17 font_color 203,255,255,255 top 203,40 left 203,45 caption 203,"Remplissage du tableau..." end_sub ' ------------------------------------------------------------------------------ sub creerIconeNumeroLigneON() dim_local point%
picture 37 width 37,42 height 37,42 top 37,210 left 37,1030 color 37,255,255,255 2d_target_is 37 2d_pen_color 0,0,0 2d_line 0,0,42,0 2d_line 0,0,0,42 2d_line 19,0,19,42 2d_line 0,14,42,14 2d_line 0,28,20,28 for point% = 19 to 41 step 2 2d_point point%,28 next point% 2d_line 8,20,11,17 2d_line 10,18,10,25 2d_point 8,33 2d_line 9,32,11,32 2d_line 11,33,11,35 2d_line 11,34,7,38 2d_line 8,38,12,38 2d_flood 13,8,200,200,200 2d_flood 31,6,200,200,200 2d_flood 2,17,200,200,200 2d_flood 2,31,200,200,200 cursor_point 37 hint 37,"Numéroter les lignes" on_click 37,numeroLigneOn end_sub ' ------------------------------------------------------------------------------ sub creerIconeNumeroLigneOFF() dim_local point%
picture 38 width 38,42 height 38,42 top 38,280 left 38,1030 color 38,255,255,255 2d_target_is 38 2d_pen_color 0,0,0 2d_line 0,0,42,0 2d_line 33,0,33,15 2d_line 0,0,0,42 2d_line 0,14,42,14 for point% = 1 to 41 step 2 2d_point point%,28 next point% for point% = 16 to 40 step 2 2d_point 33,point% next point% 2d_flood 3,3,200,200,200 2d_flood 35,3,200,200,200 cursor_point 38 hint 38,"Supprimer la numérotation des lignes" on_click 38,numeroLigneOff end_sub ' ------------------------------------------------------------------------------ sub creerIconeEgaliserColonnes() dim_local point%
picture 39 width 39,42 height 39,42 top 39,350 left 39,1030 color 39,255,255,255 2d_target_is 39 2d_pen_color 0,0,0 2d_line 0,0,42,0 2d_line 0,14,42,14 2d_flood 2,2,200,200,200 2d_line 17,0,17,15 2d_line 34,0,34,15 2d_line 0,0,0,42 2d_line 2,7,6,3 2d_line 2,7,6,11 2d_line 4,7,14,7 2d_line 15,7,11,3 2d_line 15,7,11,11 image 41 2d_image_copy 41,1,1,17,14 2d_image_paste 41,18,1 2d_image_paste 41,35,1 for point% = 1 to 42 step 2 2d_point point%,28 next point% for point% = 14 to 41 step 2 2d_point 17,point% next point% for point% = 14 to 41 step 2 2d_point 34,point% next point% cursor_point 39 hint 39,"Egaliser la largeur des colonnes" on_click 39,egaliserColonnes end_sub ' ------------------------------------------------------------------------------ sub creerIconeTitreColonnesOnOff() dim_local point%
picture 40 width 40,42 height 40,42 top 40,420 left 40,1030 color 40,255,255,255 2d_target_is 40 2d_pen_color 180,180,180 2d_line 0,16,42,0 2d_flood 2,2,200,200,200 2d_pen_color 0,0,0 2d_line 0,0,42,0 2d_line 0,0,0,42 for point% = 1 to 41 step 2 2d_point point%,16 next point% for point% = 1 to 41 step 2 2d_point point%,32 next point% 2d_line 20,3,23,3 2d_line 19,4,24,4 2d_line 18,5,20,5 2d_point 18,6 2d_line 22,5,25,5 2d_line 23,6,25,6 2d_line 23,7,25,7 2d_line 22,8,24,8 2d_line 21,9,23,9 2d_line 21,10,23,10 2d_rectangle 21,12,23,14 cursor_point 40 hint 40,"Titre des colonnes ON / OFF" on_click 40,titreColonnesOnOff end_sub ' ------------------------------------------------------------------------------ choixSeparateur: ' Choix du séparateur de colonnes
if nomFichierEntrant$ = "_" or nomFichierEntrant$ = "" return end_if
set_focus 0
chargerFichier() return ' ------------------------------------------------------------------------------ fnc formater$(valeur%) ' Formater un nombre avec séparateur de milliers dim_local p%, nombre$
result nombre$ end_fnc ' ------------------------------------------------------------------------------ redim0: ' interdire le redimensionnement de la fenêtre principale inactive 0 width 0,width(0) - width_client(0) + 1100 height 0,height(0) - height_client(0) + 600 active 0 return
Le lecteur de fichier CSV en mode "fichier sans en-têtes" et avec la numérotation des lignes :
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Visualisation des fichiers CSV Dim 10 Sep 2023 - 22:55
Bonjour à tous !
Suite aux précédents prototypes du lecteur de fichier CSV, voici la version finale.
Je l’ai baptisée Panoramic CSV Reader.
- La fenêtre principale est redimensionnable ; - La largeur de chaque colonne est ajustable ; - Le fichier CSV peut contenir ou ne pas contenir d’en-têtes de colonnes ; - Le caractère de séparation de colonnes est paramétrable. Virgule, point-virgule, tabulation ou espace sont proposés ; - Les lignes sont numérotées ; - Une icône permet d’étaler uniformément les colonnes sur toute la largeur disponible ; - Un clic sur le logo Panoramic affiche l’à-propos.
N’hésitez pas à me dire si vous rencontrez une erreur ou si vous avez une suggestion quelconque.
En attendant, je continue la version EDITEUR de fichier CSV.
A bientôt !
Code:
' Lecteur Fichiers CSV ' Marc - Septembre 2023 ' Ecrit en langage PANORAMIC 0.9.29.i9
dim nomFichierEntrant$, tailleFichierEntrant% dim separateur$, nombreColonnes%, nombreEnregistrements% dim numeroLigne%, nombreColonnesGrid%, titreColonnes%
if nomFichierEntrant$ = "_" or nomFichierEntrant$ ="" exit_sub end_if
' Bloquer toute action sur la fenêtre principale inactive 0
' Effacer le contenu de l'objet DLIST de stockage du ficher CSV clear 102
' Effacer le contenu du GRID grid_clear 31,grid_row(31),grid_column(31)
' Afficher le nom du fichier caption 15,file_extract_name$(nomFichierEntrant$)
' Afficher chemin d'accès au fichier caption 16,file_extract_path$(nomFichierEntrant$)
' Afficher la taille du fichier CSV filebin_open_read 1,nomfichierEntrant$ tailleFichierEntrant% = filebin_size(1) filebin_close 1 if tailleFichierEntrant% > 1 caption 19,formater$(tailleFichierEntrant%) + " octets" else caption 19,"0 octet" end_if
' Sortir du sous-programme si le fichier est vide if tailleFichierEntrant% < 1 caption 18,"0" caption 17,"0" active 0 exit_sub end_if
' Charger le fichier CSV dans le DLIST 102 file_load 102,nomFichierEntrant$
' Afficher le nombre d'enregistrements nombreEnregistrements% = count(102) if titreColonnes% = 1 caption 18,formater$(nombreEnregistrements% - 1) else caption 18,formater$(nombreEnregistrements%) end_if
' Choix du type de séparateur de colonne if text$(3) = " Virgule" separateur$ = chr$(44) else if text$(3) = " Point-virgule" separateur$ = chr$(59) else if text$(3) = " Tabulation" separateur$ = chr$(9) else if text$(3) = " Espace" separateur$ = chr$(32) end_if end_if end_if end_if
' Lire la première ligne du fichier enregistrement$ = item_read$(102,1)
' Déterminer le nombre de colonnes du fichier index% = 1 nombreColonnes% = 1 while index% <= len(enregistrement$) caractere$ = mid$(enregistrement$,index%,1) if caractere$ = separateur$ nombreColonnes% = nombreColonnes% + 1 if nombreColonnes% > 50 null% = message_warning_ok("Ce fichier comporte plus de 50 colonnes." + chr$(13) + "Seules les 50 premières seront affichées !") exit_while end_if end_if index% = index% + 1 end_while
' afficher le nombre de colonnes du fichier caption 17,str$(nombreColonnes%)
remplirTableau()
' débloquer les actions sur la fenêtre principale active 0
' Donner le focus au GRID set_focus 31 end_sub ' ------------------------------------------------------------------------------ sub remplirTableau() dim_local ligne%, colonne%, enregistrement$, champ$, index% dim_local debutChamp%, finChamp%, null%
' Afficher la fenêtre d'attente show 200
' Ajuster le nombre de colonnes nombreColonnesGrid% = nombreColonnes% + 1 grid_column 31,nombreColonnesGrid%
' Ajuster la largeur des colonnes ajusterLargeurColonnes()
' Ajuster le nombre de lignes if nombreEnregistrements% < 2 grid_row 31,2 grid_clear 31,2,nombreColonnesGrid% else grid_row 31,nombreEnregistrements% end_if
' vider la variable système SCANCODE null% = scancode
' Remplir les cellules du tableau if nombreEnregistrements% > 0 index% = 1
' Interropmpre le traitement en cours par l'appui sur la touche Echap (ESC) if scancode = 27 null% = message_information_ok("Remplissage du tableau interrompu !") exit_for end_if
' Rendre non visible la fenêtre d'attente hide 200 end_sub ' ------------------------------------------------------------------------------ egaliserColonnes: ' Rendre non visible la fenêtre à-propos hide 50
ajusterLargeurColonnes() return ' ------------------------------------------------------------------------------ sub ajusterLargeurColonnes() grid_column_width 31,(width(31)-70) / nombreColonnes% grid_one_column_width 31,1,40 end_sub ' ------------------------------------------------------------------------------ choixEntetes: ' Rendre non visible la fenêtre à-propos hide 50
if text$(25) = " Avec en-têtes" titreColonnes% = 1 if grid_row(31) > 1 grid_row_fixed 31,1 end_if else if text$(25) = " Sans en-têtes" titreColonnes% = 0 grid_row_fixed 31,0 else return end_if end_if
chargerFichier() return ' ------------------------------------------------------------------------------ sub interfaceUtilisateur() dim_local point%
' Dimensionner la fenêtre principale width 0,width(0) - width_client(0) + 1020 height 0,height(0) - height_client(0) + 600
' Centrer la fenêtre principale sur l'écran top 0,(screen_y - height(0)) / 2 left 0,(screen_x - width(0)) / 2
' Redimensionner la fenêtre principale on_resize 0,redim0
' Légende du bandeau de la fenêtre principale caption 0,"PANORAMIC : Visualisation des fichiers CSV"
' Rendre non visible la fenêtre à-propos on_click 0,fermerAPropos
' EDIT non visible servant de refuge pour le focus edit 99 width 99,1 height 99,1
creerTitrePrincipal()
creerBoutonOuvrirFichier()
creerComboSelectionSeparateur()
creerZoneAffichageCaracteristiquesfichier()
creerCombochoixEntetes()
creerIconeEgaliserColonnes()
creerLogoPanoramic()
creerPictogrammeRedimensionnement()
creerGrid()
creerFenetreAPropos()
creerFenetrePatientez()
' Créer boîte de dialogue "Ouvrir fichier" open_dialog 100
' Créer un filtre pour ne sélectionner que les fichiers CSV filter 100,"Fichier CSV|*.csv"
' Créer un objet non visible DLIST pour charger le fichier CSV dlist 102 end_sub ' ------------------------------------------------------------------------------ sub creerTitrePrincipal() alpha 1 font_name 1,"Arial" font_size 1,24 font_color 1,50,50,150 top 1,15 caption 1,"Panoramic CSV Reader"
' Centrer le titre principal horizontalement dans la fenêtre left 1,(width_client(0) - text_width(caption$(1),1)) / 2
' Rendre non visible la fenêtre à-propos on_click 1,fermerAPropos end_sub ' ------------------------------------------------------------------------------ sub creerBoutonOuvrirFichier() ' Créer bouton "Charger fichier CSV" button_picture 2 top 2,30 left 2,40 width 2,120 height 2,60 button_picture_target_is_picture width 2,0 height 2,0 font_name 2,"Calibri" font_size 2,13 caption 2,"Charger un" + chr$(13) + "fichier CSV" on_click 2,ouvrirFichier end_sub ' ------------------------------------------------------------------------------ sub creerComboSelectionSeparateur() ' Créer un objet COMBO pour sélectionner le type de séparateur de champs (séparateur de colonnes) combo 3 width 3,120 top 3,120 left 3,40 item_add 3," Virgule" item_add 3," Point-virgule" item_add 3," Tabulation" item_add 3," Espace" text 3," Virgule" on_change 3,choixSeparateur
' Créer la légende du COMBO 3 (Type de séparateur) alpha 4 top 4,105 left 4,45 caption 4,"Séparateur :" end_sub ' ------------------------------------------------------------------------------ sub creerZoneAffichageCaracteristiquesfichier() ' créer légendes des caractéristiques du fichier CSV alpha 5 top 5,70 font_name 5,"Arial" font_size 5,10 font_bold 5 caption 5,"Nom du fichier :" left 5,420 - text_width(caption$(5),5) ' Rendre non visible la fenêtre à-propos on_click 5,fermerAPropos
alpha 6 top 6,91 font_name 6,"Arial" font_size 6,10 font_bold 6 caption 6,"Chemin d'accès au fichier :" left 6,420 - text_width(caption$(6),6) ' Rendre non visible la fenêtre à-propos on_click 6,fermerAPropos
alpha 7 top 7,112 font_size 7,10 font_name 7,"Arial" font_bold 7 caption 7,"Nombre de colonnes :" left 7,420 - text_width(caption$(7),7) ' Rendre non visible la fenêtre à-propos on_click 7,fermerAPropos
alpha 8 top 8,133 font_name 8,"Arial" font_size 8,10 font_bold 8 caption 8,"Nombre d'enregistrements :" left 8,420 - text_width(caption$(8),8) ' Rendre non visible la fenêtre à-propos on_click 8,fermerAPropos
alpha 9 top 9,154 font_name 9,"Arial" font_size 9,10 font_bold 9 caption 9,"Taille du fichier :" left 9,420 - text_width(caption$(9),9) ' Rendre non visible la fenêtre à-propos on_click 9,fermerAPropos
' Créer le champ d'affichage pour le nom du fichier alpha 15 top 15,70 font_size 15,10 left 15,425 ' Rendre non visible la fenêtre à-propos on_click 15,fermerAPropos
' Créer le champ d'affichage pour le chemin d'accès au fichier alpha 16 top 16,91 font_size 16,10 left 16,425 ' Rendre non visible la fenêtre à-propos on_click 16,fermerAPropos
' Créer le champ d'affichage pour le nombre de colonnes alpha 17 top 17,112 font_size 17,10 left 17,425 ' Rendre non visible la fenêtre à-propos on_click 17,fermerAPropos
' Créer le champ d'affichage pour le nombre d'enregistrements alpha 18 top 18,133 font_size 18,10 left 18,425 ' Rendre non visible la fenêtre à-propos on_click 18,fermerAPropos
' Créer le champ d'affichage pour la taille du fichier alpha 19 top 19,154 font_size 19,10 left 19,425 ' Rendre non visible la fenêtre à-propos on_click 19,fermerAPropos
end_sub ' ------------------------------------------------------------------------------ sub creerComboChoixEntetes() ' Creer COMBO pour le choix des en-têtes oui / non combo 25 width 25,120 top 25,160 left 25,40 item_add 25," Avec en-têtes" item_add 25," Sans en-têtes" text 25," Avec en-têtes" on_change 25,choixEntetes end_sub ' ------------------------------------------------------------------------------ sub creerIconeEgaliserColonnes() dim_local point%
' Créer une icône pour lancer l'égalisation des colonnes picture 39 width 39,42 height 39,42 top 39,139 left 39,width_client(0) - 82 color 39,255,255,255 2d_target_is 39 2d_pen_color 0,0,0 2d_line 0,0,42,0 2d_line 0,14,42,14 2d_flood 2,2,200,200,200 2d_line 17,0,17,15 2d_line 34,0,34,15 2d_line 0,0,0,42 2d_line 2,7,6,3 2d_line 2,7,6,11 2d_line 4,7,14,7 2d_line 15,7,11,3 2d_line 15,7,11,11 image 41 2d_image_copy 41,1,1,17,14 2d_image_paste 41,18,1 2d_image_paste 41,35,1 for point% = 1 to 42 step 2 2d_point point%,28 next point% for point% = 14 to 41 step 2 2d_point 17,point% next point% for point% = 14 to 41 step 2 2d_point 34,point% next point% cursor_point 39 hint 39,"Egaliser la largeur des colonnes" on_click 39,egaliserColonnes end_sub ' ------------------------------------------------------------------------------ sub creerGrid() ' créer la grille de visualisation des enregistrements du fichier grid 31 top 31,200 left 31,20 width 31,width_client(0) - 40 height 31,height_client(0) - 220 grid_column_fixed 31,1 grid_column 31,12 grid_row 31,15 grid_fixed_color 31,200,200,200 grid_column_sizing_on 31 nombreColonnes% = grid_column(31) ajusterLargeurColonnes() titreColonnes% = 1
' Rendre non visible la fenêtre à-propos on_click 31,fermerAPropos end_sub ' ------------------------------------------------------------------------------ sub creerLogoPanoramic() picture 37 width 37,59 height 37,59 top 37,36 left 37,width_client(0) - 91 color 37,255,255,255 2d_target_is 37 2d_pen_color 255,0,0 2d_pen_width 3 2d_circle 29,29,25 2d_circle 29,29,19 2d_pen_color 50,50,150 2d_pen_width 1 2d_line 20,19,36,19 2d_point 22,20 2d_line 32,20,38,20 2d_line 33,21,39,21 2d_line 33,22,40,22 2d_fill_color 50,50,150 2d_rectangle 23,19,29,39 2d_rectangle 34,23,40,26 2d_line 33,26,40,26 2d_line 33,27,39,27 2d_line 32,28,38,28 2d_line 29,29,36,29 2d_line 22,37,31,37 2d_line 20,38,33,38 2d_pen_color 170,170,170 2d_line 2,58,59,58 2d_line 58,2,58,59 cursor_point 37 hint 37,"A propos" on_click 37,aPropos end_sub ' ------------------------------------------------------------------------------ sub creerPictogrammeRedimensionnement() ' Créer un pictogramme dans le coin inférieur droit de la fenêtre ' pour indiquer la possibilté de redimensionner la fenêtre proncipale picture 35 width 35,13 height 35,13 color 35,240,240,240 top 35,height_client(0) - 18 left 35,width_client(0) - 18 2d_target_is 35 2d_pen_color 50,50,50 2d_line 0,0,8,0 2d_line 0,1,6,1 2d_line 0,0,0,8 2d_line 1,0,1,6 2d_line 12,12,12,4 2d_line 11,12,11,6 2d_line 12,12,4,12 2d_line 12,11,6,11 2d_line 0,0,12,12 2d_pen_color 120,120,120 2d_line 2,1,12,11 2d_line 1,2,11,12
' Rendre non visible la fenêtre à-propos on_click 35,fermerAPropos end_sub ' ------------------------------------------------------------------------------ sub creerFenetreAPropos() dim_local i%, j%, y%, x
' bordure de la fenêtre à-propos 2d_pen_color 240,240,240 2d_fill_off 2d_rectangle 0,0,420,240 2d_pen_color 70,70,70 2d_line 3,239,420,239 2d_line 419,239,419,3
alpha 52 parent 52,50 top 52,20 left 52,32 color 52,255,255,255 font_name 52,"Calibri" font_size 52,19 caption 52,"PANORAMIC" on_click 52,fermerAPropos
alpha 53 parent 53,50 top 53,50 left 53,30 color 53,255,255,255 font_name 53,"Calibri" font_size 53,21 caption 53,"CSV Reader" on_click 53,fermerAPropos
alpha 54 parent 54,50 top 54,120 left 54,150 color 54,255,255,255 font_name 54,"Calibri" font_size 54,14 caption 54,"Lecteur de fichiers CSV" on_click 54,fermerAPropos
alpha 55 parent 55,50 top 55,145 left 55,150 color 55,255,255,255 font_name 55,"Calibri" font_size 55,12 caption 55,"Ecrit par Marc en langage PANORAMIC" on_click 55,fermerAPropos
alpha 56 parent 56,50 top 56,166 left 56,150 color 56,255,255,255 font_name 56,"Calibri" font_size 56,12 caption 56,"Septembre 2023" on_click 56,fermerAPropos
alpha 57 parent 57,50 top 57,215 left 57,250 color 57,255,255,255 font_name 57,"Arial" font_size 57,10 font_color 57,0,0,255 caption 57,"https://panoramic.1fr1.net/" cursor_point 57 on_click 57,goForumPanoramic end_sub ' ------------------------------------------------------------------------------ sub creerFenetrePatientez() ' Créer fenêtre d'attente create_hide panel 200 width 200,350 height 200,250 left 200,(width_client(0) - width(200)) / 2 top 200,(height_client(0) - height(200)) / 2 color 200,0,0,0 create_show
alpha 201 parent 201,200 font_color 201,255,255,255 font_size 201,20 top 201,120 left 201,90
alpha 202 parent 202,200 top 202,220 left 202,180 font_color 202,255,255,255 font_size 202,12 caption 202,"ESC pour interrompre"
alpha 203 parent 203,200 font_size 203,17 font_color 203,255,255,255 top 203,40 left 203,45 caption 203,"Remplissage du tableau..." end_sub ' ------------------------------------------------------------------------------ aPropos: ' Centrer sur l'écran la fenêtre A Propos left 50,(width_client(0) - width(50)) / 2 top 50,(height_client(0) - height(50)) / 2
' rendre visible la fenêtre A Propos show 50 return ' ------------------------------------------------------------------------------ fermerAPropos: set_focus 99
' rendre invisible la fenêtre A Propos hide 50 return ' ------------------------------------------------------------------------------ choixSeparateur: ' Choix du séparateur de colonnes
' Rendre non visible la fenêtre à-propos hide 50
if nomFichierEntrant$ = "_" or nomFichierEntrant$ = "" return end_if
set_focus 0
chargerFichier() return ' ------------------------------------------------------------------------------ fnc formater$(valeur%) ' Formater un nombre avec séparateur de milliers dim_local p%, nombre$