Réaliser un projet de crowdsourcing sur Canvas - page 5

 
Реter Konow:

Dans mon implémentation, les points A et B sont représentés par l'emplacement de deux objets - la coordonnée X de la piste du curseur (son début) et la coordonnée X de la glissière du curseur.

la même chose dans la version dessinée.

vous pensez de façon étroite, en discutant d'un ObjectGet/Set
au moins trois modèles fusionnent dans le contrôle - graphiques, événements, données.
peu importe où et comment il est dessiné. il peut être sous forme de texte comme [.......|...]. il peut aussi apparaître sur le canevas, ou deux objets rectangles MT peuvent être affichés.

Le modèle des événements ou des données ne souffre pas de cela.

 
o_O:

c'est la même chose dans la version dessinée.

vous pensez de manière étroite, en parlant de certains ObjectGet/Set
Le contrôle fusionne au moins trois modèles - graphiques, événements, données.
L'endroit où il est dessiné et la manière dont il l'est n'ont pas d'importance. Il peut s'agir d'un texte comme [.......|...]. Il peut également apparaître sur un canevas, ou vous pouvez avoir deux objets rectangles MT.

Le modèle des événements ou des données ne souffre pas de cela.


Pourtant, le mécanisme n'est pas clair pour moi. Si vous pouvez expliquer plus en détail, pour une idée générale, cela m'aidera beaucoup à comprendre. merci.
 

Il y a une question fondamentale.

Disons qu'il y a deux applications, des panneaux, des indicateurs, sur un même graphique. Chacun d'eux doit-il dessiner sur sa propre toile ou les deux sur une toile commune ?

Il y a des questions dans les deux cas.

 
o_O:

pas seulement moins, mais rien du tout (sauf bitmap_label, qui est l'endroit où tout est dessiné).

Je suis simplement curieux de savoir comment vous implémentez la gestion du texte (étiquette de texte, champ de saisie de texte). Une courte liste de problèmes que vous devez résoudre :

  • Travailler avec les alphabets nationaux (dans les polices de caractères, par exemple, la même Times New Roman a un contour pour presque tous les alphabets, de l'anglais au grand puissant et à l'hindi).
  • Mise à l'échelle du texte : 6-8-10-12...72 points - la même taille de police peut être définie sans problème. Le caractère Vectoral est un peu ce pour quoi il a été créé.
  • Italique, gras, souligné - que créerez-vous pour chacun de ces types de police ou d'algorithme de contour ?
  • La saisie et l'édition, le contrôle du curseur - faire tout cela sous la forme d'un dessin est une sacrée tâche. Pour être honnête, je ne peux même pas commencer à imaginer comment vous allez le mettre en œuvre.

Et tout cela sur la toile de fond des contrôles déjà fonctionnels "étiquette de texte" et "étiquette de texte avec édition de texte". Les seuls problèmes sont la limite de taille de 32 caractères et l'impossibilité d'utiliser des polices intégrées.

Il vous faudra beaucoup de temps pour résoudre tous ces problèmes, mais vous en résoudrez au mieux 30 %. Des centaines de kilo-octets de votre code seront, au mieux, un peu en dehors des éléments standards, mais ils auront leurs propres maladies, pépins et diverses limitations désagréables. En avez-vous vraiment besoin ?

 
Vasiliy Sokolov:
Документация по MQL5: Графические объекты / TextOut
Документация по MQL5: Графические объекты / TextOut
  • www.mql5.com
Графические объекты / TextOut - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
o_O:

pas seulement moins, mais rien du tout (sauf bitmap_label, qui est l'endroit où tout est dessiné).

N'oubliez pas non plus le modèle d'événement. Il n'est pas conçu pour gérer les événements sur le canevas. Tout ce que vous aurez, ce sont les frappes au clavier dans une certaine zone de l'écran + les coordonnées de la souris. Oui, vous pouvez sortir de cette obscurité avec la POO, mais la sortie sera difficile et très longue.

 
Реter Konow:

Je ne comprends toujours pas le mécanisme. Si vous pouvez expliquer plus en détail, pour une idée générale, cela m'aiderait beaucoup à comprendre. merci.
exécuter l'exemple kanvas à partir de l'archive xo. zip https://www.mql5.com/ru/forum/92113#comment_2672543
 
Vasiliy Sokolov:

Je me demande juste comment vous implémentez le travail du texte.

comme déjà montré - utilisons TextOut

Vous allez perdre beaucoup de temps à résoudre tous ces problèmes.

Nous ne nous frapperons pas la tête sur des obstacles insurmontables. Si le MC n'apporte pas de solution à ces problèmes, tout s'arrêtera.

J'attends toujours une réponse de leur part à SR.

N'oubliez pas non plus le modèle d'événement. Il n'est pas conçu pour gérer les événements sur le canevas.

Vous vous souvenez que je vous ai montré l'analogie de votre panneau pour la négociation d'ordres de compensation ? Eh bien, CHARTEVENY_MOUSE_MOVE n'y est pas utilisé, tout est analysé par lui-même.

Croyez-moi, il n'y a aucun problème avec les événements ou l'affichage du chariot d'entrée.

Maintenant, la question porte uniquement sur les événements du clavier.

 
o_O:

Maintenant, le problème se résume aux événements du clavier.

Avec le clavier, tout est plus ou moins clair. Il y a l'événement qui consiste à appuyer sur une touche et il y a le code de cette touche. Que voulez-vous de plus ?
 
o_O:

Nous demanderons au RS un raffinement.

D'ailleurs, si vous voulez mon avis, l'introduction de l'événement OnMouseDown faciliterait grandement la vie d'un DND normal.