Developpez.com

Le Club des Développeurs et IT Pro

La blockchain est-elle une technologie sans intérêt ?

Une étude stipule que ses cas d'utilisation ont un taux de réussite de 0 %

Le 2018-12-02 13:57:37, par Coriolan, Expert éminent sénior
Si vous suivez l’actualité tech, vous avez sûrement entendu parler de la blockchain, une technologie qui devrait façonner le monde de demain selon ses partisans. La blockchain est considérée par certains comme une révolution au même titre qu’internet, et elle est appelée à révolutionner plusieurs domaines allant de la cybersécurité à la finance.

La blockchain constitue-t-elle vraiment un véritable changement de paradigme ? C’est la question à laquelle a tenté de répondre une étude menée par trois chercheurs sur 43 solutions implémentées dans le domaine de développement international.


John Burg, un ancien adepte de la blockchain et membre de l’Agence des États-Unis pour le développement international (USAID), a entrepris avec deux autres professionnels du même domaine d’étudier des cas d’application du registre distribué lorsqu’il est utilisé par les ONG, entreprises et agences, mais ils n’ont trouvé aucune preuve de succès.

« Nous avons documenté 43 cas d’utilisation de la blockchain à travers des recherches sur internet, la plupart ont été décrits par des prétentions éclatantes comme ‘les coûts opérationnels...réduits à jusqu’à 90%,’ ou avec l’assurance de “capture et stockage sécurisé et soigneux de données.’ Nous avons constaté une prolifération de communiqués de presse, de livres blancs et des articles de persuasion. Cependant, nous n’avons trouvé aucune documentation ou preuve des résultats de la blockchain par rapport à ces prétentions. Nous n’avons pas aussi trouvé de leçons apprises ou un aperçu concret, comme c’est le cas pour les autres technologies en développement », a écrit le trio de chercheurs.

Les chercheurs ont tenté d’entrer en contact avec plusieurs firmes de blockchain, par email, par téléphone et en personne, mais sans succès.

« Personne n’a voulu partager des données sur les résultats de programme, de processus MERL [monitoring, evaluation, research, and learning] ou de gestion adaptative pour le potentiel de renforcement », a écrit l’équipe de recherche. « Malgré tout le battage médiatique autour de la blockchain et comment elle assure la transparence de processus et d’opérations dans les environnements de faible niveau de confiance, l’industrie elle-même est opaque. À partir de là, nous avons déterminé que le manque de preuves à l'appui des allégations de valeur de la blockchain dans l'espace du développement international est une lacune critique pour les adoptants potentiels. »

Burg a été jusqu’à récemment un fervent partisan de la blockchain comme il l’a expliqué dans ce billet de blog.

« La blockchain est comme un métier à tisser qui peut lier ensemble de multiples brins de choses séparées... dans un tissu intégré où vous pouvez voir ce que les données signifient et ajuster les ressources en réponse », explique-t-il il y a quelques mois.

La blockchain a été incroyablement mal présentée, en réalité elle recouvre une base de données qui englobe des problèmes de performance et de scalabilité, chose qui peut être dite pour toutes les bases de données. L’article nous apprend que la valeur à long terme et l’application de la blockchain sont minimales. Elle résout un nombre minime de problèmes. Pour la plupart des applications d’entreprise, la blockchain ne fait pas mieux qu’une base de données ou un programme de tableur. La blockchain peut être un outil ingénieux dans certaines circonstances, mais ce n’est pas la technologie révolutionnaire qu’on veut nous faire croire.

La blockchain est devenue un mot à la mode, un buzzword que tout le monde utilise pour faire vendre et engranger les profits tant que la bulle n’a pas encore explosé. Des entreprises proposent des services de consulting à des sommes importantes juste pour vous dire si la blockchain est adaptée pour vous ou non. HTC, le constructeur taïwanais qui peine à se redresser sur le marché, a lancé son premier smartphone doté de la technologie blockchain, une expérience smartphone adaptée à un utilisateur moderne et à la nouvelle ère d’internet, a informé l’entreprise.

En général, les autres mots à la mode ont porté sur des technologies qui avaient au moins un but pratique, pas seulement le potentiel de changer l’industrie avec pour seule preuve un statut en tant que mot à la mode. La blockchain s’est montrée incroyablement et de façon unique une technologie sans un réel intérêt à part peut être l’implémentation d’une cryptomonnaie.

Malgré cette réalité, certaines personnes continuent de défendre la blockchain, estimant que cette technologie s'est avérée extrêmement utile dans de nombreux secteurs d'activité tels que l'énergie, le négoce de titres, les échanges interbancaires et les devises. Ces partisans continuent de défendre qu’il existe encore des cas d’utilisation intéressants. Ils n’impliquent pas tous peut-être un besoin de décentralisation ou une blockchain publique, mais chaque cas bénéficie d'un sous-ensemble de la fonctionnalité.

Mais comme le prouve cette étude, avec un taux de réussite de 0 %, la blockchain continue d’être une simple tendance malgré l’énorme battage médiatique. Les vendeurs de ce rêve qu’est la blockchain ont été soucieux de vanter les mérites de cette technologie, mais ils sont incapables de présenter des preuves tangibles de succès sur le terrain. Il y a aussi la question s’il y a un besoin réel de blockchain dans tous les secteurs d’activité. En quoi peut-elle remplacer une base de données normale ? D’autant plus que ces avantages (très limités) ne justifient pas les coûts qui y sont associés.

Source : merltech

Et vous ?

Pensez-vous que la blockchain a une réelle valeur ajoutée ?
Si oui, quels sont les secteurs d'activité qui pourraient en tirer parti ?
Êtes-vous d'accord qu'il y a eu un battage médiatique de la blockchain ?

Voir aussi

L'énorme potentiel de la technologie de blockchain peine à séduire les entreprises car son adoption nécessite un changement structurel et culturel
La blockchain : une révolution technologique selon le Président chinois Xi Jinping, Pékin veut utiliser la technologie comme moteur de développement
Les dépenses mondiales autour de la blockchain pourraient atteindre les 11,7 milliards de dollars en 2022 d'après des projections d'IDC
Comment la blockchain pourrait-elle révolutionner les services publics ? Et si tout notre vécu était archivé dans la blockchain ?
  Discussion forum
29 commentaires
  • benjani13
    Membre extrêmement actif
    Sans intérêt non. Utilisé à toutes les sauces oui.

    La blockchain, comme l'IA, a obtenu un statut étrange, elle est sorti de sa nature d'outil technique, parmi un choix variés d'outils, pour être un produit final en lui même. Au lieu d'avoir des applications basées sur l'outil blockchain, la blockchain est devenu le produit finale, et l'application reléguée au statut de simple outil pour mettre en place de la blockchain. Il y a eu un emballement, tant à la fois par les entreprises qui ont créé des applications pour montrer qu'ils étaient à la pointe de la technologie, et à la fois je pense des clients qui ont réclamés de la blockchain comme gage d’innovation. La blockchain a pris je ne sais trop comment ce symbole de pointe de la technologie, ne pas l'utiliser seront donc être en retard, dépassé.
  • Cassoulatine
    Nouveau Candidat au Club
    "blockchain" est un concept créé pour bitcoin, pour faire une monnaie sans tiers de confiance. Quand on a un tiers de confiance (ie 99% des cas) la blockchain n'a effectivement aucun intérêt.
  • gangsoleil
    Modérateur
    Je me suis peut-être mal exprimé : il n'y a actuellement aucun projet/logiciel/truc qui utilise une blockchain et qui soit utilisé par le grand public.

    Oui, il y a plusieurs projets accessibles à tout le monde.
    Oui, certains ont de l'avenir.
    Oui, il y a pleins de projets en cours qui pourraient avoir des applications prochainement [note : penser à définir prochainement]
    Oui, cette technologie a un intérêt.
    Oui, j'ai connaissance de projets blockchain, j'en ai utilisé. J'ai même un copain qui bosse dedans comme on dit dans ces cas là

    Pour prendre une comparaison, aujourd'hui, le cloud (autre buzzword très à la mode fut un temps) est utilisé par le grand public sans le savoir. L'IOT aussi. Et pourtant le grand public ne s'en rend pas forcément compte.
    À contrario, rien de tel pour la blockchain.
  • 23JFK
    Membre expert
    Envoyé par onilink_

    ...

    Pour la taille des blockchains je pensais naïvement que cela fonctionnait ainsi.
    Mais en fait non.

    Il y a deux types de nœuds:
    - les full-nodes (ou masternodes) qui possèdent la version complète de la blockchain
    - les lite clients qui ne possèdent qu'une partie de la blockchain

    Et si je ne m'abuse, les utilisateurs de bitcoin sont majoritairement des lite clients, car en 2016 la blockchain bitcoin faisait déjà 100Go...
    Je doute que quiconque qui a 300$ en bitcoin s'amuse a stocker intégralement la blockchain sur son disque dur.

    ...
    Le client bitcoin original est un full-node avec le letmotiv "vous ne pouvez faire confiance à personne" qui fait partie intégrante que protocol blockchain.

    Les lite clients s'en remettent nécessairement à des tiers de confiance pour ce qui concerne les parties de la blockchain qu'ils n'ont pas eux-mêmes vérifier et quand les tiers de confiance tendent à se regrouper puis se coopter, l'on en revient à un système centralisé.
  • onilink_
    Membre émérite
    Envoyé par 23JFK
    Le client bitcoin original est un full-node avec le letmotiv "vous ne pouvez faire confiance à personne" qui fait partie intégrante que protocol blockchain.

    Les lite clients s'en remettent nécessairement à des tiers de confiance pour ce qui concerne les parties de la blockchain qu'ils n'ont pas eux-mêmes vérifier et quand les tiers de confiance tendent à se regrouper puis se coopter, l'on en revient à un système centralisé.
    Oui enfin, vu le nombre d'utilisateurs, ou même de "groupes", on est très loin d'arriver à un système centralisé.

    Mais il y a un moment ou il faut faire des choix, si tu veux une facilité d'accès et ne pas avoir a télécharger toute la DB... tu dois bien faire confiance a quelqu'un qui la possède.
    Enfin bon, tout cela est voué a évoluer, il y a beaucoup de recherche autour de la blockchain, et bitcoin est primitif sur pas mal de points, étant donné qu'il était un peu le premier Proof of Concept.

    Envoyé par fodger
    Visiblement ce n'est pas de mon côté; c'est avant tout un terme marketing pour désigner une bd distribuée et on peut tout à fait corrompre la chaine bien qu'elle soit décentralisée, bitcoin en est un parfait exemple.

    Les blockchain soulèvent plus de problèmes qu'ils n'apportent de solutions, et nécessitent toujours plus de stockage des volumes titanesques et des puissances de calcul plutôt élevées.
    La blockchain est un outil adapté a des problèmes spécifiques. Oui, l'utiliser pour n'importe quoi apportera plus de problèmes que de solutions, mais si tu l'utilises correctement non, ça fonctionne très bien.
    J'aimerais bien avoir ton exemple de corruption de la chaîne bitcoin, j'en ai jamais entendu parler et ça me semble très improbable.
    Par contre il y a des forks, mais ça c’est encore autre chose.

    Quand aux stockages volumineux et a la puissance de calcul j'ai déjà répondu plus haut. Encore une fois ce n'est pas parce que bitcoin est dans ce cas précis que c'est un problème inhérent à la technologie.
    Le principe de base de la blockchain évolue, ce n'est pas une technologie statique.
  • benjani13
    Membre extrêmement actif
    Envoyé par Cassoulatine
    "blockchain" est un concept créé pour bitcoin, pour faire une monnaie sans tiers de confiance. Quand on a un tiers de confiance (ie 99% des cas) la blockchain n'a effectivement aucun intérêt.
    Je ne partage pas cette vision. La blockchain peut être utilisée même lorsqu'il y a existence d'un tiers de confiance. Le tiers de confiance est ce qu'on avait de mieux jusque là mais il n'est pas infaillible, ce n'est pas la solution ultime. On l'a bien vu dans de nombreux cas où le tiers a trahi la confiance qu'on lui avait accordé, volontairement ou non (piratage, etc). La blockchain peut réduire ces risques, en se passant des défauts inhérents aux solutions se basant sur un tiers de confiance. La blockchain peut donc remplacer le tiers de confiance.

    Cependant une blockchain nécessite une implémentation correcte, au risque de porter une confiance aveugle dans un nouveau système (car labellisé "blockchain" qui a gardé les défauts de l'ancien. Par exemple quand je vois une entreprise utiliser une blockchain privée je me pose la question de la distribution des noeuds de cette blockchain. Si au final il n'y a qu'un seul pauvre nœud tournant sur un serveur de l'entreprise cela perd toute son efficacité. Il faut que de nombreux noeuds tournent, sous différentes propriétés (car le même soucis se pose si tous les nœuds appartiennent à une même entité).

    Néanmoins, l'utilisation d'une blockchain publique pose je pense des problèmes de souveraineté de son infrastructure. Utiliser une blockchain publique (Ethereum, ...) permet de profiter de la sécurité d'une chaine faisant déjà tourner de nombreux noeuds, mais soumet l'application l'utilisant à un risque complètement externe, la bonne santé de la dite blockchain. On a vu les soucis qui peuvent arriver (hack, fork, etc). Je serais intéressé d'avoir le retour de personnes ayant été confronté à ces interrogations.

    Tout cela pour en revenir à la conclusion que c'est un outil intéressant, à utiliser avec parcimonie.
  • 23JFK
    Membre expert
    Pas viable, trop lent et trop consommateur d'espace de stockage, de temps de téléchargement et, in fine, d'électricité par individu. Devoir télécharger une blockchain entière de X Giga voire Téra octets (pour les derniers utilisateurs d'une blockchain qui se serait bien établie et devenue ainsi pérenne) pour seulement qu'un usager occasionnel puisse faire une vérification de validité est totalement absurde. L'on en revient alors au principe de centralisation, ce qui enlève 95% de l'intérêt du concept blockchain. A moins d'utiliser massivement une hypothétique technologie quantique qui n'existe pas encore, les blockchains ne sont intégrables que dans de petits projets à la viabilité très limitée dans le temps... Mais comme c'est un peu lourd à implémenter, les petits projets où une blockchain pourrait être viable ne peuvent pas vraiment y trouver leur compte en terme de coûts et de maintenance.
  • sergio_is_back
    Expert confirmé
    Il en est de la blockchain, comme l'IA d'ailleurs, il faut se méfier des effets de mode et de ceux qui vendent de l'intelligence qu'ils n'ont pas en stock...
  • gangsoleil
    Modérateur
    Envoyé par Shepard
    D'après ma compréhension de ce qu'est une blockchain, je peux citer au moins un projet qui se base sur cette technologie et qui est un succès : Git ...
    Euh, non, git n'est pas du tout basé sur la blockchain.

    Il n'y a pas, en dehors des cryptomonaies, de projet blockchain connu. Il y a des tests, mais la plupart des projets en sont à ce stade pour le moment.
  • Ludwig1
    Membre régulier
    Salut tout le monde,
    Un de mes collègue avait fait un jour la remarque suivante:
    " De toute ma carrière, je n'ai jamais changé mes méthodes pédagogiques sur la façon d'enseigner, j'ai
    été à la mode 3 fois"

    Un peu d'historique:
    Il y a fort longtemps, avant que n'existe MS, Dos et Cie j'utilisais pour écrire mon codage, un éditeur de bloc.
    Chaque bloc avait un numéro d'ordre. La taille d'un bloc était de 16 lignes de 80 caractères par ligne. Les numéros des blocs permettaient de faire oh surprise le chainage des blocs.
    Il y a environs 30 ans en arrière, quand existait MSDOS et Cie et que 3.11 venait d'apparaitre, nous avions pour les besoins de l'enseignement ainsi que pour les besoins des Labos et en nous appuyant sur une machine virtuelle, mis au point au département de mécanique, un système de composants, que nous avons installé sur les serveurs de l'école. Ces composants étaient alors à la disposition des étudiants et leurs permettaient d'assembler une quelconque application laquelle tournait alors sur la machine virtuelle de base.
    Les composants ressemblaient à ceci:



    Ceci servait en tant qu'éditeur graphique, les composants de la bibliothèque étaient affichés dans les diapos, il suffisait de les tirer dans l'interface homme machine de la nouvelle application puis de lancer un compilateur spécialement conçu pour tricoter les liens et l'affaire était classé. Ensuite, à l'aide d'un éditeur particulier, on attachait les servants (Exécuteurs des tâches) aux différentes commandes de l'interface. Pour une application standard, ça prenait environ 1h de travail pour l'étudiant.

    Un Autre Exemple:


    Tous ces travaux ont eu lieu avant WIN95 et JAVA. Puis arriva WIN95, NT JAVA Etc... La maintenance sous
    DOS devenant de plus en plus délicate, nous avons abandonné et nous sommes passé sur une machine virtuelle du commerce qui tourne sur tous les systèmes d'exploitation de MS ou LINUX ou APPLE Etc..

    C'est en lisant des articles sur la chaine de bloc qu'il m'est venu l'idée de déterrer le vieux projet décrit ci-dessus (il n'est jamais sorti des labos de l'école) et de l'adapter au concept de bloc chain.
    De tels blocs ressemblent à ceci:



    Un bloc de base, c.a.d. le bloc zéro de la chaine de blocs, puis un bloc permettant l'affichage de graphes, puis encore un autre permettant de choisir une couleur. Il faut dire que les blocs sont indépendant de toute application, ils existent de façon autonome. Pour les faires fonctionner, il suffit de les "encliqueter" sur la machine virtuelle un peu comme l'installation d'un outil sur une broche d'un centre d'usinage.
    Une nouvelle application consistera alors à choisir les blocs à disposition puis d'en faire le chainage.

    Tous ceci pour dire que le principe de la bloc chain n'est pas forcement quelque chose de vraiment nouveau.
    Il s'est juste rajouté l'encryptage ainsi que le chainage crypté qui interdit toute modification d'un bloc existant et validé.
    En conclusion, au bout de 50 ans et n'ayant pas changé d'idée, je me retrouve à nouveau à la pointe de la technologie.
    Pour ce qui est de l'IA dont tout le monde parle, je souhaite juste rappeler que McCarthy au MIT, dans les années 60 avait déjà apporté bien des solutions. Mais comme la majorité d'entre vous n'était pas nés, on sait pas.
    Evidement les blocs décrit ci-dessus sont écrit avec SYNTAL, (SYNThetic machine and Algorithmic Langage)
    et ils tournent sous EasyWindows
    ça ressemble à ceci:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    575
    576
    577
    578
    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589
    590
    \ ############################################################################################################
    \ ############											##############
    \ ############			INFORMATIONS ET DESCRIPTION DU DIALOGUE 			##############
    \ ############											##############
    \ ############################################################################################################
    
    &&   Nom du Bloc:     		ZoomCourbesRéduites(C8A41186F4)Dlg   Bloc de démonstration d'une application Easywindows 
    &&   Date de création:     	01/08/2018
    &&   Heure de création:    	16:12:07
    &&   Copyright: (C)        	2001-2030 
    &&   Bloc développé par: 	Louis Jean-Pierre SCHMITT
    &&   Email:                	jean.pierre@buechi-schmitt.ch 
    
    &&   Dialogue  ZoomCourbesRéduites(C8A41186F4)Dlg
    
    &&   ZoomCourbesRéduites(C8A41186F4)Dlg.FTH is a computer Dialog component developed
    &&   by I.C.M. it is based of Microsoft Windows and Easywindows Systems
    &&   This component is for free use and made available to users by I.C.M.
    &&   I.C.M. Assumes no responsibility 
    &&   for the implementation and use of this computer component.
    
    
    \ ############################################################################################################
    \ ############											##############
    \ ############			INSTALLATION DE LA CONFIGURATION DES DONNEES 			##############
    \ ############											##############
    \ ############################################################################################################
    
    \ ==========   Installation des données ================
    
    
    16 CreateNewliste ZoomCourbesRéduites(C8A41186F4)Lst	\ Liste contenant les objets avec leurs valeurs attachées. Ces Valeurs sont mises en place par SendTo
    							\ EXEMPLE: ( #ComboBox1.Value  :Id.Value SourceFile \DeGiroTmpFile\FileDates.FTH :M0 X... :MX; )SendTo
    							\ Construira la séquence suivante dans ZoomCourbesRéduites(C8A41186F4)Lst
    							\ #ComboBox1						Entête de Liste, Nom de l'objet précédé par #
    							\ :Id.Value SourceFile \DeGiroTmpFile\FileDates.FTH	Source des données 
    							\ :M0 X...						Liste des données
    							\ :M.  ...
    							\ :MX; 							Fermeture de la liste par le marqueur :MX;
    
    
    ' ZoomCourbesRéduites(C8A41186F4)Lst IS ObjetListe	\ On conecte le nom de la liste sur le mot ObjetListe. De ce fait, toutes les procédures
    							\ de transmission du courrier INTRABLOC relative à un bloc donné utiliserons le mot ObjetList pour
    							\ dialoguer avec un autre objet de la liste. 
    							\ En clair, ObjetList est le nom de la boite au lettre interne qui permet le dialogue entre les objets d'un même
    							\ Bloc.   
    
    
    
    
    
    : ZoomCourbesRéduites.Datas		S( --- ) \ Installation des éléments
    
      HWNB >R
     
     ( #QUADRANT1.Datas :Id.Quadrant1   20   30 1260 880 ConfigToolTrading(C8A41186F4)Dlg :M0 Color.Back 125 )SendTo
     ( #Quadrant1.Datas :M1 Color.Axe 13 :M2 LineWidth.Axe 2 :M3 Offset.AxeX 70 :M4 Offset.AxeY 40 )SendTo
     ( #Quadrant1.Datas :M5 GrandeurY$ [F(y)+%] [F(y)-%] :M6 GrandeurX$ [t(h)] :M7 UniteY$ % :M8 UniteX$ h )SendTo
     ( #Quadrant1.Datas :M9 Datas$ Tas :M10 UserFont 12 )SendTo
     ( #Quadrant1.Datas :M11 Scalle0.AxeY 0 :M12 FullScalle.AxeY 5 :M13 Scalle0.AxeX 9 :M14 FullScalle.AxeX 18 )SendTo 
     ( #Quadrant1.Datas :M15 SubDiv.AxeY 5 :M16 SubDiv.AxeX 4 )SendTo  
     ( #Quadrant1.Datas :M17 EW_GRID Color.Grid 124 LineWidth 1 )SendTo
     ( #Quadrant1.Datas :M18 EW_TEXT 0 1  Courbes Réduites exprimées en %  Valeur$  CodeIsin$ )SendTO 
     ( #Quadrant1.Datas :M19 Div.AxeY 5 :M20 Div.AxeX 9  )SendTo
    
    
    
     ( #Quadrant1.Datas :MX; )SendTo
     
     ( #Quadrant1.Value :Id.Value  :M0 Color.Back 96 :M1 Color.Curves 24 :M2 Color.Triger 20 )SendTo
     ( #Quadrant1.Value :M3 Color.Axe 13 :M4 Color.Grid 124 :M5 Resolution.AxeX 0 :M6 Resolution.Axey 0 :MX;  )SendTo
     
    
    
     ( #Keys1.Datas     :Id.Keys1 1320  760   20  20 ChoixCouleur(C8A41186F4)Dlg  :M0 Color.Back 96 :MX;  )SendTo
     ( #Keys2.Datas     :Id.Keys2 1320  785   20  20 ChoixCouleur(C8A41186F4)Dlg  :M0 Color.Triger 20 :MX;  )SendTo
     ( #Keys3.Datas     :Id.Keys3 1320  810   20  20 ChoixCouleur(C8A41186F4)Dlg  :M0 Color.Graphe 24 :MX;  )SendTo
     ( #Keys4.Datas	    :Id.Keys4 1320  835   20  20 ChoixCouleur(C8A41186F4)Dlg  :M0 Color.Axe 13 :MX;  )SendTo
     ( #Keys5.Datas	    :Id.Keys5 1320  860   20  20 ChoixCouleur(C8A41186F4)Dlg  :M0 Color.Grid 124 :MX;  )SendTo
    
    
    
     ( #Keys1.Datas     :IdTxt.Keys1  :M0 Couleur Fond  :MX; )SendTo
     ( #Keys2.Datas     :IdTxt.Keys2  :M0 Couleur Trigger :MX; )SendTo
     ( #Keys3.Datas     :IdTxt.Keys3  :M0 Couleur Graphe  :MX; )SendTo
     ( #Keys4.Datas     :IdTxt.Keys4  :M0 Couleur Axes :MX; )SendTo
     ( #Keys5.Datas     :IdTxt.Keys5  :M0 Couleur Grille  :MX; )SendTo
    
    
    
     ( #Keys1.Value     :Id.Value :M0 Color.Back  96 :MX; )SendTo
     ( #Keys2.Value     :Id.Value :M0 Color.Triger 20 :MX; )SendTo
     ( #Keys3.Value     :Id.Value :M0 Color.Curves 24  :MX; )SendTo
     ( #Keys4.Value     :Id.Value :M0 Color.Axe 13 :MX; )SendTo
     ( #Keys5.Value     :Id.Value :M0 Color.Grid 124  :MX; )SendTo
    
    
    
    
    ( #ComboBoxGroup0.Value :Id.Value :MX; )SendTo
    ( #ComboBox1.File   :Id.Combobox1  880 20 120 70 NOOP  \DeGiroTmpFile\FileDates.FTH :MX; )SendTo
    ( #ComboBox1.Value  :Id.Value SourceFile \DeGiroTmpFile\FileDates.FTH :M0 X... :MX; )SendTo
    
    
    ( #ComboBox2.Datas  :Id.Combobox2 880  70 120 70 NOOP )SendTo
    ( #ComboBox2.Datas  :M0 +/- 0.4% :M1 +/- 0.45% :M2 +/- 0.50% :M3 +/- 0.55% :M4 +/- 0.60% :M5 +/- 0.65% )SendTo
    ( #ComboBox2.Datas  :M6 +/- 0.70%  :M7 +/- 0.75%  :M8 +/- 0.80% :M9 +/- .85%  :M10 +/- .90% :MX; )SendTo
    
    ( #ComboBox3.Datas  :Id.Combobox3 880 120 120 70 NOOP )SendTo
    ( #ComboBox3.Datas  :M0 +/- 0.70% :M1 +/- 0.75% :M2 +/- 0.80% :M3 +/- 0.85% :M4 +/- 0.90% :M5 +/- 0.95% )SendTo
    ( #ComboBox3.Datas  :M6 +/- 1.00% :M7 +/- 1.05% :M8 +/- 1.10% :M9 +/- 1.15%  )SendTo
    ( #ComboBox3.Datas  :M10 +/- 1.20% :M11 +/- 1.25% :M12 +/- 1.30%  :M13 +/- 1.35% )SendTo
    ( #Combobox3.Datas  :M14 +/- 1.40% :M15 +/- 1.45% :M16 +/- 1.50% :MX; )SendTo
    
    ( #ComboBox4.Datas  :Id.Combobox4 880 170 120 70 NOOP :M0 +/- 1.00% :M1 +/- 1.10% :M2 +/- 1.20% :M3 +/- 1.30% )SendTo
    ( #ComboBox4.Datas  :M4 +/- 1.40% :M5 +/- 1.50% :M6 +/- 1.60% :M7 +/- 1.70% :M8 +/- 1.80% :M9 +/- 1.90% :M10 +/- 2.00% )SendTo
    ( #ComboBox4.Datas  :M11 +/- 2.10% :M12 +/- 2.20% :M13 +/- 2.30% :M14 +/- 2.40% :M15 +/- 2.50% :M16 +/- 2.60% )SendTo
    ( #ComboBox4.Datas  :M17 +/- 2.70%  :M18 +/- 2.80% :M19 +/- 2.90% :MX; )SendTo
    
    ( #ComboBox5.Datas  :Id.Combobox5 880 220 120 70 NOOP :M0 +/- 2.60% :M1 +/- 2.70% :M2 +/- 2.80% :M3 +/- 2.90% )SendTo
    ( #ComboBox5.Datas  :M4 +/- 3.00% :M5 +/- 3.10% :M6 +/- 3.20% )SendTo
    ( #ComboBox5.Datas  :M7 +/- 3.30% :M8 +/- 3.40% :M9 +/- 3.50% :M10 +/- 3.60% :M11 +/- 3.70% :M12 +/- 3.80% )SendTo
    ( #ComboBox5.Datas  :M13 +/- 3.90% :M14 +/- 4.00%   :MX; )SendTo
    
    
    ( #ComboBox6.Datas  :Id.Combobox6 880 270 120 70 NOOP :M0 +/- 3.00% :M1 +/- 3.50% :M2 +/- 4.00% )SendTo
    ( #ComboBox6.Datas  :M3 +/- 4.500% :M4 +/- 5.00% :MX; )SendTo
    
    
    
    ( #ComboBox7.Datas  :Id.Combobox7  1030 20 120  70 NOOP :M0 Val 500000.00 :M1 Val 750000.00 :M2 Val 1000000.00 )SendTo
    ( #ComboBox7.Datas  :M3 Val 1250000.00 :M4 Val 15000000.00 :MX; )SendTo
    ( #ComboBox8.Datas  :Id.Combobox8  1030 70 120  70 NOOP :M0 Val 100000 :M1 Val 250000 :M2 Val 500000 )SendTo
    ( #ComboBox8.Datas  :M3 Val 750000 :M4 Val  1000000  :M5 Val 1500000 :M6 Val 1750000 :M7 Val 2000000 :MX; )SendTo
    
    
    
    
    ( #ComboBoxGroup1.Value :Id.Value  :MX; )SendTo
    
    ( #ComboBox2.Value  :Id.Value Bande.Neutre  :M0 +/- 0.4% :M1 Coef.Plus 0.0 :M2 Coef.Moins 0.0 :MX; )SendTo
    ( #ComboBox3.Value  :Id.Value Bande.Surveillance :M0 +/- 0.70%  :M1 Coef.Plus 0.0 :M2 Coef.Moins 0.0 :MX; )SendTo
    ( #ComboBox4.Value  :Id.Value Bande.Vente_Achat :M0 +/- 1.00%   :M1 Coef.Plus 0.0 :M2 Coef.Moins 0.0 :MX; )SendTo
    ( #ComboBox5.Value  :Id.Value Bande.Pump.and.Pump :M0 +/- 2.60% :M1 Coef.Plus 0.0 :M2 Coef.Moins 0.0 :MX; )SendTo
    ( #ComboBox6.Value  :Id.Value Bande.Oscilateur :M0 +/- 3.00% :M1 Coef.Plus 0.0 :M2 Coef.Moins 0.0 :MX; )SendTo
    
    ( #ComboBoxGroup2.Value :Id.Value  :MX; )SendTo
    
    ( #ComboBox7.Value  :Id.Value Volatilité.Capital :M0 500000.00   :MX; )SendTo
    ( #ComboBox8.Value  :Id.Value Volatilité.Volume  :M0 100000 :MX; )SendTo
    
    
    
    
    ( #LeditText1.Datas  Fichier contenant la liste des dates )SendTo
    
    ( #ComboBox1.Datas   :IdTxt.ComboBox1 :M0  Sélectionner une Date :MX; )SendTo
    ( #ComboBox2.Datas   :IdTxt.ComboBox2 :M0  Sélectionner la Bande Neutre :MX; )SendTo
    ( #ComboBox3.Datas   :IdTxt.ComboBox3 :M0  Sélectionner la Bande de surveillance :MX; )SendTo
    ( #ComboBox4.Datas   :IdTxt.ComboBox4 :M0  Sélectionner la Bande Vente Achat :MX; )SendTo
    ( #ComboBox5.Datas   :IdTxt.ComboBox5 :M0  Sélectionner la Bande Pump and Pump :MX; )SendTo
    ( #ComboBox6.Datas   :IdTxt.ComboBox6 :M0  Sélectionner la Bande de l'Oscilateur :MX; )SendTo
    ( #ComboBox7.Datas   :IdTxt.ComboBox7 :M0  Sélectionner la Volatilité Capital :MX; )SendTo
    ( #ComboBox8.Datas   :IdTxt.ComboBox8 :M0  Sélectionner la Volatilité Volume :MX; )SendTo
    
    
    ( #RadioBoxGroup0.Datas :Id.RadioGroup0 880 320 150   115 NOOP :M0  :MX; )SendTo
    ( #RadioBoxGroup0.Value :Id.Value  :MX; )SendTo
    ( #RadioBox1.Datas  :Id.RadioBox1 890 335   15   15 NOOP :M0 0 :M1 1 :M2 Bande.Neutre$ ON :MX; )SendTo
    ( #RadioBox2.Datas  :Id.RadioBox2 890 350   15   15 NOOP :M0 0 :M1 1 :M2 Bande.Surveillance$ ON :MX; )SendTo
    ( #RadioBox3.Datas  :Id.RadioBox3 890 365   15   15 NOOP :M0 0 :M1 1 :M2 Bande.Vente.Achat$ ON :MX; )SendTo
    ( #RadioBox4.Datas  :Id.RadioBox4 890 380   15   15 NOOP :M0 0 :M1 1 :M2 Bande.Pump.and.Pump$ ON :MX; )SendTo
    ( #RadioBox5.Datas  :Id.RadioBox5 890 335   15   15 NOOP :M0 0 :M1 1 :M2 Bande.Oscilateur ON :MX; )SendTo
    
    
    ( #RadioBox1.Datas   :IdTxt.RadioBox1 :M0  Bande Neutre :MX; )SendTo
    ( #RadioBox2.Datas   :IdTxt.RadioBox2 :M0  Bande de Surveillance :MX; )SendTo
    ( #RadioBox3.Datas   :IdTxt.RadioBox3 :M0  Bande Vente Achat :MX; )SendTo
    ( #RadioBox4.Datas   :IdTxt.RadioBox4 :M0  Bande Pump and Pump :MX; )SendTo
    ( #RadioBox5.Datas   :IdTxt.RadioBox5 :M0  Bande Oscilateur :MX; )SendTo
    ( #Titre1.Datas      :IdTxt.ComboBox1 :M0  Configuration  du  Module  de  Trading :MX; )SendTo
    ( #GroupBox0.Datas   :IdTxt.GroupBox0 :M0  Sélectionner le mode d' Analyse :MX; )SendTo
    
    
    
    
     R> TO HWNB
    
    
    ;
    
    
    \ ############################################################################################################
    \ ############											##############
    \ ############			       INSTALLATION DES IDENTIFICATEURS 		      	##############
    \ ############											##############
    \ ############################################################################################################
    
    \ ==========   Installation des identificateurs  ================
    
    200 IDENT Id.Quadrant1 
        IDENT Id.DlgQuit
        IDENT Id.Cancel
        IDENT Id.Apply
        IDENT Id.KeyBoard1
        IDENT Id.LbuttonDown
    
        IDENT IdTxt.ComboBox1 
        IDENT Id.ComboBox1
    
        IDENT IdTxt.ComboBox2 
        IDENT Id.Combobox2
    
        IDENT IdTxt.ComboBox3 
        IDENT Id.Combobox3
    
        IDENT IdTxt.ComboBox4 
        IDENT Id.Combobox4
    
        IDENT IdTxt.ComboBox5 
        IDENT Id.Combobox5
    
        IDENT IdTxt.ComboBox6 
        IDENT Id.Combobox6
    
        IDENT IdTxt.ComboBox7 
        IDENT Id.ComboBox7
    
        IDENT IdTxt.ComboBox8 
        IDENT Id.ComboBox8
    
    
    
        IDENT IdTxt.EditText1
        IDENT IdTxt.LeditText1
    
        IDENT IdTxt.GroupBox0   
        IDENT IdTxt.RadioBox1   
        IDENT IdTxt.RadioBox2   
        IDENT IdTxt.RadioBox3 
        IDENT IdTxt.RadioBox4 
        IDENT IdTxt.RadioBox5  
    
        IDENT Id.RadioBox1   
        IDENT Id.RadioBox2   
        IDENT Id.RadioBox3 
        IDENT Id.RadioBox4 
        IDENT Id.RadioBox5  
    
    
        IDENT Id.Keys1
        IDENT Id.Keys2
        IDENT Id.Keys3
        IDENT Id.Keys4
        IDENT Id.Keys5
    
        IDENT IdTxt.Keys1
        IDENT IdTxt.Keys2
        IDENT IdTxt.Keys3
        IDENT IdTxt.Keys4
        IDENT IdTxt.Keys5
    
    
    DROP	
    
    
    \ ############################################################################################################
    \ ############											##############
    \ ############			     INSTALLATION DU DIALOGUE HOMME MACHINE 		      	##############
    \ ############											##############
    \ ############################################################################################################
    
    \ ==========   Installation du dialogue  ================
    
    
    
    DIALOGS ZoomCourbesRéduites.Dialog
    
     [MODELESS " I. C. M.  International  Cloud  Machine          BLOCNAME   ZoomCourbesRéduites(C8A41186F4)Dlg  " 100 0 1180 580 (FONT 8, MS Sans Serif) ]
    
     [DEFPUSHBUTTON  " OK"         Id.DlgQuit      1010  560   40   15 ]
     [PUSHBUTTON     " Cancel"     Id.Cancel       	960  560   40   15 ]
     [PUSHBUTTON     " Apply"      Id.Apply	        910  560   40   15 ]
     [COMPONENT      " Quadrant"   Id.Quadrant1      20   30 1260  880  (+STYLES EW_QUAD_SIX EW_SCL_SIX EW_GRID_SIX EW_TRIG_SIX ) ] 
    
     [COMPONENT      " Keys"       Id.Keys1        1320  760   20  	20  (+STYLES  EW_RECT  ) ]
     [COMPONENT      " Keys"       Id.Keys2        1320  785   20  	20  (+STYLES  EW_RECT  ) ]
     [COMPONENT      " Keys"       Id.Keys3        1320  810   20  	20  (+STYLES  EW_RECT  ) ]
     [COMPONENT      " Keys"       Id.Keys4        1320  835   20  	20  (+STYLES  EW_RECT  ) ]
     [COMPONENT      " Keys"       Id.Keys5        1320  860   20  	20  (+STYLES  EW_RECT  ) ]
    
    
     [LTEXT 	 	       IdTxt.Keys1      900  470   80   10 ]
     [LTEXT 	  	       IdTxt.Keys2      900  485   80   10 ]
     [LTEXT 	 	       IdTxt.Keys3	900  500   80   10 ]
     [LTEXT 	  	       IdTxt.Keys4      900  515   80   10 ]
     [LTEXT 	 	       IdTxt.Keys5      900  530   80   10 ]
    
    
     [LTEXT 		       IdTxt.ComboBox1       	 880  8 130    10 ]
     [COMBOBOX                     Id.ComboBox1   		 880 20 120    70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 		       IdTxt.ComboBox2      	 880 60 130    10 ]
     [COMBOBOX                     Id.ComboBox2   		 880 70 120    70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 		       IdTxt.ComboBox3      	 880 110 130    10 ]
     [COMBOBOX                     Id.ComboBox3    	 	 880 120 120    70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 		       IdTxt.ComboBox4       	 880 160 130   10 ]
     [COMBOBOX                     Id.ComboBox4    	         880 170 120   70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 		       IdTxt.ComboBox5       	 880 210 130   10 ]
     [COMBOBOX                     Id.ComboBox5    	 	 880 220 120   70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 		       IdTxt.ComboBox6       	 880 260 130   10 ]
     [COMBOBOX                     Id.ComboBox6    	 	 880 270 120   70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 		       IdTxt.ComboBox7       	 1030  8 130    10 ]
     [COMBOBOX                     Id.ComboBox7   		 1030 20 120    70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
     [LTEXT 		       IdTxt.ComboBox8      	 1030 60 130    10 ]
     [COMBOBOX                     Id.ComboBox8   		 1030 70 120    70 (+STYLE CBS_DROPDOWN WS_VSCROLL CBS_AUTOHSCROLL) ]
    
    
    
     [GROUPBOX  "                "  IdTxt.GroupBox0 	 880 320 150   115 ]
     [AUTORADIOBUTTON    		Id.RadioBox1             890 335   15   15 ]
     [AUTORADIOBUTTON   		Id.RadioBox2     	 890 350   15   15 ]
     [AUTORADIOBUTTON   		Id.RadioBox3     	 890 365   15   15 ]
     [AUTORADIOBUTTON  		Id.RadioBox4     	 890 380   15   15 ]
     [AUTORADIOBUTTON   		Id.RadioBox5     	 890 395   15   15 ]	\ SurveillanceBande
     [LTEXT 	                IdTxt.RadioBox1          910 335   90   15 ]
     [LTEXT 	                IdTxt.RadioBox2          910 350   90   15 ]
     [LTEXT 	                IdTxt.RadioBox3          910 365   90   15 ]
     [LTEXT 	                IdTxt.RadioBox4          910 380   90   15 ]
     [LTEXT 	                IdTxt.RadioBox5          910 395   90   15 ]
    
    
    END-DIALOGS
    
    
    : ZoomCourbesRéduites.Paint 		S( --- )
    
    
    
       Id.Quadrant1    Quadrant.Paint
    
    
       Id.Combobox1    ComboBox.Paint
       Id.Combobox2    ComboBox.Paint
       Id.Combobox3    ComboBox.Paint
       Id.Combobox4    ComboBox.Paint	               
       Id.Combobox5    ComboBox.Paint	               
       Id.Combobox6    ComboBox.Paint
       Id.Combobox7    ComboBox.Paint	               
       Id.Combobox8    ComboBox.Paint
    	               
       Id.Keys1 	   Keys.Paint
       Id.Keys2 	   Keys.Paint
       Id.Keys3 	   Keys.Paint
       Id.Keys4 	   Keys.Paint
       Id.Keys5 	   Keys.Paint
    
    
    ;
    
    
    
    : ZoomCourbesRéduites.Init			S( --- )
    
    
    
      
      IdTxt.ComboBox1  	   	Texte.Paint 
      IdTxt.ComboBox2   	   	Texte.Paint
      IdTxt.ComboBox3  	   	Texte.Paint 
      IdTxt.ComboBox4  	   	Texte.Paint
      IdTxt.ComboBox5  	   	Texte.Paint
      IdTxt.ComboBox6  	   	Texte.Paint
      IdTxt.Combobox7    		Texte.Paint	               
      IdTxt.Combobox8    		Texte.Paint
      
    
      IdTxt.LeditText1            	Texte.Paint
      IdTxt.GroupBox0     	  	Texte.Paint
      IdTxt.RadioBox1 		Texte.Paint
      IdTxt.RadioBox2 		Texte.Paint
      IdTxt.RadioBox3 		Texte.Paint
      IdTxt.RadioBox4 		Texte.Paint
      IdTxt.RadioBox5 		Texte.Paint
    
       IdTxt.Keys1     	        Texte.Paint 
       IdTxt.Keys2     	        Texte.Paint 
       IdTxt.Keys3    	        Texte.Paint 
       IdTxt.Keys4     	        Texte.Paint 
       IdTxt.Keys5    	        Texte.Paint 
    ;
    
    : ZoomCourbesRéduites.Repaint		S( --- ) \ remet un composant en peinture
    
      ZoomCourbesRéduites.Paint
    
    
     
    \  Id.Quadrant1   HWND       Quadrant.Repaint
    
    
    ;
    
      
    \ Schliessen des Fenster
    
    :  Applic.Quit			S( --- )
     
      
      HWND 0 EndDialog 
      HWND Application.Quit
      HWND SubKey.DestroyEX
    
    
      
    ;
    
    : ZoomCourbesRéduites.Quit 			S( -- res)
    
      Applic.Quit
    
     ;
    
    
    : ZoomCourbesRéduites.Cancel
    
       Applic.Quit
    
    ;
    
    
    : ZoomCourbesRéduites.Apply
    
    \  Config.Apply
    
    ;
    
    
    
    : #Message1	S( --- ) \ Liste des requêtes
    
      ( #Quadrant1.Request :Id.Request :M0 Color.Back Valeur.Changer :M1 Color.Back Valeur.Retourner :MX; )Msg.SendTo 
      ( #Quadrant1.Value :Id.Value   :M0 Color.Back  96 :MX; )Msg.SendTo 
    
    ;
    
    : #Message2	S( --- ) \ Liste des requêtes
    
      ( #Quadrant1.Request :Id.Request :M0 Color.Curves Valeur.Changer :M1 Color.Curves Valeur.Retourner :MX; )Msg.SendTo 
      ( #Quadrant1.Value :Id.Value :M1 Color.Curves 24  :MX;   )Msg.SendTo 
    
    ;
    
    
    : #Message3		S( --- ) \ Liste des requêtes
    
      ( #Quadrant1.Request :Id.Request :M0 Color.Triger Valeur.Changer :M1 Color.Triger Valeur.Retourner :MX; )Msg.SendTo 
      ( #Quadrant1.Value :Id.Value  :M2 Color.Triger 20   :MX; )Msg.SendTo 
    
    ;
    
    : #Message4		S( --- ) \ Liste des requêtes
    
       ( #Quadrant1.Request :Id.Request :M0 Color.Axe Valeur.Changer :M1 Color.Axe Valeur.Retourner :MX; )Msg.SendTo 
       ( #Quadrant1.Value :Id.Value  :M3 Color.Axe 13   :MX; )Msg.SendTo 
    
    ;
    
    : #Message5		S( --- ) \ Liste des requêtes
    
      ( #Quadrant1.Request :Id.Request :M0 Color.Grid Valeur.Changer :M1 Color.Grid Valeur.Retourner :MX; )Msg.SendTo 
      ( #Quadrant1.Value :Id.Value  :M4 Color.Grid 124   :MX; )Msg.SendTo 
    
    ;
    
    
    
    : ZoomCourbesRéduites.Commands 			S( Id --  )
    
        CASE
         Id.DlgQuit 	OF ZoomCourbesRéduites.Quit		ENDOF
         Id.Cancel  	OF ZoomCourbesRéduites.Cancel	  	ENDOF
         Id.Apply		OF ZoomCourbesRéduites.Apply	  	ENDOF	  
    
         Id.Quadrant1 	OF ( :M0 Color.Back #NewValue Change )Request.SendTo  ENDOF
         Id.Keys1		OF ['] #Message1 INHERIT-REQUEST Request.SendTo  ENDOF
         Id.Keys2		OF ['] #Message2 INHERIT-REQUEST Request.SendTo  ENDOF
         Id.Keys3		OF ['] #Message3 INHERIT-REQUEST Request.SendTo  ENDOF
         Id.Keys4		OF ['] #Message4 INHERIT-REQUEST Request.SendTo  ENDOF
         Id.Keys5		OF ['] #Message5 INHERIT-REQUEST Request.SendTo  ENDOF
       
    
    
         Id.Combobox1    	OF ( #ComboBoxGroup0 #Combobox1 )Objet.SendTo ENDOF
         Id.Combobox2    	OF ( #ComboBoxGroup1 #Combobox2 )Objet.SendTo ENDOF
         Id.Combobox3    	OF ( #ComboBoxGroup1 #Combobox3 )Objet.SendTo ENDOF
         Id.Combobox4    	OF ( #ComboboxGroup1 #Combobox4 )Objet.SendTo ENDOF               
         Id.Combobox5    	OF ( #ComboboxGroup1 #Combobox5 )Objet.SendTo ENDOF              
         Id.Combobox6    	OF ( #ComboboxGroup1 #Combobox6 )Objet.SendTo ENDOF
         Id.Combobox7    	OF ( #ComboboxGroup2 #Combobox7 )Objet.SendTo ENDOF              
         Id.Combobox8    	OF ( #ComboboxGroup2 #Combobox8 )Objet.SendTo ENDOF
    
         Id.RadioBox1   	OF ( #RadioBoxGroup0 #Combobox2 )Objet.SendTo ENDOF
         Id.RadioBox2   	OF ( #RadioBoxGroup0 #Combobox3 )Objet.SendTo ENDOF
         Id.RadioBox3 	OF ( #RadioBoxGroup0 #Combobox4 )Objet.SendTo ENDOF
         Id.RadioBox4 	OF ( #RadioBoxGroup0 #Combobox5 )Objet.SendTo ENDOF
         Id.RadioBox5 	OF ( #RadioBoxGroup0 #Combobox6 )Objet.SendTo ENDOF  
         
        ENDCASE
    
      
    ;
    
    
    
    : ZoomCourbesRéduites.MESSAGES  		S( WM_PARAM --- res)
     
     CASE
      
      WM_ACTIVATE    	OF LPARAM LOWORD WPARAM LOWORD  WA_CLICKACTIVE = IF HWND EWfocus.Change THEN 
    		           HWND InitDialogDlgParam  ZoomCourbesRéduites.Init   			ENDOF
      WM_CLOSE      	OF ZoomCourbesRéduites.Quit 		                		ENDOF
      WM_COMMAND    	OF WPARAM LOWORD ZoomCourbesRéduites.Commands  				ENDOF
      WM_INITDIALOG  	OF ZoomCourbesRéduites.Init  						ENDOF
      WM_PAINT       	OF ZoomCourbesRéduites.Paint 						ENDOF		\ Call App-Paint
      WM_LBUTTONDOWN        OF Bouton.Flag @ NOT IF EWPARAM ZoomCourbesRéduites.Commands Bouton.Flag ON THEN ENDOF 
      WM_LBUTTONUP          OF Bouton.Flag OFF		               				ENDOF 				
      WM_TIMER              OF HWND ZoomCourbesRéduites.Repaint         		       		ENDOF   
      ZERO 
    ENDCASE
    
    ;
    
    
    
    
    \ Callback definition
    
    :NONAME S( -- res)
    
      INHERIT-SEARCHORDER 
      INHERIT-FLOAT
      INHERIT-DIALOG 
      ['] ZoomCourbesRéduites(C8A41186F4)Lst
      INHERIT-OBJETLIST
      MSG LOWORD 
      ZoomCourbesRéduites.MESSAGES  ;
    
    4 CB: ZoomCourbesRéduites.Run
    
    \ Startwort
    
    
    
    
    : ZoomCourbesRéduites(C8A41186F4)Dlg		S( --- ) \ Fonction principale d'entrée dans le bloc ZoomCourbesRéduites(C8A41186F4)Dlg
     
    
      ConfigDialogIndirectParam
      ConfigDialogCfgParam
      ZoomCourbesRéduites.Datas
    
    
      ZoomCourbesRéduites.Dialog CELL- OFF
      ZoomCourbesRéduites.Dialog CELL- @ ?EXIT
      HINST ZoomCourbesRéduites.Dialog 
      HWND  ZoomCourbesRéduites.Run  
      0 CreateDialogIndirectParam
      ZoomCourbesRéduites.Dialog CELL- ! 
      ConfigDialogHandel
    
    ;
    
    
    
    Gild
    
    
    ' ZoomCourbesRéduites(C8A41186F4)Dlg Last_Cmd !
    
    
    
    \\
    Comme on peut le constater la génération automatique de code devient grandement facilité.

    Cordialement
    Ludwig