0
Views
0
Downloads
0
Favorites
rCommentTab
//+------------------------------------------------------------------+
//| CommentTab |
//| èäåÿ è íà÷àëüíàÿ ðåàëèçàöèÿ âûâîäà ìàññèâà ñòðîê |
//| - Meat |
//| ïåðåäåëêà íà ëþáóþ ñòðîêó + ìàññèâ ðàçìåðîâ òàáóëÿöèé |
//| + ðåàëèçàöèÿ â âèäå îòäåëüíîé ôóíêöèè CommentTab |
//| - Alexey Sergeev (profy.mql@gmail.com) |
//+------------------------------------------------------------------+
#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);
#import
#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 48
#define LOGPIXELSX 88
//------------------------------------------------------------------ start
int start()
{
string txt="\n";
txt=txt+"Ticket\tOpen Time\tType\tSize\tItem\tPrice\tS / L\tT / P\tClose Time\tPrice\tCommission\tTaxes\tSwap\tProfit"+"\n";
txt=txt+"524567\t28.06.2011 15:02\tbuy\t0.35\teurusd.vpe\t1.43380\t1.43390\t0.00000\t29.06.2011 2:39\t1.43383\t-3.50\t0.00\t0.56\t0.73"+"\n";
txt=txt+"523492\t28.06.2011 15:02\tbuy\t0.70\teurusd.vpe\t1.43397\t1.43407\t1.47115\t28.06.2011 18:17\t1.43407\t-7.00\t0.00\t0.00\t4.88"+"\n";
txt=txt+"523494\t28.06.2011 15:02\tbuy\t0.70\teurusd.vpe\t1.43397\t1.43407\t0.00000\t28.06.2011 18:17\t1.43407\t-7.00\t0.00\t0.00\t4.88"+"\n";
txt=txt+"523498\t28.06.2011 15:02\tbuy\t0.35\teurusd.vpe\t1.43380\t1.43390\t0.00000\t28.06.2011 17:00\t1.43675\t-3.50\t0.00\t0.00\t71.86"+"\n";
txt=txt+"522650\t27.06.2011 14:50\tbuy\t0.80\teurusd.vpe\t1.42240\t1.42371\t1.43687\t28.06.2011 15:19\t1.43693\t-8.00\t0.00\t1.28\t808.95"+"\n";
int tab[]={15, 30, 13, 15, 19, 15, 15, 15, 28, 15, 25, 15, 15}; // ðàçìåðû â ïðîáåëàõ
CommentTab(txt, tab, 30); // âûçâàëè ïðåîáðàçîâàíèå ïî òàáóëÿöèè
}
//------------------------------------------------------------------ CommentTab
void CommentTab(string txtIn, int tab[], int tabdef)
{
int hWnd=WindowHandle(Symbol(),Period()); // âçÿëè òåêóùåå îêíî
int hdc=GetDC(hWnd); // êîíòåêñò óñòðîéñòâà
int dpi=GetDeviceCaps(hdc, LOGPIXELSX); // ðàçìåð ëîãè÷åñêîé åäèíèöû
int fontsize=8;
int fontheight=MathRound(fontsize*dpi/72.0); // ïåðåâîäèì âûñîòó øðèôòà â ëîãè÷åñêèå
// ñîçäà¸ì îáúåêò øðèôòà
string font="Tahoma";
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(hdc, hFont); // âûáèðàåì åãî äëÿ ðàáîòû ñ ðàçìåðàìè òåêñòà
int size[2];
GetTextExtentPoint32A(hdc, " ", 1, size); // ïîëó÷àåì ðàçìåð òåêñòà - ïðîáåë
int xSpace=size[0]; if (xSpace==0) { Print("-err xSpace==0!"); return(0); }
string txtOut="", txtLine="";
int xTab=0; // òåêóùåå ðàññòîÿíèå òàáóëÿöèè â ïèêñåëÿõ
int nTab=0; // òåêóùåå çíà÷åíèå òàáóëÿöèè èç ìàññèâà tab
int n=StringLen(txtIn); // äëèíà ñòðîêè
for (int i=0; i<n; i++)
{
int ch=StringGetChar(txtIn, i); // âçÿëè ñèìâîë
if (ch!='\t') txtLine=txtLine+CharToStr(ch); // äîáàâèëè åãî åñëè îí íå çàïðåùåííûé (ïîêà ÷òî òîëüêî òàáóëÿöèÿ)
if (ch=='\n' || i==n-1) { txtOut=txtOut+txtLine; txtLine=""; xTab=0; nTab=0; continue; } // åñëè êîíåö ñòðîêè èëè íîâàÿ ñòðîêà, òî ïåðåâîäèì è ñáðàñûâàåì
if (ch=='\t') // åñëè ñèìâîë òàáóëÿöèÿ
{
GetTextExtentPoint32A(hdc, txtLine, StringLen(txtLine), size); // ïîëó÷àåì ðàçìåð òåêñòà â size
if (nTab<ArraySize(tab)) xTab+=tab[nTab]*xSpace; else xTab+=tabdef*xSpace; // âçÿëè íîâóþ òàáóëÿöèþ
nTab++; // óâåëè÷èëè ñ÷åò÷èê èç ìàññèâà
int tt=size[0]*1.0/xTab; // ñêîëüêî òàáóëÿöèé óêëàäûâàåòñÿ â ñòðîêó
while (tt>0)
{
if (nTab<ArraySize(tab)) xTab+=tab[nTab]*xSpace; else xTab+=tabdef*xSpace; // âçÿëè íîâóþ òàáóëÿöèþ
nTab++; // óâåëè÷èëè ñ÷åò÷èê èç ìàññèâà
tt=size[0]*1.0/xTab; // ñêîëüêî òàáóëÿöèé óêëàäûâàåòñÿ â ñòðîêó
}
int t=tt+1; // íàäî íà 1 òàáóëÿöèþ áîëüøå
while (tt<t) // äîáàâëÿåì ïðîáåëû, ïîêà íå ñòàíåò íà ñëåäóþùåì óðîâíå òàáóëÿöèè
{
txtLine=txtLine+" ";
GetTextExtentPoint32A(hdc, txtLine, StringLen(txtLine), size); // ïîëó÷àåì ðàçìåð òåêñòà â size
tt=size[0]*1.0/xTab;
}
}
}
Comment(txtOut); // âûâåëè êîìåíò
ReleaseDC(hWnd, hdc); // îñâîáîäèëè êîíòåêñò
DeleteObject(hFont); // óäàëèëè ôîíò
return(0);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---