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.
Gestion des évènements par une DLL Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Gestion des évènements par une DLL Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Gestion des évènements par une DLL Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Gestion des évènements par une DLL Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Gestion des évènements par une DLL Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Gestion des évènements par une DLL Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Gestion des évènements par une DLL Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Gestion des évènements par une DLL Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Gestion des évènements par une DLL Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Gestion des évènements par une DLL Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Gestion des évènements par une DLL Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Gestion des évènements par une DLL Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Gestion des évènements par une DLL Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Gestion des évènements par une DLL Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Gestion des évènements par une DLL 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
Le deal à ne pas rater :
Bon plan achat en duo : 2ème robot cuiseur Moulinex Companion ...
600 €
Voir le deal

 

 Gestion des évènements par une DLL

Aller en bas 
AuteurMessage
Klaus

Klaus


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

Gestion des évènements par une DLL Empty
MessageSujet: Gestion des évènements par une DLL   Gestion des évènements par une DLL EmptySam 18 Fév 2017 - 11:50

Dans la dernière version, Jack a ajouté l'évènement ON_USER_EVENT, et ça fonctionne parfaitement. C'est un grand pas en avant, et je suis en train d'en tirer avantage.

Il y a un problème similaire que j'aimerais pouvoir résoudre. Panoramic rend certains évènements Windows accessibles au niveau du langage Panoramic, concernant des objets (ON_CLICK, ON_KEY_DOWN etc). Mais il y en a beaucoup d'autres. J'ai parfaitement conscience qu'il est totalement hors de propos de rendre l'ensemble des évènements accessibles - Panoramic deviendrait une usine à gaz, en contradiction avec le concept initial. Par contre, j'aimerais pouvoir lever cette limitation à l'intérieur d'une DLL.

Pour cela, il faudrait pouvoir spécifier une fonction ou procédure interne à une DLL, comme routine évènement d'un type particulier. Le problème se pose pour moi au sujet de l'évènement ON_DRAWWCELL d'un objet GRID (TStringGrid en Delphi). J'ai développé un objet StringGrid créé directement dans la DLL et piloté uniquement par des appels à des fonctions de la DLL. Cela marche, mais reste très lourd et insatisfaisant au niveau d'une programmation Panoramic standard.

Concernant ON_DRAWWCELL d'un GRID, on pourrait évidemment créer, en Panoramic, l'évènement ON_DRAW_CELL, puis gérer tout en Panoramic. Mais il y a trois écueils à cela: d'une part, je ne suis pas certain que Panoramic ait suffisamment de fonctionnalités et performance pour gérer l'affichage individuel de chaque cellule d'un GRID (accès au canvas etc), ensuite un évènement ON_DRAWCELL reçoit cinq paramètres pour lesquels il faudrait définir des variables système, et pour finir cela resterait une solution spécifique à un seul évènement d'un seul objet. Je ne pense pas que ça vaille l'effort de faire cette réalisation.

Par contre, il serait utile de disposer d'une commande Panoramic définissant une procédure DLL comme routine évènement ! Une commande du type suivant:
ON_WINDOWS_EVENT N,E$,A%
avec:
N = numéro d'objet Panoramic
E$ = nom de l'évènement
A% = adresse d'une "class procedure" dans la DLL

et bien entendu la commande symmétrique
OFF_WINDOWS_EVENT N,E$
On pourrait alors faire facilement une fonction DLL retournant cette adresse A% qui serait mémorisée dans une variable standard de Panoramic. Le nom de l'évènement serait donné sous forme d'une chaîne de caractères (du genre "DRAWWCELL" ou "ONDRAWWCELL"...), et Panoramic, via les informations RTTI, pourra retrouver l'évènement ciblé et charger l'adresse spécifiée.

Tout ceci ne peut malheureusement pas être fait directement dans la DLL, car les versions VCL diffèrent. Je peux dévier la procédure WndProc via un API en utilisant le handle, mais je ne peux pas accéder aux propriétés ON... des objets.

J'ai conscience qu'en cas d'erreur de programation dans la DLL, ce genre de fonctionnalités peut conduire à de violents plantages du programme. Mais ceci est vrai pour beaucoup d'autres aspects de programmation des DLLs, et depuis que les violations de mémoire et autres crashs lourds sont captés dans Panoramic, les conséquences sont beaucoup moins spectaculaires, bien que cela complique un peu la mise au point des DLLs. Mais c'est mieux ainsi.

J'ai également conscience que cette demande, très technique, n'est certes pas prioritaire, surtout dans la situation actuelle de Jack. Mais je pense vraiment que cela ouvrirait de nouveaux domaines d'application dans les DLLs. De plus, la technique proposée ne serait pas limitée à une DLL en Delphi, mais pourrait également être utilisée à partir d'une DLL et FreeBasic ou en C.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
 
Gestion des évènements par une DLL
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Manipulation de la gestion des évènements
» Déclarer des évènements "utilisateur"
» Evènements dans une DLL
» Nouveaux évènements pour Panoramic
» Documentation des évènements

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: