FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» demande explication KGF pour imprimer en mm
Evènement USER_EVENT Emptypar JL35 Hier à 17:28

» Petit passage furtif
Evènement USER_EVENT Emptypar Froggy One Mer 27 Mar 2024 - 14:26

» SPIN et aide langage (résolu)
Evènement USER_EVENT Emptypar leclode Sam 23 Mar 2024 - 15:20

» Aide-mémoire des mots-clés Panoramic
Evènement USER_EVENT Emptypar papydall Mer 20 Mar 2024 - 21:23

» Je ne comprend pas pourquoi la largeur de la scene 3d change
Evènement USER_EVENT Emptypar Marc Mar 12 Mar 2024 - 20:06

» Comment télécharger panoramic?
Evènement USER_EVENT Emptypar lepetitmarocain Sam 9 Mar 2024 - 13:31

» @lepetitmarocain <==> KGFGrid
Evènement USER_EVENT Emptypar Klaus Dim 3 Mar 2024 - 9:59

» Tangram-Toukaré
Evènement USER_EVENT Emptypar jjn4 Mer 28 Fév 2024 - 18:12

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Evènement USER_EVENT Emptypar jjn4 Mer 28 Fév 2024 - 18:09

» KGF_dll - nouvelles versions
Evènement USER_EVENT Emptypar Klaus Mer 28 Fév 2024 - 17:01

» Mes souhaits d'amélioration de Panoramic.
Evènement USER_EVENT Emptypar Pedro Lun 26 Fév 2024 - 18:12

» Testez-votre-QI
Evènement USER_EVENT Emptypar jjn4 Dim 25 Fév 2024 - 17:12

» Utilisation d'Élip
Evènement USER_EVENT Emptypar jjn4 Sam 24 Fév 2024 - 18:33

» Récapitulatif ludothèque panoramic jjn4
Evènement USER_EVENT Emptypar jjn4 Sam 24 Fév 2024 - 18:11

» Générateur de mots de passe
Evènement USER_EVENT Emptypar mindstorm Mar 20 Fév 2024 - 20:09

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mars 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier
-23%
Le deal à ne pas rater :
EVGA SuperNOVA 650 G6 – Alimentation PC 100% modulaire 650W, 80+ ...
77.91 € 100.91 €
Voir le deal

 

 Evènement USER_EVENT

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


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

Evènement USER_EVENT Empty
MessageSujet: Evènement USER_EVENT   Evènement USER_EVENT EmptyVen 22 Avr 2016 - 22:21

Jack, puisque tu sembles avoir à nouveau un peu de disponibilité pour faire avancer Panoramic, je reviens sur mon "serpent de mer": l'évènement ON_USER_EVENT qu'on pourrait déclencher à partir d'une DLL et qui serait traité en Panoramic comem n'importe quel évènement.

Je m'explique. Je propose de définit un USER_MESSAGE tel que
Code:
const
  CM_PANORAMIC_USER = WM_USER + 3000;
La DLL enverrait ce message par l'api SEND_MESSAGE au handle de la form 0 (que je sais trouver en toutes circonstances). Et la WndProc de la form 0 pourrait alors déclencer l'évènement Paanoramic ON_ISER_EVENT que j'appelle de mes voeux. Les deux paramètres LPARAM et WPARAM seraient mis à disposition du programme Panoramic dans des variables système, du genre USER_EVENT_LPARAM et USER_EVENT_WPARAM. A partir de là, on pourrait traiter efficacement des évènements déclenchés par la DLL.

Actuellement, je suis obligé à imposer l'utilisation d'un objet EDIT (caché par HIDE) avec un évènement ON_CHANGE. Et je lui envoie des messages texte par SEND_MESSAGE WM_SETTEXT. Il faut alors décoder la chaîne de caractères pour savoir de quoi il retourne. Ca marche. Mais ce n'est pas élégant.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Evènement USER_EVENT Empty
MessageSujet: Re: Evènement USER_EVENT   Evènement USER_EVENT EmptySam 15 Oct 2016 - 2:18

Bonsoir, Jack,

