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
» Gestion d'un système client-serveur.
Evènement USER_EVENT Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Evènement USER_EVENT Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Evènement USER_EVENT Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Evènement USER_EVENT Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Evènement USER_EVENT Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Evènement USER_EVENT Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Evènement USER_EVENT Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Evènement USER_EVENT Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Evènement USER_EVENT Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Evènement USER_EVENT Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Evènement USER_EVENT Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Evènement USER_EVENT Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Evènement USER_EVENT Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Evènement USER_EVENT Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Evènement USER_EVENT Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-39%
Le deal à ne pas rater :
Pack Home Cinéma Magnat Monitor : Ampli DENON AVR-X2800H, Enceinte ...
1190 € 1950 €
Voir le deal

 

 Evènement USER_EVENT

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12301
Age : 75
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 : 12301
Age : 75
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 : 2386
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 : 12301
Age : 75
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 : 2386
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 : 12301
Age : 75
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 : 12301
Age : 75
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 : 8611
Age : 53
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 : 12301
Age : 75
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
» Appel d'événement en dehors du END
» Déclarer une routine évènement par son nom
» Evènement ON_CHANGE sur une FORM
» Evènement ON_SHOW sur une FORM

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: