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
» Logiciel de planétarium.
ON_CHANGE pour l'objet MEMO Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
ON_CHANGE pour l'objet MEMO Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
ON_CHANGE pour l'objet MEMO Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
ON_CHANGE pour l'objet MEMO Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
ON_CHANGE pour l'objet MEMO Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
ON_CHANGE pour l'objet MEMO Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
ON_CHANGE pour l'objet MEMO Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
ON_CHANGE pour l'objet MEMO Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
ON_CHANGE pour l'objet MEMO Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
ON_CHANGE pour l'objet MEMO Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
ON_CHANGE pour l'objet MEMO Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
ON_CHANGE pour l'objet MEMO Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
ON_CHANGE pour l'objet MEMO Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
ON_CHANGE pour l'objet MEMO Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
ON_CHANGE pour l'objet MEMO Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
Boutique Nike : -25% dès 50€ sur TOUT le site Nike avec le code ...
Voir le deal

 

 ON_CHANGE pour l'objet MEMO

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


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

ON_CHANGE pour l'objet MEMO Empty
MessageSujet: ON_CHANGE pour l'objet MEMO   ON_CHANGE pour l'objet MEMO EmptyVen 28 Nov 2014 - 0:47

J'ai hésité à poster cela dans la section des bugs, mais je préfère le faire finalement ici.

L'objet MEMO peut recevoir un évènement ON_CHANGE. Il est déclenchée par une commande ITEM_ADD, par exemple.

L'ennui, c'est qu'un message Windows WM_SETTEXT ne déclenche pas cet évènement, bien que ce message remplace complètement le texte du mémo par un autre texte, envoyé ce message. Si ce n'est pas un changement du contenu du mémo, je ne comprends plus...

Pour un objet EDIT, par contre, ça marche bien: la commande TEXT déclenche l'évènement ON_CHANGE d'un objet EDIT, et le message Windows WM_SETTEXT également. Parfait. Mais alors, pourquoi cette dissymétrie avec MEMO ?

Voici les codes pour le mettre en évidence. Le code Panoramic:
Code:



label change, chargeP, chargeW
dim res%

memo 10 : top 10,10 : left 10,10 : on_change 10,change

button 20 : top 20,100 : left 20,10 : width 20,150
  caption 20,"Charger mémo Panoramic"
  on_click 20,chargeP
 
button 30 : top 30,130 : left 30,10 : width 30,150
  caption 30,"Charger mémo Windows"
  on_click 30,chargeW
 
dll_on "test_memo.dll"

end

change:
  message "mémo a changé"
  return
 
chargeP:
  item_add 10,date$+" "+time$
  return

chargeW:
  res% = dll_call1("test_memo_load",handle(10))
  return

Et le code de la DLL par test_memo.dpr (Delphi 6 Personal Edition):
Code:
library test_memo;

uses
  SysUtils,
  Windows,
  Messages,
  Classes;

{$R *.res}

function test_memo_load(hnd: integer):integer; stdcall; export;
var
  s: string;
begin
  s := FormatDateTime('dddd, mmmm d, yyyy, hh:mm AM/PM', Now);
  SendMessage(hnd, WM_SETTEXT,0, integer(pchar(s)));
  result := 0;
end;

exports
  test_memo_load;

begin
end.

La DLL est ultra-simple. Une seule fonction qui remplace le texte du mémo par une chaîne de caractères contenant la date et l'heure. Cette fonction est appelée par le bouton "Charger mémo Windows". L'évènement ON_CHANGE du mémo devrait se déclencher chaque fois. Il n'en est rien. Le bouton "Charger mémo Panoramic" ajoute une ligne avec date et heure au texte du mémo. Et là, l'évènement se déclenche.

Est-ce que tu peux y faire quelque chose, Jack ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


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

ON_CHANGE pour l'objet MEMO Empty
MessageSujet: Re: ON_CHANGE pour l'objet MEMO   ON_CHANGE pour l'objet MEMO EmptyVen 28 Nov 2014 - 16:07

Oui, après différents essais, j'en arrive à la conclusion qu'un événement OnChange ne se déclenche sur un MEMO que lorsqu'on ajoute ou qu'on retire une ligne.
Le message Windows WM_SETTEXT ne déclenche pas l'événement OnChange sur cet objet : c'est codé comme ça dans Windows.

Ce comportement n'est pas du à Panoramic, mais à Windows.

_________________
ON_CHANGE pour l'objet MEMO Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


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

ON_CHANGE pour l'objet MEMO Empty
MessageSujet: Re: ON_CHANGE pour l'objet MEMO   ON_CHANGE pour l'objet MEMO EmptyVen 28 Nov 2014 - 17:33

D'accord. Merci, Jack. Il va falloir que je change mon fusil d'épaule.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

ON_CHANGE pour l'objet MEMO Empty
MessageSujet: Re: ON_CHANGE pour l'objet MEMO   ON_CHANGE pour l'objet MEMO EmptyVen 28 Nov 2014 - 22:07

Pour clore ce sujet, je publie ici ma solution à ce problème. J'ai fait une procédure interne à la DLL, avec laquelle je peux forcer le déclenchement de l'évènement ON_CHANGE d'un objet MEMO. Je lui passe le handle de l'objet, et si c'est un TMemo, je fais ce traitement:
Code:
// force l'évènement ONCHANGE d'un objet TMemo (qui n'est pas déclenché par me message WM_SETTEXT
procedure fire_memo_onchange(hnd: integer);
var
  aName: array [0..255] of Char;
  j: integer;
  s: string;
begin
  GetClassName(hnd, aname, 256);
  if aname='TMemo' then begin
    j := GetWindowTextLength (hnd);
    SetFocus (hnd);
    SendMessage(hnd, EM_SETSEL, j, j);
    s := ' ';
    SendMessage (hnd, EM_REPLACESEL, 0, LongInt(pchar(s)));
  end;
end;

Je reconnais que ça n'a pas d'intérêt particulier pour un panoramicien. Je le mets juste pour clore ce sujet et indiquer que je sais dorénavant déclencer cet évènement si j'en ai besoin. En tout cas, je te remercie d'avoir planché sur ce problème.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





ON_CHANGE pour l'objet MEMO Empty
MessageSujet: Re: ON_CHANGE pour l'objet MEMO   ON_CHANGE pour l'objet MEMO Empty

Revenir en haut Aller en bas
 
ON_CHANGE pour l'objet MEMO
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Un FORM pas très en forme
» Mémo pour Qrcode
» Quels ascii interdits pour mémo
» obtenir la taille d'une fonte en pixels pour un MEMO
» Nouvelles commandes pour LIST, COMBO et MEMO

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: