rCommentTab

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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---