Après une longue absence contrainte, je reviens sur le forum et j'essaie de me remettre à jour. Et je vois que je n'ai pas de réponse à ma suggestion d'une commande ON_USER_EVENT (sauf si tu as posté quelque chose ailleurs, sans que je l'aie vu). Que penses-tu d'une telle commande ON_USER_EVENT avec des variables système USER_EVENT_LPARAM et USER_EVENT_WPARAM ? Un tel évènement serait déclenché par un message du type
CM_PANORAMIC_USER = WM_USER + 3000;  // 3000 est un exemple !
envoyé par l'API SendMessage au handle de la form 0.

Tu penses que ce serait faisable ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


Nombre de messages : 2381
Date d'inscription : 28/05/2007

Evènement USER_EVENT Empty
MessageSujet: Re: Evènement USER_EVENT   Evènement USER_EVENT EmptySam 15 Oct 2016 - 9:22

Tout d'abord, je suis heureux de te retrouver dans ce forum et encore plus heureux de te voir faire des propositions comme cela.

Le ON_USER_EVENT que tu proposes est une bonne idée et je le code ce week-end.
A bientôt pour de longues et nouvelles aventures.

_________________
Evènement USER_EVENT Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


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

Evènement USER_EVENT Empty
MessageSujet: Re: Evènement USER_EVENT   Evènement USER_EVENT EmptySam 15 Oct 2016 - 10:41

Mille merci, Jack ! Ca va être super !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


Nombre de messages : 2381
Date d'inscription : 28/05/2007

Evènement USER_EVENT Empty
MessageSujet: Re: Evènement USER_EVENT   Evènement USER_EVENT EmptyLun 17 Oct 2016 - 21:33

Tu trouveras ici une version de Panoramic sans éditeur qui permet de traiter un événement "utilisateur" déclenché par une fonction d'une DLL.

http://panoramic-language.pagesperso-orange.fr/PANORAMIC.zip

Pour gérer les événements utilisateur en Panoramic, il y a 2 commandes :

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

et 2 variables système :

USER_EVENT_LPARAM et USER_EVENT_WPARAM qui contiennent des valeurs numériques envoyées par la DLL.



Voici à titre d'exemple une DLL écrite en Delphi qui permet de déclencher un événement :


Code:
library MaDLL;
uses
Windows,
Messages;
const
Message_DLL = WM_USER + 3000;
function USER_EVENT(Nb1 : integer) : integer; stdcall; // Nb1 est un handle
var
WP, LP : integer;
begin
WP := 10; // par exemple
LP := 20; // par exemple
Result := SendMessage(Nb1, Message_DLL, WP, LP);
end;
exports
USER_EVENT;
end.
et un source Panoramic qui traite l'événement déclenché par la DLL :

Code:
label traite_event
On_User_Event traite_event
dll_on "MaDLL.dll"
print dll_call1("USER_EVENT",handle(0))
dll_off
end

traite_event:
message "événement déclenché par DLL"+chr$(13)+chr$(10)+str$(USER_EVENT_LPARAM)+chr$(13)+chr$(10)+str$(USER_EVENT_WPARAM)
return

Je suis comme d'habitude preneur de toute remarque, critique, proposition ...
A toi de jouer ...

_________________
Evènement USER_EVENT Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


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

Evènement USER_EVENT Empty
MessageSujet: Re: Evènement USER_EVENT   Evènement USER_EVENT EmptyMar 18 Oct 2016 - 0:05

YESSS !!! Je télécharge de suite et j'essaie. De façon "prévisionnelle", j'ai adapté la gestion de mon objet StringGrid à cette technique, et je vais voir ce que ça donne.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Evènement USER_EVENT Empty
MessageSujet: Re: Evènement USER_EVENT   Evènement USER_EVENT EmptyMar 18 Oct 2016 - 0:26

Succès total, Jack ! Ca fait exactement ce que je souhaitais et ce que j'espérais. Voilà qui va donner une toute nouvelle souplesse dans la communication entre Panoramic et les DLLs écrites pour Panoramic ! Sincèrement MERCI, et j'attendrai patiemment l'apparition dans la version "éditeur" pour pouvoir progresser plus facilement avec la mise au point. Ceci dit, ça marche dès maintenant en mode "exécution" et en mode "debug" avec Synedit_Editor, puisque j'exécute à travers Panoramic.exce sans éditeur.

Bravo et Merci !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

Evènement USER_EVENT Empty
MessageSujet: re   Evènement USER_EVENT EmptyMar 18 Oct 2016 - 9:19

@Klaus,

Cela signifierait il la fin programmée des "edit" cachés avec leur "on_change" ?... Smile
Revenir en haut Aller en bas
Klaus

Klaus


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

Evènement USER_EVENT Empty
MessageSujet: Re: Evènement USER_EVENT   Evènement USER_EVENT EmptyMar 18 Oct 2016 - 10:11

Oui et non. Les évènements passeront par des ON_USER_EVENT au lieu des ON_CHANGE d'un EDIT. Mais dans certains cas, la quantité d'information à transmettre est plus importante que ce qui peut tenir dans deux valeurs entières, comme du texte, par exemple. Et dans ce cas, il y aura toujours un EDIT, un MEMO ou un LIST pour recevoir les informations. Mais plus d'évènements sur ces objets.

En fait, j'utiliserai USER_EVENT_WPARAM pour coder l'origine de l'évènement et sa nature, ainsi que certaines informations numériques. USER_EVENT_LPARAM sera entièrement dédié aux informations retournées par l'évènement. Et donc, éventuellement, un texte dans un EDIT, MEMO ou LIST.

Mais dans tous les cas, pour les fonctions existantes, je ferai en sorte que ce soir compatible avec les codes Panoramic existants. Il y aura par exemple, pour l'objet StringGrid, un nouveau code fonction pour DridFunction (code 33 pour être précis) qui "active" se nouveau comportement. Par défaut, la DLL fonctionnera exactement comme avant. Ce n'est qu'en activant le nouveau comportement que la DLL va générer ces nouveaux USER_EVENT. Bien sûr, les nouvelles créations intégrerons ce mode dès le départ.

EDIT

Voici comment ça va s'articuler, dans une première approche. J'ai créé une fonction dans KGF.dll qui retourne, dans un MEMO, des lignes Panoramic pour gérer le codage de la gestion des USER_EVENTs. Exemple:
Code:
Rem    *** Liste des constantes Panoramic de KGF.dll ***
  dim UserEventConstants : UserEvent_WParam_Module = 4278190080  : ' Masque pour le module dans WParam
  dim UserEventConstants : UserEvent_WParam_Type = 16711680  : ' Masque pour le type dans WParam
  dim UserEventConstants : UserEvent_WParam_Data = 65535  : ' Masque pour les données spécifiques dans WParam
  dim UserEvent_GRID : UserEvent_GRID = 16777216 : ' module GRID (No. 1)Rem    *** constantes pour ON_USER_EVENT ***
  dim UserEvent_GRID : UserEvent_GRID = 16777216 : ' module GRID (No. 1)
  dim UserEvent_GRID_Click : UserEvent_GRID_Click = 1*65536 : ' type "click dans cellule"
  dim UserEvent_GRID_Leave : UserEvent_GRID_Leave = 2*65536 : ' type "sortie de cellule"
  dim UserEvent_GRID_Return : UserEvent_GRID_Return = 3*65536 : ' type "touche Return dans cellule"
Rem Usage:
select bin_and(UserEvent_WParam,UserEvent_WParam_Module)
  case UserEvent_GRID
    select bin_and(UserEvent_WParam,UserEvent_WParam_Type)
      case UserEvent_GRID_Click
        message "Ligne="+str$(UserEvent_LParam)+"  Colonne="+str$(bin_and(UserEvent_WParam,UserEvent_WParam_Data))
        ...
      case UserEvent_GRID_Leave
        ...
      case UserEvent_GRID_Return
        ...
    end_select : ' fin USER_EVENT_GRID
end_select : ' fin UserEvent_WParam

Ces lignes définissent les constantes pour gérer cela, et donnent la structure de codage pour les 3 évènements générés par l'objet StringGrid.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Evènement USER_EVENT Empty
MessageSujet: Re: Evènement USER_EVENT   Evènement USER_EVENT Empty

Revenir en haut Aller en bas
 
Evènement USER_EVENT
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Nouvel événement
» Evènement ON_SHOW sur une FORM
» Déclarer une routine évènement par son nom
» Appel d'événement en dehors du END
» Déclarer une routine évènement par son nom

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: