J'ai essayé de créer un tableau avec des étiquettes en police mono comme suggéré ici - ce n'est pas très agréable. En particulier, les nombres fractionnaires sont étalés horizontalement de telle manière qu'il est difficile de les voir. Il nous reste donc l'option des étiquettes dans une police normale, avec une étiquette distincte pour chaque cellule. Cela impliquerait un certain nombre d'objets, comme je l'ai déjà écrit.
Jartmailru, savez-vous s'il est réaliste de créer une fenêtre de sortie directement dans le code EA, sans utiliser une DLL ? Toutes les fonctions de WinApi sont disponibles. Le seul hic est peut-être de passer une structure contenant à la fois des variables et des pointeurs.
C'est joli, mais vous n'avez pas de tableaux avec beaucoup de longs chiffres alignés, donc c'est assez facile à lire.
Peut-être, je ne sais pas, je ne me suis jamais fixé une telle tâche. Le terminal étant un assez bon outil pour afficher divers types d'informations graphiques sous forme de diagrammes et de tableaux, pour y construire et analyser une grande quantité d'informations textuelles ? - Pourquoi quand on a Excel pour ça... Bien sûr, il s'agit de mon humble opinion :)
jartmailru: D'un autre côté, je me demande si vous n'avez pas déjà rencontré que les premiers 30 % des entrées sont généralement absents du journal, et que les entrées sont ensuite perdues de manière sélective.
Les journaux contiennent toutes les lignes, c'est le terminal qui les affiche de manière sélective. Si vous ouvrez les fichiers eux-mêmes, ils sont tous là.
// Pouvez-vous faire une DLL pour Unicode ? Je vous en serai sincèrement reconnaissant.
Voilà. Ajout des fonctions LogW, SelectW, mais n'a pas testé - tout problème s'il vous plaît contacter. Si vous faites un classeur pour la 5e, envoyez-le moi :-). .
Laviande:
Jartmailru, savez-vous s'il est réaliste de créer une fenêtre de sortie directement dans le code EA sans utiliser une DLL ? Toutes les fonctions de WinApi sont disponibles. Le seul problème peut se poser lors du passage d'une structure contenant à la fois des variables et des pointeurs.
Si vous avez fait quelque chose de tordu, c'est peut-être possible. Je ne me tords pas :-). Une fenêtre à côté d'un MT en C++ nécessite un thread d'interface séparé. S'il s'agit d'une seule fenêtre, c'est trivial. . D'ailleurs... ce n'est pas un fait que les onglets... ...vous serez capable d'aligner le contenu des colonnes au bon degré. .
PapaYozh: Les journaux contiennent toutes les lignes, c'est le terminal qui les affiche de manière sélective. Si vous ouvrez les fichiers eux-mêmes, ils sont tous là.
Cela ne me dérange pas :-). Mais : j'ai tout affiché + j'ai fait un graphique- log (le point du graphique est recherché dans le log - le bon endroit est indiqué). .
J'ai créé un onglet pour les polices larges ! :) Yay ! :) Bien sûr, j'ai dû faire beaucoup d'efforts avec les fonctions WinAPI, mais cela en valait la peine. C'est utile non seulement pour Comment, mais aussi pour Label. L'idée est d'obtenir la taille de n'importe quelle chaîne dans n'importe quelle police en pixels. Et vous pouvez ensuite les classer comme vous le souhaitez, à gauche, à droite ou au centre. Pour Commentaire, la tabulation se fait naturellement avec des espaces, donc le résultat n'est pas parfait, l'erreur est de 1 à 2 pixels, mais ce n'est rien en principe. Pour les étiquettes, tout est beaucoup plus simple.
Voici un exemple montrant les onglets dans Commentaire. Tahoma,8 est spécifié ici, car les commentaires sont édités dans cette police.
#import "Gdi32.dll"int CreateFontA(int nHeight,int nWidth,int nEscapement,int nOrientation,int fnWeight,int fdwItalic,int fdwUnderline,
int fdwStrikeOut,int fdwCharSet,int fdwOutputPrecision,int fdwClipPrecision,int fdwQuality,
int fdwPitchAndFamily,string lpszFace);
int SelectObject(int hdc,int hgdiobj);
bool DeleteObject(int hObject);
int GetDeviceCaps(int hdc,int nIndex);
bool GetTextExtentPoint32A(int hdc,string lpString,int cbString,int lpSize[]);
#import "user32.dll"int GetDC(int hWnd);
int ReleaseDC(int hWnd,int hDC);
//+------------------------------------------------------------------+int start()
{
#define DEFAULT_CHARSET 1#define OUT_DEFAULT_PRECIS 0#define CLIP_DEFAULT_PRECIS 0#define DEFAULT_QUALITY 0#define DEFAULT_PITCH 0#define FF_MODERN 48int hWnd=WindowHandle(Symbol(),Period());
int DC=GetDC(hWnd);
int dpi=GetDeviceCaps(DC,88); //88=LOGPIXELSXstring Font="Tahoma";
int fontsize=8;
int fontheight=MathRound(fontsize*dpi/72.0);
int hFont=CreateFontA(fontheight,0,0,0,0,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_MODERN,Font);
SelectObject(DC,hFont);
string StringArray[]={"Один","Два","Три","Четыре","Пять","Шесть","Семь","Восемь","Девять","Десять","Одиннадцать","Двенадцать"};
int arraysize=ArraySize(StringArray);
int tabpixels=100; // размер табуляции в пикселяхint size[2];
GetTextExtentPoint32A(DC," ",1,size); // получаем размер пробелаint spacesize=size[0];
if (spacesize==0) { Alert("spacesize=0"); return(0); }
string text="\n";
int rowsize=0;
int alignmode=0; // 0- по левому краю, 1- по правому краюfor (int i=0; i<arraysize; i++)
{
int column=i%4;
string str=StringArray[i];
GetTextExtentPoint32A(DC,str,StringLen(str),size); // получаем размер строкиint spacecount=MathRound((tabpixels*(column+1)-size[0]-rowsize)*1.0/spacesize);
for (int s=0; s<spacecount; s++)
if (alignmode==0)
str=str+" ";
else
str=" "+str;
rowsize+=size[0]+spacesize*spacecount;
text=text+str;
if (column==3 || i==arraysize-1)
{
text=text+"\n";
rowsize=0;
if (i<arraysize-1) continue;
if (alignmode==1) break;
alignmode++;
text=text+"\n\n";
i=-1;
}
}
Comment(text);
ReleaseDC(hWnd,DC);
DeleteObject(hFont);
return(0);
}
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
J'ai essayé de créer un tableau avec des étiquettes en police mono comme suggéré ici - ce n'est pas très agréable. En particulier, les nombres fractionnaires sont étalés horizontalement de telle manière qu'il est difficile de les voir. Il nous reste donc l'option des étiquettes dans une police normale, avec une étiquette distincte pour chaque cellule. Cela impliquerait un certain nombre d'objets, comme je l'ai déjà écrit.
Jartmailru, savez-vous s'il est réaliste de créer une fenêtre de sortie directement dans le code EA, sans utiliser une DLL ? Toutes les fonctions de WinApi sont disponibles. Le seul hic est peut-être de passer une structure contenant à la fois des variables et des pointeurs.
les étiquettes dans le monolabel
les étiquettes dans le monochine.
Dans un monochine, vous voulez dire ?
C'est joli, mais vous n'avez pas de tableaux avec beaucoup de longs chiffres alignés, donc c'est assez facile à lire.
Dans un mono-alternance vous voulez dire ?
C'est joli, mais vous n'avez pas de tableaux avec beaucoup de longs chiffres alignés, donc c'est assez facile à lire.
D'un autre côté, je me demande si vous n'avez pas déjà rencontré
que les premiers 30 % des entrées sont généralement absents du journal, et que les entrées sont ensuite perdues de manière sélective.
// Pouvez-vous faire une DLL pour Unicode ? Je vous en serai sincèrement reconnaissant.
Si vous faites un classeur pour la 5e, envoyez-le moi :-).
.
Jartmailru, savez-vous s'il est réaliste de créer une fenêtre de sortie directement dans le code EA sans utiliser une DLL ? Toutes les fonctions de WinApi sont disponibles. Le seul problème peut se poser lors du passage d'une structure contenant à la fois des variables et des pointeurs.
Une fenêtre à côté d'un MT en C++ nécessite un thread d'interface séparé.
S'il s'agit d'une seule fenêtre, c'est trivial.
.
D'ailleurs... ce n'est pas un fait que les onglets... ...vous serez capable d'aligner
le contenu des colonnes au bon degré.
.
Les journaux contiennent toutes les lignes, c'est le terminal qui les affiche de manière sélective. Si vous ouvrez les fichiers eux-mêmes, ils sont tous là.
log (le point du graphique est recherché dans le log - le bon endroit est indiqué).
.
J'ai créé un onglet pour les polices larges ! :) Yay ! :) Bien sûr, j'ai dû faire beaucoup d'efforts avec les fonctions WinAPI, mais cela en valait la peine. C'est utile non seulement pour Comment, mais aussi pour Label. L'idée est d'obtenir la taille de n'importe quelle chaîne dans n'importe quelle police en pixels. Et vous pouvez ensuite les classer comme vous le souhaitez, à gauche, à droite ou au centre. Pour Commentaire, la tabulation se fait naturellement avec des espaces, donc le résultat n'est pas parfait, l'erreur est de 1 à 2 pixels, mais ce n'est rien en principe. Pour les étiquettes, tout est beaucoup plus simple.
Voici un exemple montrant les onglets dans Commentaire. Tahoma,8 est spécifié ici, car les commentaires sont édités dans cette police.
Voici un exemple de tabulation dans Comment. La police définie ici est Tahoma,8, car les commentaires sont édités dans cette police.
+ sortie remaniée de n'importe quel texte, et pas seulement d'un tableau de lignes
+ en faire une fonction distincte CommentTab
+ Ajout d'un tableau de valeurs TabStop et d'une taille de tabulation par défaut (comme dans la fonction GDI).
Exemple de texte et de résultat