Was ist das für ein Unsinn mit dem Registerzeichen? - Seite 5

 

Ich habe versucht, eine Tabelle mit Beschriftungen in Monoschrift zu erstellen, wie hier vorgeschlagen - das ist kein schöner Anblick. Vor allem die Bruchzahlen sind horizontal so verschmiert, dass es schwer zu erkennen ist. Es bleibt also die Möglichkeit, die Beschriftungen in einer normalen Schriftart zu erstellen und für jede Zelle eine eigene Beschriftung zu verwenden. Wie ich bereits geschrieben habe, würde das eine ganze Reihe von Objekten betreffen.

Jartmailru, wissen Sie, ob es realistisch ist, ein Ausgabefenster direkt im EA-Code zu erstellen, ohne eine DLL zu verwenden? Alle WinApi-Funktionen sind verfügbar. Die einzige Schwierigkeit besteht darin, dass eine Struktur, die sowohl Variablen als auch Zeiger enthält, gleichzeitig übergeben wird.

 

Etiketten im monobreiten

 
Lassen Sie sich nicht täuschen - verwenden Sie eine handelsübliche Komponente: https: //www.mql5.com/ru/code/8724
 
xrust:

die Etiketten in der Monokamera.


In einer Monokamera, meinen Sie?

Das ist natürlich schön, aber Sie haben keine Tabellen mit vielen langen Zahlen in einer Reihe, so dass es ziemlich einfach zu lesen ist.

 
Meat:


Sie meinen, in einem Mono-Wide?

Das ist schön, aber Sie haben keine Tabellen mit vielen langen Zahlen hintereinander, so dass es ziemlich einfach zu lesen ist.

Vielleicht, ich weiß es nicht, ich habe mir noch nie eine solche Aufgabe gestellt. Nachdem das Terminal als ein ziemlich gutes Werkzeug für die Anzeige von verschiedenen Arten von grafischen Informationen in Form von Grafiken und Diagrammen, zu bauen und zu analysieren, eine große Menge an textlichen Informationen in ihm? - Warum, wenn man dafür Excel hat ... Aber das ist natürlich nur meine bescheidene Meinung :)
 
jartmailru:
Andererseits frage ich mich, ob Sie nicht schon einmal mit dem Thema
dass in der Regel die ersten 30 % der Einträge im Protokoll fehlen und dass danach selektiv Einträge verloren gehen.
Die Protokolle enthalten alle Zeilen, das Terminal zeigt sie nur selektiv an. Wenn Sie die Dateien selbst öffnen, sind sie alle vorhanden.
 
MetaDriver:

// Können Sie eine DLL für Unicode erstellen? Ich werde Ihnen dafür sehr dankbar sein.

Hier ist es. Funktionen LogW, SelectW hinzugefügt, aber nicht getestet - bei Problemen bitte melden.
Wenn Sie die Mappe für die 5. anfertigen, schicken Sie sie mir bitte zu :-).
.
Fleisch:

Jartmailru, wissen Sie, ob es realistisch ist, ein Ausgabefenster direkt im EA-Code ohne Verwendung einer DLL zu erstellen? Alle WinApi-Funktionen sind verfügbar. Das einzige Problem kann nur bei der Übergabe einer Struktur auftreten, die sowohl Variablen als auch Zeiger enthält.

Wenn Sie etwas Verdrehtes gemacht haben, ist es vielleicht möglich. Ich verdrehe mich nicht :-).
Ein Fenster neben einem MT in C++ erfordert einen eigenen Schnittstellen-Thread.
Wenn es sich um ein einzelnes Fenster handelt, ist es trivial.
.
Übrigens... es ist keine Tatsache, dass Registerkarten... ...werden Sie in der Lage sein, die
den Inhalt der Spalten im richtigen Maß.
.
PapaYozh:
Die Protokolle enthalten alle Zeilen, das Terminal zeigt sie nur selektiv an. Wenn Sie die Dateien selbst öffnen, sind sie alle vorhanden.
Das stört mich nicht :-). Aber: Ich habe alles angezeigt + ich habe ein Diagramm erstellt.
log (der Punkt aus dem Diagramm wird im Protokoll gesucht - die richtige Stelle wird angezeigt).
.
Dateien:
out.zip  123 kb
 

Nun, ich habe eine Registerkarte für breite Schriftarten erstellt! :) Juhu! :) Natürlich musste ich mir viel Mühe mit WinAPI-Funktionen geben, aber das war es wert. Es ist nicht nur für Comment, sondern auch für Label nützlich. Die Idee ist, dass wir die Größe jeder Zeichenkette in jeder Schriftart in Pixeln erhalten. Und dann können Sie sie tabellarisch ordnen, wie Sie wollen, entweder links, rechts oder in der Mitte. Bei Comment wird die Tabellierung natürlich mit Leerzeichen durchgeführt, so dass das Ergebnis nicht perfekt ist, der Fehler liegt bei 1-2 Pixeln, aber das ist im Prinzip egal. Bei Etiketten ist alles viel einfacher.

Hier ist ein Beispiel für die Registerkarten in Comment. Hier wird Tahoma,8 angegeben, da Kommentare in dieser Schriftart ausgegeben werden.

#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 48
  int hWnd=WindowHandle(Symbol(),Period());
  int DC=GetDC(hWnd);
  int dpi=GetDeviceCaps(DC,88);  //88=LOGPIXELSX
  string 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);
}

 
Du bist verdammt faul :-)
 
Meat:

Hier ist ein Beispiel für das Tabbing in Comment. Als Schriftart ist hier Tahoma,8 eingestellt, da Kommentare in dieser Schriftart ausgegeben werden.


+ Erneute Ausgabe eines beliebigen Textes, nicht nur eines Arrays von Zeilen

+ als separate Funktion CommentTab erstellt

+ Hinzufügen eines Arrays von TabStop-Werten und einer Standard-Tab-Größe (wie in der GDI-Funktion)

Beispiel für Text und Ergebnis

//------------------------------------------------------------------    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[]={10, 22, 10, 10, 15, 12, 12, 12, 22, 12, 20, 10, 10}; // размеры в пробелах
       
  CommentTab(txt, tab, 30); // вызвали преобразование и вывод по табуляции
}


Grund der Beschwerde: