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
» PANORAMIC V 1
Gestion des évènements par une DLL Emptypar papydall Aujourd'hui à 3:22

» select intégrés [résolu]
Gestion des évènements par une DLL Emptypar jjn4 Hier à 17:00

» number_mouse_up
Gestion des évènements par une DLL Emptypar jjn4 Hier à 11:59

» Aide de PANORAMIC
Gestion des évènements par une DLL Emptypar jjn4 Hier à 11:16

» trop de fichiers en cours
Gestion des évènements par une DLL Emptypar lepetitmarocain Hier à 10:43

» Je teste PANORAMIC V 1 beta 1
Gestion des évènements par une DLL Emptypar papydall Hier à 4:17

» bouton dans autre form que 0
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

» Gestion d'un système client-serveur.
Gestion des évènements par une DLL Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Gestion des évènements par une DLL Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Gestion des évènements par une DLL Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Gestion des évènements par une DLL Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Gestion des évènements par une DLL Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Gestion des évènements par une DLL Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Gestion des évènements par une DLL Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-45%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
339 € 622 €
Voir le deal

 

 Gestion des évènements par une DLL

Aller en bas 
AuteurMessage
Klaus

Klaus


Nombre de messages : 12294
Age : 74
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"
» Documentation des évènements
» Evènements dans une DLL
» Priorité 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: