Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Ajout de ON_MOUSE_OVER et autres idées en vrac | |
| | Auteur | Message |
---|
Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| | | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Ven 13 Avr 2018 - 18:57 | |
| - Citation :
- 2 - En épluchant un listing , j'ai découvert par hasard l'instruction button_picture que la documentation de PANORAMIC ne mentionne pas et que je n'ai trouvé dans aucun sujet. Par ailleurs, cette instruction n'est pas mise en évidence dans l'éditeur, comme c'est le cas pour tous les autres mots-clé. Existe-t-il donc une liste des instructions qui seront prochainement intégrées à la documentation ?
C'est parce que ce mot-clé (comme beaucoup d'autres, d'ailleurs) est nouveau et fait partie d'une version instantanée. Pour chacune de ces versions, Jack publie les nouveautés, et il faut prendre l'habitude de les capter et copier dans un fchier texte, à placer sur le bureau. Lors de la publication de la prochaine version officielle (ce sera la V0.9.28), tous ces nouveaux mots-clé seront pris en compte dans la coloration syntaxique et auront leur documentation intégrée. A tout hasard, je te poste ci-après ma propre collection de ces bribes d'information publiées par Jack, au fil des versions instantanées: - Spoiler:
- Citation :
- Version instantanée V 0.9.28i17 du 8/04/ 2018 :
Elle apporte 2 améliorations: - il est possible d'utiliser des tableaux à 3 dimensions - l'ordre des octets de PEEK16() et PEEK32() a été inversé
Version instantanée V 0.9.28i16 du 21/03/ 2018 :
La version instantanée V 0.9.28i15 d'hier contenait des messages de mise au point. Cela a été corrigé, et une nouvelle version instantanée V 0.9.28i16 du 21/03/2018 est disponible au téléchargement.
Elle corrige les problèmes suivants : - le bug N°6 : confusion de variables locales (DIM_LOCAL) entre SUB et FNC - le bug N°7 : plantage quand il y a 2 virgules à la suite dans une déclaration de variables (DIM) - le bug N°8 : la commande POKE semble ne pas fonctionner avec l'adresse d'une variable.
Elle modifie 2 commandes (suite à une demande sur le forum): GRID_NUMBER_COLUMN() devient GRID_COLUMN() GRID_NUMBER_ROW() devient GRID_ROW()
Elle apporte les commandes suivantes : FILE_DIALOG N,T : propose le nom de fichier T pour l'objet N (OPEN_DIALOG, SAVE_DIALOG, OPEN_DIALOG_PIC, SAVE_DIALOG_PIC). POKE16 V,A : écrit la valeur V sur 16 bits en mémoire (octet de poids fort à l'adresse A, octet de poids faible à l'adresse A+1) POKE32 V,A : écrit la valeur V sur 32 bits en mémoire (octet de poids fort à octet de poids faible aux adresses A, A+1, A+2, A+3)
Elle apporte les fonctions suivantes : PEEK16(A) qui retourne le contenu (valeur sur 16 bits de 0 à 65535) des adresses A et A+1 PEEK32(A) qui retourne le contenu (valeur sur 32 bits de 0 à 4294967295) des adresses A, A+1, A+2 et A+3 GRID_ROW_FIXED(N) qui retourne le nombre de lignes fixes du GRID numéro N GRID_COLUMN_FIXED(N) qui retourne le nombre de colonnes fixes du GRID numéro N GRID_ROW_HEIGHT(N) qui retourne la hauteur des lignes du GRID numéro N GRID_COLUMN_WIDTH(N) qui retourne la largeur des colonnes du GRID numéro N GRID_ONE_ROW_HEIGHT(N,R) qui retourne la hauteur en pixels de la ligne numéro R du GRID numéro N GRID_ONE_COLUMN_WIDTH(N,C) qui retourne la largeur en pixels de la colonne numéro C du GRID numéro N
Cette version est disponible sous 2 formes : PANORAMIC_EDITOR.exe comme d'habitude PANORAMIC.exe qui possède maintenant un éditeur rudimentaire si on l'utilise de manière isolée. S'il est appelé en ligne de commande, l'éditeur rudimentaire est inactif. Dans les versions précédentes, PANORAMIC.exe était sans éditeur et permettait de charger un fichier source pour l'exécuter, s'il était utilisé de manière isolée. Maintenant, il est possible de charger un source, de le visualiser avec les mots-clés colorés, de le modifier, de le sauvegarder et de l'exécuter. J'y ai mis aussi des fonctions élémentaires comme chercher et remplacer.
Version instantanée V 0.9.28i13 du 01/02/ :
- elle corrige le bug N°3 mauvaise interprétation du string " THEN ", - elle apporte les fonctions., - elle visualise une progress_bar au lancement.
Une fonction est définie par FNC suivi d'un nom et se termine par END_FNC. On peut définir des paramètres entre parenthèses. Dans la fonction, la valeur de retour est définie par la commande RESULT On appelle une fonction dans une expression ou dans une affectation par son nom suivi de () s'il n'y a pas de paramètres, ou par des paramètres séparés par des virgules et entourés de parenthèses. On peut utiliser DIM_LOCAL dans une fonction pour y déclarer des variables locales (variables qui n'existent que dans la fonction). Code: DIM I%,R$,A - - - A=SANS_PARAMETRE() BUTTON 150+AVEC_UN_PARAMETRE%(3*I%) CAPTION 0,"ABC"+AVEC_DEUX_PARAMETRES$(3*I%, 7-4*R$) END
FNC SANS_PARAMETRE() RESULT 21.89 END_SUB
FNC AVEC_UN_PARAMETRE%(K%) RESULT K%*23 END_SUB
FNC AVEC_DEUX_PARAMETRES$(Z%, W$) RESULT LEFT$(W$,Z%+10) END_FNC
Les fonctions sont typées comme les variables : - si le nom d'une fonction se termine par %, elle retourne un entier - si le nom d'une fonction se termine par $, elle retourne une chaine de caractères - si le nom d'une fonction se termine par une lettre ou un chiffre, elle retourne un réel
Les fonctions avaient souvent été demandées sur ce forum. Je les ai finalement intégrées dans PANORAMIC bien qu'elles n'apportent pas grand chose par rapport à un SUB dans lequel on modifie une variable globale (définie par DIM) en guise de valeur de retour.
De même, une progress_bar montrant le temps pris dans les différentes phases de lancement avait été demandée. C'est chose faite.
Panoramic instantanée V 0.9.28i12 du 08/07/2017:
- correction de l'inversion des valeurs de USER_EVENT_LPARAM et USER_EVENT_WPARAM
- correction d'un problème d'événement sur les objets SWITCH1 et DIGIT1
L'objet SWITCH1 est allumé par défaut et affiche les valeurs 0 ou 1 suivant qu'il est éteint ou allumé. On peut modifier l'affichage de l'état allumé par CAPTION N,V$ et à la fois pour l'état allumé et éteint en séparant les deux valeurs par | (pipe) On peut lire son état par CHECKED(N) Lorsqu'on clique dessus, il réagit à l'événement ON_CLICK
Voici un exemple d'utilisation : Code: label affiche
switch1 1 top 1,150:left 1,200:width 1,210:height 1,100 caption 1, "***ON***|***OFF***" on_click 1,affiche end
affiche: print "état de SWITCH1 : "+str$(CHECKED(1)) return
Panoramic instantanée V 0.9.28i11 du 01/07/2017 :
- corrige les bugs rencontrés sur USER_EVENT_LPARAM et USER_EVENT_WPARAM
- permet d'utiliser les objets suivants (qui sont considérés comme terminés): LED1 SWITCH1 DIGIT1 OPEN_DIALOG_PIC SAVE_DIALOG_PIC MAIN_MENU_POP
Panoramic instantanée V 0.9.28i9 "en l'état"
Cette version possède les 2 commandes qui s'appliquent aux objets EDIT, MEMO, COMBO, SPIN, MEMO_RICH, SYNEDIT:
TEXT_DELETE N,P,C qui supprime C caractères à partir de la position P dans l'objet de numéro N
SELECT_DELETE N qui supprime le texte sélectionné dans l'objet de numéro N
De plus, toutes les nouvelles commandes et fonctions, et même ces 2 dernières font partie de la liste de mots-clés de l'objet SYNEDIT et sont donc colorées.
Bon, cette fois, je retourne au compilateur. A bientôt.
Voici une nouvelle version qui devrait répondre aux dernières demandes.
1 - lecture de la sélection
SELECT_TEXT N,P,C qui sélectionne C caractères du texte à partir de la position P, s'applique aux objets EDIT, MEMO, COMBO, SPIN, MEMO_RICH et SYNEDIT. SELECT_READ$(N) qui retourne le texte sélectionné, s'applique aux objets EDIT, MEMO, COMBO, SPIN, MEMO_RICH et SYNEDIT.
2 - insertion d'un texte
TEXT_INSERT N,P,T$ insère le texte T$ à partir de la position P. La position 0 correspond à la position avant le premier caractère. Cette commande s'applique aux objets EDIT, MEMO, COMBO, SPIN, MEMO_RICH et SYNEDIT.
3 - événements clavier
ON_KEY_UP, ON_KEY_DOWN, OFF_KEY_UP et OFF_KEY_DOWN s'appliquent aux objets BUTTON, EDIT, MEMO, COMBO, FORM, LIST, CHECK, OPTION, SPIN, GRID, MEMO_RICH, BUTTON_PICTURE, SCENE2D, GRID_DRAW, SYNEDIT.
4 - simulation des événements clavier
TRIGGER_KEY_UP N,C,S : simule l'événement clavier produit par l'appui sur une touche sur l'objet système numéro N. C est le code de la touche simulée. S est un code pour simuler une touche composée: 0 pour touche simple 1 pour SHIFT 2 pour ALT 3 pour CONTROL 4 pour SHIFT + ALT 5 pour SHIFT + CONTROL 6 pour ALT + CONTROL
TRIGGER_KEY_DOWN N,C,S : simule l'événement clavier produit par le relâchement d'une touche sur l'objet système numéro N. C est le code de la touche simulée. S est un code pour simuler une touche composée: 0 pour touche simple 1 pour SHIFT 2 pour ALT 3 pour CONTROL 4 pour SHIFT + ALT 5 pour SHIFT + CONTROL 6 pour ALT + CONTROL Remarque : TRIGGER_KEY_UP et TRIGGER_KEY_DOWN s'appliquent aux objets BUTTON, EDIT, MEMO, COMBO, FORM, LIST, CHECK, OPTION, SPIN, GRID, MEMO_RICH, BUTTON_PICTURE, SCENE2D, GRID_DRAW, SYNEDIT.
====================================================================
Tout ce qui suit n'a pas été complètement testé ou le codage n'est pas complètement terminé.
- les variables système NUMBER_SHOW (pour FORM et TAB) et NUMBER_ACTIVATE (pour FORM) fonctionnent même si il n'y a pas eu de déclaration de traitement d'événement (ON_SHOW et ON_ACTIVATE) - les fonctions INSTR_LAST() et INSTR_RIGHT() qui avaient disparu sont réintégrées - 5 nouvelles commandes pour EXCEL (codage non terminé) - 3 nouvelles fonctions pour EXCEL (codage non terminé) - 10 nouveaux objets, principalement dus à l'intégration des objets de Domoticom dans Panoramic: MEMO_RICH BUTTON_PICTURE MAIN_MENU_POP OPEN_DIALOG_PIC SAVE_DIALOG_PIC SHAPE LED1 DIGIT1 SWITCH1 SYNEDIT
BUTTON_PICTURE est un BUTTON qui visualise un caption et une image. Il est possible de positionner l'image par rapport au caption par les commandes PICTURE_TOP, PICTURE_LEFT, PICTURE_RIGHT, PICTURE_BOTTOM
LED1 est une LED qu'on allume avec MARK_ON et qu'on éteint avec MARK_OFF
DIGIT1 est un afficheur de chiffres. Vert par défaut, on peut le colorer par COLOR, et afficher un chiffre avec CAPTION
SWITCH1 est un interrupteur
SHAPE est un objet circulaire par défaut mais qui peut prendre différentes formes avec les commandes SHAPE_RECTANGLE_ROUNDED, SHAPE_SQUARE_ROUNDED, SHAPE_RECTANGLE, SHAPE_ELLIPSE, SHAPE_SQUARE, SHAPE_CIRCLE
SYNEDIT permettra de développer des éditeurs ...
Utilisation prévue de l'objet SYNEDIT
L'objet SYNEDIT est un éditeur de code source, avec des fonctions de recherche et de remplacement de chaînes de caractères.
Recherche d’une chaîne de caractères: La fonction FIND(S$,N,P) recherche et sélectionne la chaine de caractères S$ dans le source de l'objet SYNEDIT numéro N, à partir de la position P, et retourne la position du dernier caractère de la chaine trouvée ou -1 si la chaine S$ n'a pas été trouvée. Ainsi, il est facile de rechercher toutes les occurences d'une chaine de caractère en appelant la fonction avec le paramètre P fourni par un appel précédent. (Pour les panoramiciens attentifs, ce fonctionnement ressemble à celui des fonctions CURVE_ANGLE ou CURVE_VALUE, pour lesquelles on appelle une fonction avec le résultat de l'appel précédent).
Remplacement d’une chaîne de caractères par une autre: La fonction REPLACE((S1$,S2$,N,P) remplace la chaine de caractères S1$ par S2$ dans le source de l'objet SYNEDIT numéro N, à partir de la position P, sélectionne la chaine S2$ et retourne la position du dernier caractère de la chaine remplacée ou -1 si la chaine S1$ n'a pas été trouvée. On peut ainsi facilement faire une boucle pour remplacer toutes les occurences d'une chaine de caractère par une autre, là aussi en appelant la fonction avec le paramètre P fourni par un appel précédent.
L'objet SYNEDIT permet de colorer et de donner un style aux mots-clés, aux commentaires, aux chaînes de caractères, à la "gouttière" (partie gauche pour la numérotation des lignes) au nombres dans un source, de choisir la taille et la police de caractères.
On spécifie les mots-clés par la commande ITEM_ADD.
Les délimiteurs de chaîne de caractères sont les guillemets.
L’indicateur de début de commentaire est l’apostrophe. Le saut de ligne marque la fin d’un commentaire.
Pour que les commandes de type chaîne de caractères s’adressent soit aux mots-clés, soit aux commentaires, soit aux chaînes de caractères, soit aux nombres, soit à la gouttière, on "cible" ces commandes:
SYNEDIT_TARGET_IS_KEYWORD : les commandes de type FONT s'adressent aux mots-clés SYNEDIT_TARGET_IS_COMMENT : les commandes de type FONT s'adressent aux commentaires SYNEDIT_TARGET_IS_STRING : les commandes de type FONT s'adressent aux chaînes de caractères SYNEDIT_TARGET_IS_GUTTER : les commandes de type FONT s'adressent à la gouttière (numérotation des lignes) SYNEDIT_TARGET_IS_NUMBER : les commandes de type FONT s'adressent aux nombres SYNEDIT_TARGET_IS_OBJECT : les commandes de type FONT s'adressent à tout le source, c'est la redirection par défaut
Un petit exemple pour illustrer: Code: SYNEDIT 1:' création d'un objet SYNEDIT
ITEM_ADD 1,"print":' print devient un mot-clé ITEM_ADD 1,"input":' input devient un mot-clé ITEM_ADD 1,"combo":' combo devient un mot-clé
SYNEDIT_TARGET_IS_KEYWORD FONT_COLOR 1,0,0,255:' les mots-clés seront colorés en bleu FONT_BOLD 1:' les mots-clés seront en style gras
SYNEDIT_TARGET_IS_NUMBER FONT_COLOR 1,255,0,0:' les nombres seront colorés en rouge
SYNEDIT_TARGET_IS_GUTTER FONT_ITALIC 1:' les numéros de ligne seront en italique
FILE_LOAD 1,"source.txt":' on charge un source
DIM P WHILE P<>-1:P=REPLACE("print","imprime",1,P):END_WHILE ' tous les "print" sont remplacés par "imprime"
Modification de Make_EXE
Je vais créer une option -r pour que Make_EXE exécute le source spécifié: MAKE_EXE -r "source.bas" H H est le handle de l'appelant. Ainsi, en cas d'erreur d'exécution, MAKE_EXE avertit l'appelant en déclenchant un événement utilisateur et en lui passant par exemple le numéro de la ligne et le code de l'erreur (ou d'autres informations) par les paramètres USER_EVENT_LPARAM et USER_EVENT_WPARAM. L'appelant peut ainsi afficher un message d'erreur et positionner un curseur sur la ligne correspondante dans le source, ou la colorer... ====================================================
PANORAMIC 0.9.27 est disponible au téléchargement. 24/01/2017
Il peut être téléchargé:
1 - avec un installeur http://panoramic-language.pagesperso-orange.fr/Reference/Executable/Setup_ED_FRA.exe
2 - ou dans sa version avec l'éditeur http://panoramic-language.pagesperso-orange.fr/PANORAMIC_EDITOR.zip
3 - ou dans sa version sans éditeur http://panoramic-language.pagesperso-orange.fr/PANORAMIC.zip
Il possède 660 instructions (mots-clés).
Voici les changements par rapport à la version précédente 0.9.26 du 2 juillet 2015 :
Objets Système: SHOW_ALL : rend visible tous les objets système HIDE_ALL : rend invisible tous les objets système CREATE_HIDE : les objets système créés ne seront pas visibles CREATE_SHOW : les objets système créés seront visibles SHOW_MODAL N : visualise le FORM numéro N et le rend modal ITEM_SELECT N,L : sélectionne l'article numéro L de l’objet système numéro N (MEMO, COMBO, LIST) HEIGHT_CLIENT() : retourne la hauteur utile en pixels de l'objet système numéro N WIDTH_CLIENT() : retourne la largeur utile en pixels de l'objet système numéro N SNAPSHOT N,F : sauvegarde dans le fichier F (au format BMP) le SCENE2D numéro N avec ses SPRITEs
Evénements: ON_MOUSE_DOWN N,Label : exécute le programme à partir du label L quand l'utilisateur presse une touche de la souris au dessus de l'objet système numéro N ON_MOUSE_UP N,Label : exécute le programme à partir du label L quand l'utilisateur relâche une touche de la souris au dessus de l'objet système numéro N ON_MOUSE_MOVE N,Label : exécute le programme à partir du label L quand l'utilisateur bouge la souris au dessus de l'objet système numéro N ON_RESIZE N,Label : exécute le programme à partir du label L quand l'utilisateur redimensionne le FORM numéro N ON_MOVE N,Label : exécute le programme à partir du label L quand l'utilisateur bouge le FORM numéro N ON_USER_EVENT : exécute le programme à partir du label L quand un événement utilisateur arrive OFF_MOUSE_DOWN : ignore l'événement "mouse down" quand l'utilisateur presse une touche de la souris au dessus de l'objet système numéro N OFF_MOUSE_UP : ignore l'événement "mouse up" quand l'utilisateur relâche une touche de la souris au dessus de l'objet système numéro N OFF_MOUSE_MOVE : ignore l'événement "mouse move" quand l'utilisateur bouge la souris au dessus de l'objet système numéro N OFF_MOVE : ignore l'événement "move" quand l'utilisateur bouge le FORM numéro N OFF_RESIZE : ignore l'événement "resize" quand l'utilisateur redimensionne le FORM numéro N OFF_USER_EVENT : : ignore les événements utilisateur USER_EVENT_LPARAM et USER_EVENT_WPARAM : contiennent des valeurs numériques relatives à l'événement utilisateur
Chaines de caractères: INSTR_LAST(T1$,T2$) : retourne la dernière position de T2$ dans T1$
Système: DEGREES : les angles sont exprimés en degrés. RADIANS : les angles sont exprimés en radians. DEGREE_TO_RADIAN(A) : retourne la valeur en radians de l'angle A en degrés RADIAN_TO_DEGREE(A) : retourne la valeur en degrés de l'angle A en radians PI : retourne 3.1415926535897932384626433832795 NUMBER_TICKS : retourne le nombre de millisecondes écoulées depuis le démarrage du système VERSION$ : retourne la version de PANORAMIC SYSTEM$ : retourne le système d'exploitation utilisé par PANORAMIC ENVIRONMENT$ : retourne l'environnement pour lequel PANORAMIC a été créé HANDLE_APPLICATION : retourne le handle de l'application DATE_DAY : retourne le jour actuel DATE_MONTH : retourne le mois actuel DATE_YEAR : retourne l’année actuelle TIME_HOUR : retourne l'heure actuelle TIME_MINUTE : retourne la minute actuelle TIME_SECOND : retourne la seconde actuelle
Référence: RESTORE_LABEL : force la lecture des données à partir du label L
Sprites: SPRITE_TEXT N,T$ : le SPRITE numéro N affiche le texte T$ SPRITE_BRIGHTNESS N,V : modifie la luminosité du SPRITE numéro N SPRITE_CONTRAST N,V : modifie le contraste du SPRITE numéro N SPRITE_GAMMA N,V : modifie le gamma du SPRITE numéro N
===================================================
Version instantanée du 16 janvier 2017 : PANORAMIC V 0.9.27i10
Je viens de mettre à disposition une nouvelle version instantanée.
Voici les changements par rapport à la version 0.9.27i9 du 30 décembre 2016 :
- FILE_SAVE N,F permet de sauvegarder dans le fichier F (au format BMP) l'image de fond du SCENE2D numéro N.
- SNAPSHOT N,F permet de sauvegarder dans le fichier F (au format BMP) le SCENE2D numéro N avec ses SPRITEs.
- Les nouvelles instructions (sauf SNAPSHOT) ont dans l'éditeur une coloration syntaxique et une fiche explicative (menu : Aide / Manuel de Référence)
========================================================
Version instantanée du 30 décembre 2016 : PANORAMIC V 0.9.27i9
Je viens de mettre à disposition une nouvelle version instantanée.
Voici les changements par rapport à la version 0.9.27i8 du 2 juin 2016 :
ITEM_SELECT N,L : sélectionne la ligne numéro L de l'objet système numéro N
ON_MOUSE_DOWN N,Label : exécute le programme à partir du label L quand l'utilisateur presse une touche de la souris au dessus de l'objet système numéro N ON_MOUSE_UP N,Label : exécute le programme à partir du label L quand l'utilisateur relâche une touche de la souris au dessus de l'objet système numéro N ON_MOUSE_MOVE N,Label : exécute le programme à partir du label L quand l'utilisateur bouge la souris au dessus de l'objet système numéro N ON_RESIZE N,Label : exécute le programme à partir du label L quand l'utilisateur redimensionne le FORM numéro N ON_MOVE N,Label : exécute le programme à partir du label L quand l'utilisateur bouge le FORM numéro N Remarque : cette commande ON_MOVE ne fonctionne pour le moment qu'avec FORM0
OFF_MOUSE_DOWN N : ignore l'événement "mouse_down" quand l'utilisateur presse une touche de la souris au dessus de l'objet système numéro N OFF_MOUSE_UP N : ignore l'événement "mouse_up" quand l'utilisateur relâche une touche de la souris au dessus de l'objet système numéro N OFF_MOUSE_MOVE N : ignore l'événement "mouse_move" quand l'utilisateur bouge la souris au dessus de l'objet système numéro N OFF_RESIZE N : ignore l'événement "resize" quand l'utilisateur redimensionne le FORM numéro N OFF_MOVE N : ignore l'événement "move" quand l'utilisateur bouge le FORM numéro N
RESTORE_LABEL L : réinitialise la lecture des DATA à partir du label L
HEIGHT_CLIENT(N) : retourne la hauteur de la zone utile de l'objet de numéro N WIDTH_CLIENT(N) : retourne la largeur de la zone utile de l'objet de numéro N
ON_USER_EVENT L : exécute le programme à partir du label L quand un événement utilisateur est adressé à FORM0 OFF_USER_EVENT : ignore les événements utilisateur USER_EVENT_LPARAM et USER_EVENT_WPARAM : contiennent des valeurs numériques relatives à l'événement utilisateur
const WM_USER=1024 'standard Windows const Message_DLL=WM_USER+3000 '3000 = valeur pour les messages panoramic(défini par Jack)
DATE_DAY : retourne le jour actuel DATE_MONTH : retourne le mois actuel DATE_YEAR : retourne l'année actuelle TIME_HOUR : retourne l'heure actuelle TIME_MINUTE : retourne la minute actuelle TIME_SECOND : retourne la seconde actuelle
============================================================
Version instantanée du 2 juin 2016 : PANORAMIC V 0.9.27i8
Je viens de mettre à disposition une nouvelle version instantanée.
Voici les changements par rapport à la version du 22 avril 2016 :
1 - Nouvelles commandes sur les SPRITEs : SPRITE_BRIGHTNESS N,V : modifie la luminosité du SPRITE numéro N. V doit être entre -128 et 127. - si V=0, le SPRITE reste inchangé, - si V<0, sa luminosité diminue, - si V>0, sa luminosité augmente. SPRITE_CONTRAST N,V : modifie le contraste du SPRITE numéro N. V doit être entre -128 et 127. - si V=0, l'image reste inchangée, - si V<0, son contraste diminue, - si V>0, son contraste augmente. SPRITE_GAMMA N,V : modifie le gamma du SPRITE numéro N. V doit être entre -128 et 127. - si V=0, l'image reste inchangé, - si V<0, son gamma diminue, - si V>0, son gamma augmente.
2 - Nouvelle fonction : INSTR_LAST(T1$,T2$) qui retourne la dernière position de T2$ dans T1$. Exemple : instr_last("ABC DEF ABC","ABC") retourne 9
3 - nouvelle variable système : HANDLE_APPLICATION qui retourne le handle de l'application.
4 - correction de bugs : TERMINATE (enfin).
il n'est plus possible de créer plusieurs menus par form (erreur 187 quand création d'un deuxième menu sur un FORM)
===================================================================
Version instantanée du 20 mars 2016 : PANORAMIC V 0.9.27i6
Je viens de mettre à disposition une nouvelle version instantanée.
Voici les changements par rapport à la version du 15 décembre 2015 :
1 - Pour tout arrêt, du à une cause extérieure à Panoramic, une fenêtre s'affiche. Cette fenêtre indique : - le numéro de ligne qui était en cours d'exécution lors de cette erreur, - le libellé de l'erreur.
Pour me moment, il n'y a pas encore de lien avec l'editeur qui ne visualise pas la ligne en erreur comme c'est le cas lors d'une erreur détectée par Panoramic. Je pense que l'indication du numéro de ligne va faciliter la recherche d'erreur dans de grands programmes.
2 - Nouvelle commande : SHOW_MODAL N qui permet de visualiser et de rendre modal un FORM de numéro N. L'exécution d'un programme est suspendue pendant la visualisation d'une fenêtre modale. C'est une vieille demande sur le forum qui se concrétise.
====================================================================
Version instantanée du 9 décembre 2015 : PANORAMIC V 0.9.27i5 Version instantanée du 15 décembre 2015 : PANORAMIC V 0.9.27i4
Cette version instantanée est disponible ici :
1 - dans sa version avec l'éditeur http://panoramic-language.pagesperso-orange.fr/PANORAMIC_EDITOR.zip
2 - dans sa version sans éditeur http://panoramic-language.pagesperso-orange.fr/PANORAMIC.zip
Voici les améliorations de cette version, par rapport à la version V0.9.26 du 2 juillet 2015 :
mathématiques :
DEGREES : les angles sont exprimés en degrés. S'applique aux fonctions COS(), SIN(), TAN(), ACOS(), ASIN(), ATAN() RADIANS : les angles sont exprimés en radians. S'applique aux fonctions COS(), SIN(), TAN(), ACOS(), ASIN(), ATAN() DEGREE_TO_RADIAN(A) : retourne la valeur en radians de l'angle A en degrés RADIAN_TO_DEGREE(A) : retourne la valeur en degrés de l'angle A en radians PI : retourne 3.1415926535897932384626433832795
objets :
SHOW_ALL : rend visible tous les objets système HIDE_ALL : rend invisible tous les objets système CREATE_HIDE : les prochains objets système créés ne seront pas visibles CREATE_SHOW : les prochains objets système créés seront visibles
système :
NUMBER_TICKS : retourne le nombre de millisecondes écoulées depuis le démarrage du système VERSION$ : retourne la version de PANORAMIC. Exemple : "0.9.27" SYSTEM$ : retourne le système d'exploitation utilisé par PANORAMIC ("WINDOWS" ou "ANDROID" ou "MACOS") ENVIRONMENT$ : retourne l'environnement pour lequel PANORAMIC a été créé ("CLASSIC" pour Windows, "MULTIPLF" pour un environnement multi-plateforme Windows/Android/MAC OS))
Bibliothèques : LIBRARY N, L$ : déclaration d'une bibliothèque N : numéro de la bibliothèque L$ : nom absolu ou relatif de la bibliothèque (exemple : ma_lib.dll)
COMMAND CP$,CL$,N,T$,C$ : déclaration d'une commande CP$ : nom de la commande pour PANORAMIC CL$ : nom de la commande dans la bibliothèque (attention, CL$ est sensible à la casse : respectez majuscules et minuscules) N : numéro de la bibliothèque dans laquelle on trouve la commande T$ : chaine de caractères donnant le type de chaque paramètre : I (entier) R (réel) S (chaine de caractères) C$ : convention d'appel de la commande
FUNCTION CP$,CL$,N,T$,C$ : déclaration d'une fonction CP$ : nom de la fonction pour PANORAMIC CL$ : nom de la fonction dans la bibliothèque (attention, CL$ est sensible à la casse : respectez majuscules et minuscules) N : numéro de la bibliothèque dans laquelle on trouve la fonction T$ : chaine de caractères donnant le type de chaque paramètre : I (entier) R (réel) S (chaine de caractères) C$ : convention d'appel de la fonction
Le type de retour est dans le nom de la fonction Panoramic: fonction "fn","fonction_dans_dll",1,"II","stdcall" définit que fonction_dans_dll retourne un réel fonction "fn%","fonction_dans_dll",1,"II","stdcall" définit que fonction_dans_dll retourne un entier fonction "fn$","fonction_dans_dll",1,"II","stdcall" définit que fonction_dans_dll retourne une chaine de caractères
Pour le moment, cela ne fonctionne : - qu'avec 6 paramètres maximum, - que lorsque les paramètres sont entiers (I) - que lorsque les fonctions retournent des nombres
correction de bugs :
- plantage dans CARET_POSITION() - GRID_COLUMN_FIXED et GRID_ROW_FIXED acceptent maintenant 0 ligne ou 0 colonne - le problème de click sur un objet (signalé ici https://panoramic.1fr1.net/t4419-un-mystere-a-resoudre) est corrigé - la commande EXIT_SUB n'était pas reconnue - la commande CREATE_HIDE ne s'appliquait pas aux FORM - la commande 3D_DELETE n'agissait que sur les 3D_CUBE, 3D_BOX et 3D_SPHERE, les autres objets 3D n'étant pas détruits - le positionnement des FORMs créées avec CREATE_HIDE
bugs ou problèmes connus (et pas encore corrigés faute de temps) :
- plantage avec TERMINATE - OBJECT_PARENT() devrait se nommer PARENT() - un objet TAB devrait pouvoir contenir un CONTAINER_TAB - MOUSE_LEFT_DOWN() et MOUSE_RIGHT_DOWN() qui ne "fonctionnent qu'une fois" lorsque le bouton reste enfoncé
====================================================================
Je viens de mettre à disposition une nouvelle version instantanée.
Voici les changements par rapport à la version V 0.9.27i3 du 9 décembre 2015:
- il n'y a aucune limite au nombre de librairies, de commandes et de fonctions. J'ai quand même mis une limite sur les numéros pour éviter des nombres très grands : ils doivent être inférieurs ou égaux à 10000.
- correction d'un mauvais affichage d'erreur ("Library already defined" sur un mauvais numéro de librairie)
- correction d'un bug : lors de l'appel d'une fonction dans une librairie (DLL), les paramètres peuvent être des expressions. Par exemple, handle(n) est accepté.
- LIBRARY$(N) fournit le nom de la librairie numéro N ou "_" (underscore) si la librairie n'a pas été déclarée.
- Attention, les appels de fonction sans paramètre ne fonctionnent pas
| |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Ven 13 Avr 2018 - 19:21 | |
| @Fredisland Pour le point 1, la commande existe déjà, elle s'appelle ON_MOUSE_MOVE, mais on ne peut pas savoir quel objet a été survolé à moins de créer une routine de traitement d'évènement par objet à survoler. Une variable NUMBER_MOUSE_MOVE est à l'étude. Pour le point 4, ça fait des années que ce problême a été soulevé, on a fini par s'y habituer. @klaus C'est une excellente idée, merci pour ton partage | |
| | | Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Ven 13 Avr 2018 - 19:38 | |
| Merci tous les deux pour ces éléments de réponse. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Ven 13 Avr 2018 - 21:03 | |
| Bonsoir, Je constate que Fredisland s'intéresse à nos petites affaires... Et c'est une bonne chose ! Je reviens sur le problème N°4: - Citation :
- 4 - Serait-il possible de mémoriser les paramètres de l'éditeur pour les retrouver à chaque lancement ...
Comme dit Silverman, il faut s'y habituer... Mon avis: Panoramic à besoin d'un éditeur digne du langage qu'il représente. Autant je peux comprendre qu'une version instantanée téléchargée "sous ZIP" n'intègre pas cette mémorisation et les colorations syntaxiques des nouveautés, Autant je trouve dommageable qu'avec une version "régulière" ce ne soit pas le cas (je parle de la sauvegarde des choix utilisateur). C'est dommageable pour Panoramic car, comme ou peut le voir avec la demande de Fredisland , ça ne fait pas "sérieux". Stop ! Halte aux réactions primaires du style Jack fait ce qu'il peut que je vois venir. C'est vrai. Mais pour moi, un langage informatique se doit d'avoir un éditeur digne de ce nom. C'est à mon avis une priorité. Ce n'est certainement pas par hasard qu'un bon nombre de Panoramiciens ont cherchés à en faire un. Je le dis tout net, j'en suis resté à la dernière version régulière "V09.27" dont l'éditeur (malgré qu'il ne sauve pas les choix utilisateur) ne plante pas et débogue un minimum. J'utilise la dernière version "instantanée" que pour tester des codes qui utilisent les nouveautés. Je ne suis pas en confiance avec un éditeur qui plante régulièrement à l'ouverture ou après l'avoir déserté provisoirement pour consulter le forum ou internet. Désolé d'être désagréable, mais je pense que ce sujet est très important. Néanmoins, Panoramic reste pour moi un très bon langage et celui que je préfère, et je ne suis pas près de l'abandonner malgré ce problème d'éditeur. Simplement, je le répète, Panoramic à besoin d'un éditeur qui ne bug pas et qui crée la confiance. A+ | |
| | | Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Ven 13 Avr 2018 - 22:05 | |
| - Jean Claude a écrit:
- Ce n'est certainement pas par hasard qu'un bon nombre de Panoramiciens ont cherchés à en faire un.
Euh oui j'avoue que mon tout premier projet sur PANORAMIC est justement un nouvel éditeur qui soit en adéquation avec mes exigences de geek.... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Ven 13 Avr 2018 - 22:05 | |
| - Jean Claude a écrit:
- Mon avis: Panoramic à besoin d'un éditeur digne du langage qu'il représente.
Oui cette discussion à déjà eu lieu maintes fois sur le forum... Mais soyons honnête, Jack ne peut être partout à la fois ! Je m'habitue à cet éditeur même s'il est rudimentaire. Par contre c'est vrai que les bugs rencontrés depuis plus d'un an maintenant sont assez gênants. Mais soyons indulgent avec Jack. Que ferions nous à sa place ? En aparté, je vous confirme que j'ai repris le développement d'une version 2 de GPP. Bien que j'ai sûrement plus de temps que Jack, j'avoue mettre beaucoup de temps dans le développement de cet IDE. C'est peut être aussi pour cela que je suis plus compréhensif vis à vis du travail fourni par Jack ! | |
| | | Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Sam 14 Avr 2018 - 3:18 | |
| - silverman a écrit:
- @Fredisland
Pour le point 1, la commande existe déjà, elle s'appelle ON_MOUSE_MOVE, mais on ne peut pas savoir quel objet a été survolé à moins de créer une routine de traitement d'évènement par objet à survoler. Une variable NUMBER_MOUSE_MOVE est à l'étude.: C'est déjà très utile, je te remercie. Le ON_MOUSE_MOVE supporte par ailleurs un numéro d'objet comme paramètre. En revanche, point de ON_MOUSE_OUT, son complément indispensable, et ça me chagrine. J'ai donc du mal à effectuer un changement d'image sur une button_picture en fonction du passage ou non de la souris par-dessus. Qui plus est, j'ai dû utiliser le picture en lieu et place du button_picture, car ce dernier gère mal le chargement des BMP dont il supprime automatiquement la couleur de fond des images. Mes débuts sur PANORAMIC sont plein d'embuches . Faut que je désembuche ça rapide ... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Sam 14 Avr 2018 - 8:56 | |
| En Delphi (et Windows, d'ailleurs), il n'y a pas d'évènement directement utilisable du genre ON_MOUSE_OUT. Cela peut étonner, mais c'est ainsi. Il y a des moyens de contourner le problème. Ton BUTTON_PICTURE (ou PICTURE, maintenant..) se trouve forcément dans un objet "contenant": soit une FORM, un PANEL, etc. Alors la solution est la suivante: 1. crée une variable globale du style - Code:
-
dim Curseur_est_dans_bouton% et tu mets 0 (zéro) dans la variable. 2. pour le bouton (ou picture), tu crées un évèenement ON_MOUSE_MOVE. Là, tu fais ceci: - Code:
-
if Curseur_est_dans_bouton=0 Curseur_est_dans_bouton = 1 .. ici, charger une image de ton choix
3. pour l'objet "contenant", tu crées un évèenement ON_MOUSE_MOVE. Là, tu fais ceci: - Code:
-
if Curseur_est_dans_bouton=1 Curseur_est_dans_bouton = 0 ... ici charger l'image du bouton... end_if Et tu verras que, comme par magie, ton bouton changera d'image lorsque le curseur le quitte. | |
| | | Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Sam 14 Avr 2018 - 11:22 | |
| - Klaus a écrit:
- En Delphi (et Windows, d'ailleurs), il n'y a pas d'évènement directement utilisable du genre ON_MOUSE_OUT. Cela peut étonner, mais c'est ainsi.
Jusqu'à la découvert de PANORAMIC, j'utilisais POWERSOFT MAKER pour coder. J'ai amèrement regretté que son auteur ait arrêté le dévloppement, mais c'est une petite bombe que j'utilise toujours (j'avais à l'époque codé l'intégrateur XP Coccinelle avec), bien qu'éloignée du BASIC. Et le ON_MOUSE_OUT était bien intégré, et quand on y est habitué, difficile de s'en passer. Je crois que PSM était codé en C ou C++. - Klaus a écrit:
- Il y a des moyens de contourner le problème. Ton BUTTON_PICTURE (ou PICTURE, maintenant..) se trouve forcément dans un objet "contenant": soit une FORM, un PANEL, etc. Alors la solution est la suivante:
Jolie astuce que ce système de bascule. Je me mets de suite à l'oeuvre pour mes 16 boutons (je sens que le code va bien grossir). Merci beaucoup @Klaus d'avoir pris le temps de répondre à mes attentes, à la fois rapidement et efficacement. ======================= Réédit : ça marche, c'est beau
Dernière édition par Fredisland le Sam 14 Avr 2018 - 11:57, édité 1 fois | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Sam 14 Avr 2018 - 11:47 | |
| Bonjour Fredisland ! voici quelque chose que j'avais réalisé et qui peut d'intéresser... C'est ici ! | |
| | | Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Sam 14 Avr 2018 - 12:04 | |
| - Minibug a écrit:
- voici quelque chose que j'avais réalisé et qui peut d'intéresser...
C'est ici ! Intéressant et utilse, je mets ton code dans mon dossier de listings-exemplaes. Merki . | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Sam 14 Avr 2018 - 12:17 | |
| Si cela peut t'aider... Par contre pour le menu contextuel il y a maintenant une fonction dans Panoramic : MAIN_MENU_POP. Donc pas la peine de t’embêter avec cette partie. Concernant la création d'un éditeur tu peut télécharger l'IDE que j'ai fais sur le site de GPP. Voici le lien de téléchargement sur mon site. Cela te donnera une idée de ce qui est réalisable en Panoramic et avec la dll KGF de Klaus. Par contre cette 1ere version n'est pas stable s'est pourquoi je travaille sur la version 2 actuellement. J'ai retiré le TIMER et plusieurs autres choses qui étaient susceptible de poser des problèmes. A+ et bon courage. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Sam 14 Avr 2018 - 12:58 | |
| Je viens réagir sur le sujet de l' éditeur (ne tirez pas! ). J' ai moi même essayé d' en faire un. Je suis d' abord parti de l' objet RichText puis Synedit de la dll de Klaus pour finir par l' objet Synedit de Panoramic. Je l'ai mis en attente en pensant que Jack développerait à fond les commandes et possibilités de cet objet. Et depuis le temps, j' en ai perdu le fil de ce que j' avais fait et il me faudra un bout de temps pour me le remettre en mémoire. Ceci dit, je suis attentif à ce que tout le monde fait et je suis d' accord avec vous sur la nécessité d' un bon éditeur.
Maintenant, seul, Jack ne peut pas tout faire. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac Sam 14 Avr 2018 - 14:15 | |
| - Klaus a écrit:
- En Delphi (et Windows, d'ailleurs), il n'y a pas d'évènement directement utilisable du genre ON_MOUSE_OUT.
En HTML,si ! il y a onmouseover ainsi que son complément onmouseout. Le code panoramic ci-dessus crée un fichier test.HTML dans le dossier en cours, puis il crée un browser (à l’aide de KGF.DLL). Ensuite il exécute le HTML dans le browser. Ce test consiste à afficher un petit rectangle qui change de couleur et de texte quand la souris y entre ou y sort. Et pour rester propre, avant de terminer son boulot, il « delete » le fichier test.HTML de votre dossier. - Code:
-
rem ============================================================================ rem Test de ONMOUSEOVER / ONMOUSEOUT rem ============================================================================
dim url$ dll_on "kgf" : ' <---------------------------------- Adapter le chemin !!!
Creer_HTML() Creer_Browser() file_delete url$
end rem ============================================================================ SUB Creer_HTML() dim_local q$ : q$ = chr$(34) url$ = dir_current$ +"\test.html" file_open_write 9999,url$ file_writeln 9999,"<div style="+q$+"width:100px; height:20px; border:solid 1px black; text-align:center;"+q$ file_writeln 9999,"onmouseover="+q$+"this.innerHTML='Dedans'; this.style.backgroundColor='#87CEFA';"+q$ file_writeln 9999,"onmouseout="+q$+"this.innerHTML='Dehors'; this.style.backgroundColor='lightgrey';"+q$+">" file_writeln 9999,"</div>" file_close 9999 END_SUB rem ============================================================================ SUB Creer_Browser() dim_local WB%,res% WB% = dll_call1("WB_Create",handle(0)) res% = dll_call5("WB_Locate",WB%,20,20,width_client(0)-50,height_client(0)-50) res% = dll_call2("WB_Url",WB%,adr(url$)) END_SUB rem ============================================================================
| |
| | | Contenu sponsorisé
| Sujet: Re: Ajout de ON_MOUSE_OVER et autres idées en vrac | |
| |
| | | | Ajout de ON_MOUSE_OVER et autres idées en vrac | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |