| Un vrai tableur pour Panoramic dans une DLL | |
|
|
|
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Un vrai tableur pour Panoramic dans une DLL Mar 3 Avr 2012 - 10:25 | |
| Comme je l'ai annoncé sur un autre fil de discussion, je suis en train de réaliser un vrai tableur, accessible par Panoramic via une DLL.
Les difficultés de principe sont résolues. Maintenant, il s'agit d'ajouter des fonctionnalités pour que cela soit utilisable. Je pars de "Simple SpreadSheet" qui est gratuit et, le plus important, distribué en sources Delphi libres de droit. Je l'ai d'abord rendu opérationnel sous Delphi 6 qui est ma plateforme de développement. Puis, j'ai apporté une modification importante: dans ma version, les cellules à formules sont recalculées automatiquement, à chaque modification, chaque frappe dans une cellule. A l'origine, on saisissait les modifications, puis il fallait choisir une fonction dans un menu pour tout recalculer. Ma version ressemble plus au fonctionnement d'Excel.
Etat actuel du projet: - le tableur fonctionne en stand-alone - j'ai fait une DLL qui contient pour le moment une fonction: res% = DLL_CALL1("LancerTableur",flag%) Cette fonction lance le tableur dont la fenêtre s'ouvre. Toutes les fonctionnalités sont accessibles dans le tableur, y compris l'enregistrement du tableau, la réouverture etc. La variable flag% permet de choisir le mode de lancement: la valeur 1 lance le tableur en mode modal (usage en interactif, retour au programme Panoramic à la fermeture du tableur), et la valeur 0 le lance en mode non-modal (pour pouvoir le piloter à partir du programme Panoramic)
Evolutions en cours: principalement, ajout de fonctions dans la DLL pour télécommander les fonctions du tableur.: - création,ouverture/enregistrement d'un tableau - charger des données dans une cellule, une ligne, une colonne ou un rectangle - lire les données d'une cellule, d'une ligne, d'une colonne ou d'un rectangle - charger des formules dans une cellule, une ligne, une colonne ou un rectangle - lire les formules d'une cellule, d'une ligne, d'une colonne ou d'un rectangle - effacer une cellule, une ligne, une colonne ou un rectangle - insérer une cellule, une ligne ou une colonne - supprimer une cellule, une ligne ou une colonne - changer les attributs (couleur, police, ...) d'une cellule, d'une ligne, d'une colonne ou d'un rectangle
On voit, il y a du boulot. Mais je suis confiant: la base est saine, et il n'y a plus de difficulté de principe.
Et, comme je l'ai déjà dit, tout est libre de droit, le tableur ainsi que ma DLL. Je mettrai également les sources complètes à disposition.
Donc, à bientôt pour une première version opérationnelle ! | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mar 3 Avr 2012 - 10:30 | |
| Génial Klaus Bon courage, c'est super ça. En plus si tu bosse bien, c'est typiquement le type de programme qui peut faire de la pub (sous reserve que l'interface Panoramic apporte quelque chose, sans quoi ça ferait de la pub pour Delphi 6 ....) mais on s'en fou, on aime Panoramic, ça ne nous empèche pas d'aimer AUSSI d'autres langages ^^ | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mar 3 Avr 2012 - 10:52 | |
| Eh bien, tu m'encourages ! Merci ! Voici une première version pour évaluer le projet. On peut le télécharger ici: Site: http://www.mydrive.ch/Identifiant: panoramic@klausgunther Mot de passe: panoramic123 dans le répertoire TAbleurDLL. Il y a trois fichiers: TableurDLL.dll, Test TableurDLL.bas et sss.rtf. Les noms parlent pour eux-mêmes (sss veut dire "Simple SpreadSheet"). Le fichier sss.rtf contient une doc simpliste, mais qui contient l'ensemble des fonctions utilisables dans les cellules. Pour le moment, deux fonctions: - lancement en mode modal (arrêt par le menu file/exit) - lancement en mode non-modal (arrêt par le bouton Arrêt dans le programme Panoramic) Le tableur est en anglais, mais à terme, il y aura une internationalisation complète, avec des fichiers de langage. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mar 3 Avr 2012 - 11:44 | |
| J'essaye de tester ce soir C'est prometteur | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mar 3 Avr 2012 - 16:06 | |
| Nouvelle version: toutes les fonctions du menu "File" sont disponibles comme fonctions dans la DLL, en mode non-modal
Toute la documentation est dans le fichier TableurDLL.rtf dans le répertoire de téléchargement !
EDIT
La liste des fonctions disponibles a été étendue à toutes les possibilités des menus du tableur, sauf: - insérer des cellules - supprimer des cellules - aide
Pour les deux premières fonctions, il y a un bug dans le logiciel du tableur que je dois d'abord corriger. Et l'aide nécessite un peu plus de gymnastique.
EDIT
Nouvelles fonctions pour charger et lire les données et formules d'une cellule
EDIT
Ajout du mode de sauvegarde en format CSV
Dernière édition par Klaus le Mer 4 Avr 2012 - 9:25, édité 2 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mar 3 Avr 2012 - 21:29 | |
| Avec les deux dernières fonctions, nous avons maintenant un tableur vraiment utilisable. On peut charger par programme, des données et des formules, et on peut lire par programme, le contenu des cellules, données et formules.
| |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mar 3 Avr 2012 - 22:14 | |
| Super boulot Klaus, ça marche impeccable et très bon programme de test Jusqu'à présent tout ce que j'ai testé à fonctionné dans le tableur et les interactions par le panneau de commandes. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mar 3 Avr 2012 - 22:54 | |
| 2 petits mémos pour les opérateurs / fonctions extraits de la doc (C'est aligné chez moi sous notepad, j'espère que ça vous sera utile sans trop de modifs, ça peut peut être changer, selon les systèmes ...) - Code:
-
Operator Meaning Example
+ Addition A11 + 10
Subtraction (or negation) 12 - E2
* Multiplication F1 * F10
/ Division B2 / C2
! Factorial E3!
% Percentage H5%
^ Exponentiation D4 ^ 2
REM Division remainder only B2 REM C2
MOD Modulus division B2 MOD C2
MIN Return left side value if greater than the right side value, otherwise, B3 MIN C3 return the right side value
MAX Return left side value if less than the right side value, otherwise, B3 MAX C3 return the right side value
SHL Treating value as an integer, shift bits left the number of times specified. Z5 SHL 4 This is a binary division.
SHR Treating value as an integer, shift bits right the number of times specified. Z5 SHR 4 This is a binary multiplication.
- Code:
-
Function name Description Example
ABS Absolute value ABS(-5)
COUNT Counts the number of non-blank cells in the specified range(s). COUNT(A3:A9) See following description of cell ranges. DEG Radian to degree DEG(90)
EXP E raised to the specified power EXP(2)
FIB Fibonacci sequence FIB(2)
INT Integer INT(2.5)
LOG Natural logrithm LOG(3)
PI 3.14159265... PI
RAD Degree to radian RAD(5)
RND Random number between 0 and the specified value. RND(1000)
SGN Sign (returns -1 if negative, 1 if positive, or 0 if 0). SGN(0)
SQR Square root SQR(9)
SUM Adds up the non-blank cells in the specified range(s). See following SUM(Z5:Z9) description of cell ranges. SUM(A:A B2:B29 C1:D4) | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mer 4 Avr 2012 - 7:56 | |
| Petite question Klaus, si j'ai bien compris, tu recode le tableur sous forme de DLL en ajoutant progressivement des fonctions ? Si tu l'a déjà établies, peux-tu nous indiquer ta roadmap (jusqu'où tu veux aller, ce que tu à prévu d'ajouter, etc ?) PS: Je sais que je suis curieux ... mais si tu ne sais pas encore, pas de problème non plus, je ne perd rien à poser la question | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mer 4 Avr 2012 - 8:36 | |
| Ce que j'ai fait: - j'ai pris le produit Simple SpreadSheet et je l'ai intégré tel quel dans une DLL - j'ai créé des fonctions DLL permettant de gérer toutes les fonctions du menu de ce tableur - j'ai créé des fonctions permettant de lire et écrire les données et les formules des cellules - la possibilité de sauvegarder en format CSV avec séparateur ";" - coloration des cellules - impression de la couleur des cellules - sélection de plages de cellules par programme - sélection de lignes par programme - sélection de colonnes par programme - coloration des cellules sélectionnées - impression des cellules coloriées même s'il n'y a pas de données - définition de bordures pour une plage sélectionnée de cellules, avec choix sélectif des 4 côtés - choix de la couleur de la bordure pour une plage sélectionnée de cellules - impression des bordures définies - correction du bug de représentation des valeurs décimales - une fonction permettant de choisir certaines options du tableur - sauvegarde et restauration de toutes les informations du tableau (données, formules, couleurs, bordures) - fonction permettant de déclencher un évènement ON-CLICK d'un objet Panoramic EDIT si le contenu d'une cellule spécifique a changé. - protection globale d'une table en saisie - protection d'une plage de cellules en saisie - une fonction permettant de bloquer/débloquer l'éditeur de cellules par le menu - une case à cocher "cellule protégée" dans l'éditeur de cellules - multi-langage (à ce jour, anglais, français et allemand) - possibilité de de gérer des fonctions et opérateurs de chaînes de caractères -- Fonctions: S$(lig;col) $CMD(lig;col) CHR$(n) DATE$ TIME$ $DATE(chaîne) $TIME(chaîne) CON$(s1;...;s10) CUT$(chaine,gauche,droite) SET$(chaîne,lig,col) $LEN(chaine) -- Opérateurs de chaînes de caractères: | " - Opérateurs numériques: # - IMPORTANT: les cadres des cellules sont maintenant visibles à l'écran ! - l'éditeur de cellules avec un sélecteur de couleurs pour la cellule et les bordures. - correction d'un bug avec l'aide de A. Conroy
Donc, à ce niveau, c'est entièrement opérationnel.
Ce que je viens d'ajouter: - nouvelle fonction IF(cond,sivrai,sifaux) - nouveaux opérateurs = < > - nouvelle propriété de cellule "données invisibles" - nouvelle fonction DLL res%=dll_call1("AfficherPlageTableur",flag%) - avec opérateur | et fonction CON$, on peut utiliser indifféremment des valeurs numériques et chaînes - possibilité de constantes de chaînes de caractères sous forme "..."
Les fonctions acceptant 2 ou plusieurs paramètres ont leurs paramètres séparés par des ";".
Dans le répertoire de téléchargement, la doc sss.doc a été mise à jour. La DLL est à jour. Un fichier "Test fonctions chaînes.sss" est présent permettant de voir le résultat. Un fichier SSS1.exe est la version "stand-alone" du tableur.
Ce que je prévois de faire: - polices et attributs des cellules
A plus long terme: - étudier l'extension de la palette des fonctions disponibles
Dernière édition par Klaus le Ven 20 Avr 2012 - 20:28, édité 20 fois | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mer 4 Avr 2012 - 9:49 | |
| Merci pour ta réponse Klaus. La mise en forme serait bien pratique, en effet Un truc aussi que je me demande par rapport à ça pour dans ton projet, savoir si tu pense pouvoir faire des "formats de cellule sur condition" (type mise en forme conditionnelle) Par exemple ce serait pour la collonne A si la cellule contient "vrai" passer le fond en vert si la cellule contient "faux" passer le fond en rouge (ou si la cellule >= 0, vert, sinon rouge, par exemple) Une fonction qui serait sympa à ajouter serait le Si(condition;formule si vrai; formule si faux) Après, il y aurait d'autres fonctions bien sûr, mais celle ci, de base c'est une fonction bien pratique Ce qui serait sympa aussi c'est l'interfacage de ta DLL pour les graphiques avec la DLL du tableur (Pas besoin de modifier les fonctions, puisque l'on peut travailler dans Panoramic les valeurs à passer pour le graphique, mais ce serait sympa de n'avoir qu'une DLL d'ouverte si l'on travaille en mode tableur) PS: je sais que tu ne t'inquiètes pas sur le fait que tu puisses compter sur nous pour avoir des idées, après comme d'habitude, tu peux ne prendre dadans que ce qui t'interesses | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mer 4 Avr 2012 - 20:23 | |
| Je viens de rajouter la notion de protection dans la roadmap.
Je vois bien l'orientation que prennent tes suggestions. Fonctions conditionnelles, graphismes, ... On tend vers Excel. Bon, j'avoue que j'y ai déjà vaguement pensé, mais pour le moment, je préfère m'en tenir à la roadmap pour laquelle les choses sont déjà beaucoup plus claires et partiellement avancées. Mais continuons à empiler des idées - ce n'est pas perdu. | |
|
| |
Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mer 4 Avr 2012 - 20:38 | |
| @ Klaus
Nicht vergessen die Auslagerungsdatei, sonst ist die Grösse sehr begrenzt. Keine Kritik, nur ein Hiweis.
Severin | |
|
| |
Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mer 4 Avr 2012 - 20:45 | |
| wau,wau,wau.
Das fehlt in Panoramic. Wenn das Programm mit grossen Datenmengen arbeitet. Dann auslagern in Auslagerungsdatei.
Severin
wow, wow, wow.
Le Panoramique manquant. Si le programme est de travailler avec de grandes quantités de données. Puis basculer vers le fichier d'échange.
Severin | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mer 4 Avr 2012 - 22:18 | |
| @Severin: Ein "spreadsheet" kann bis zu 26 Kolonnen haben, sowie theoretisch 2 Milliarden Zeilen. Gross genug ?
Wer mehr braucht, muss halt Excel oder OpenOffice nehmen... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mer 4 Avr 2012 - 22:31 | |
| Nouvelle version: une nouvelle fonction permet de colorier une cellule au choix, avec une couleur RGB au choix. Le programme de démo permet de colorier 3 cellules en bleu et une ligne en jaune, pour montrer le principe.
La doc est à jour.
| |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Mer 4 Avr 2012 - 23:53 | |
| J'ai amélioré mon programme de démo: je lui ai ajoute un bouton "Facture". En cliquant sur ce bouton, le tableur s'ouvre avec un modèle simple de facture en 4 lignes. On peut saisir tous les champs non colorés de la facture: référence, libellé et quantité. Le prix unitaire est prédéfini, mais on peut le changer. Dès que l'on touche à un prix unitaire ou une quantité, le total de la ligne ainsi que le total général. Lorsqu'on utilise le bouton "Arrêt" pour stopper le tableur, le programme affiche le total général.
Ceci laisse entrevoir les possibilités de cet outil !
EDIT
A cette occasion, je me suis rendu compte qu'il y a un problème avec les valeurs flottantes - c'est pourquoi je n'ai mis que des prix en entiers, sans centimes. Je tâcherai de résoudre ce problème. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Jeu 5 Avr 2012 - 6:21 | |
| Nickel, la facture est joli Klaus (donc pratique aussi pour voir les résultats). En effet, dommage qu'il ne prenne pas en compte la virgule.
| |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Jeu 5 Avr 2012 - 9:05 | |
| J'ai modifié le tableur de sorte qu'à l'impression, on voit aussi les couleurs des cellules.
Pour le moment, seules les cellules non-vides sont imprimées. Pour ces cellules, on voit le texte et maintenant la couleur, mais pas de cadre. Alors, il y a une nouvelle fonction que j'utilise au niveau de la facture: OptionsTableur. Cette fonction est appelée à recevoir d'autres paramètres, mais pour le moment elle reçoit un seul paramètre permettant l'autorisation de l'impression d'un cadre autour des cellules non-vides. C'est utilisé au niveau de la facture. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Jeu 5 Avr 2012 - 9:34 | |
| Pour tes options, je te propose aussi de pouvoir définir la zone d'impression et si l'on veut afficher la grille même pour les cellules vides dans cette zone. (Ca peut être utile ou plus "joli" selon les cas de figures comme par exemple une tableau à l'année quand l'année n'est pas complèt. Le fait de voir certaines cases et pas d'autres peut être troublant ou en tout cas, "moche" à l'impression) | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Jeu 5 Avr 2012 - 11:44 | |
| Oui. J'envisage de donner des attributs aux cases, dans l'esprit de la ouleur que j'ai ajoutée. Voici ce que j'imagine pour le moment, mais ce n'est nullement figé: pouvoir définir, pour une cellule ou une plage de cellules: - la couleur (déja possible pour 1 cellule) - la police - la taille de la police - les attributs (gras, italique, souligné, barré) - imprimer cadre - imprimer bord Haut, Bas, Gauche, Droite - protégé en saisie - protégé en modification par programme - protégé contre la lecture par programme des données/formules
Tu vois où je veux en arriver. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Jeu 5 Avr 2012 - 12:00 | |
| Oui, l'équivalent d'une feuille Excel (tout du moins dans les fonctions utiles ^^) Excellent. Ca promet du boulot, mais par contre l'interet est énorme. Je pense par exemple à la facilité de créer des "formulaires" dans Panoramic et d'envoyer les données dans le tableur. De pouvoir autorisé ou non le travail sur tout une partie des données dans la grille de données. Puis à l'aide de ta DLL d'impression, de pouvoir créer puis imprimer des "rapports" à partir de ces éléments.
- Source de données: Fichiers CSV, Programme, Formulaire ou Grille de données
- Traitement dans un fichier sous forme de matrice de données présentées dans une feuille avec des calculs sur cette feuille pour obtenir les résultats attendus
- Stockage sous forme de feuille de données (et / ou de fichier csv)
- Consultation sous forme de grille de données à l'écran, de reporting digitaux (à l'écran) ou imprimés. (reporting pouvant être enrichis de graphismes pour les illustrer) | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Jeu 5 Avr 2012 - 12:48 | |
| Oui, c'est un peu vers ça que je veux aller. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Jeu 5 Avr 2012 - 14:33 | |
| Nouvelle version: il y a 3 fonctions pour sélectionner des plages, lignes ou colonnes, et une fonction qui colorie les cellules sélectionnées par les 3 fonctions précédentes.
La facture a été modifiée en utilisant ces fonctions, pour lui donner un fond général.
En impression, les cellules coloriées sont imprimées aussi, même si elles n'ont pas de données. Elles apparaissent alors avec le cadre pour la facture, car l'option "imprimer le cadre des cellules" a été choisi par programme. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL Jeu 5 Avr 2012 - 15:32 | |
| Excellent, il suffit donc de colorer le tableau, ça répond au besoin une fois qu'on le sait | |
|
| |
Contenu sponsorisé
| Sujet: Re: Un vrai tableur pour Panoramic dans une DLL | |
| |
|
| |
| Un vrai tableur pour Panoramic dans une DLL | |
|