Hallo Anatoly, ich habe in der Basisklasse keine Methoden zum Speichern und Laden von Formularparametern (Position, Status...) gesehen. Planen Sie, solche Methoden in Zukunft hinzuzufügen, unter Berücksichtigung der Art der Formulare?
Ein solcher Artikel ist geplant. Aber in meiner Version werden die zu speichernden und zu ladenden Parameter durch den Entwickler der MQL-Anwendung bestimmt werden.
Guten Tag. Anatoly, natürlich möchte ich meinen tiefsten Respekt für Ihre Arbeit und die von Ihnen geleistete Arbeit zum Ausdruck bringen. Aber ich habe eine Frage beim Testen der Bibliothek am Beispiel eines Expert Advisors. Warum ist die Farbe des Fensters schwarz, während alle Farben der Elemente, aus denen das Fenster besteht, standardmäßig auf LightGray eingestellt sind? Gibt es nicht irgendwo eine Farbüberschneidung, die zu einem schwarzen Fenster führt? Ich füge ein Bildschirmfoto bei:
Guten Tag. Anatoly, natürlich möchte ich meinen tiefsten Respekt für Ihre Arbeit und die von Ihnen geleistete Arbeit zum Ausdruck bringen. Aber ich habe eine Frage beim Testen der Bibliothek am Beispiel eines Expert Advisors. Warum ist die Farbe des Fensters schwarz, während alle Farben der Elemente, aus denen das Fenster besteht, standardmäßig auf LightGray eingestellt sind? Gibt es nicht irgendwo eine Farbüberschneidung, die zu einem schwarzen Fenster führt? Ich habe ein Bildschirmfoto angehängt:
Sie können die Standardfarben des Formulars im Konstruktor der Klasse CWindow sehen (Datei Window.mqh).
Wenn Sie die Farben des Formulars ändern möchten, verwenden Sie die entsprechenden Methoden der CWindow-Klasse. Die Eigenschaften des Formulars werden vor dessen Erstellung festgelegt.
Dieses Beispiel wurde in dem Artikel gezeigt:
//+------------------------------------------------------------------+ //|| Erzeugt ein Formular für die Steuerelemente //+------------------------------------------------------------------+ bool CProgram::CreateWindow(const string caption_text) { //--- Hinzufügen des Fensterzeigers zum Fenster-Array CWndContainer::AddWindow(m_window); //--- Eigenschaften m_window.XSize(200); m_window.YSize(200); m_window.WindowBgColor(clrWhiteSmoke); m_window.WindowBorderColor(clrLightSteelBlue); m_window.CaptionBgColor(clrLightSteelBlue); m_window.CaptionBgColorHover(C'200,210,225'); //--- Formularerstellung if(!m_window.CreateWindow(m_chart_id,m_subwin,caption_text,1,1)) return(false); //--- return(true); }
//---
Ergebnis:

Ich konnte keine Methode finden, die die Farbe des Header-Textes ändert, also habe ich beschlossen, window.mqh hinzuzufügen:
string m_caption_text;
int m_caption_height;
color m_caption_text_color;
color m_caption_bg_color;
color m_caption_bg_color_off;
color m_caption_bg_color_hover;
color m_caption_color_bg_array[];
Und Methoden:
color CaptionTextColor(void) const { return(m_caption_text_color); }
Nun, und diese Methode ändert sich entsprechend:
//|| Erzeugt eine Kopfzeilenbeschriftung|
//+------------------------------------------------------------------+
bool CWindow::CreateLabel(void)
{
string name=CElementBase::ProgramName()+"_window_label_"+(string)CElementBase::Id();
//--- Objektkoordinaten
int x=CElementBase::X()+m_label_x_gap;
int y=CElementBase::Y()+m_label_y_gap;
//--- Festlegen der Textbeschriftung
if(!m_label.Create(m_chart_id,name,m_subwin,x,y))
return(false);
//--- Eigenschaften einstellen
m_label.Description(m_caption_text);
m_label.Font(CElementBase::Font());
m_label.FontSize(CElementBase::FontSize());
m_label.Color(m_caption_text_color);
m_label.Corner(m_corner);
m_label.Selectable(false);
m_label.Z_Order(m_button_zorder);
m_label.Tooltip("\n");
//--- Speichern der Koordinaten
m_label.X(x);
m_label.Y(y);
//--- Einzüge vom Endpunkt aus
m_label.XGap(x-m_x);
m_label.YGap(y-m_y);
//--- Abmessungen speichern
m_label.XSize(m_label.X_Size());
m_label.YSize(m_label.Y_Size());
//--- Speichern des Objektzeigers
CElementBase::AddToArray(m_label);
return(true);
}
Ich konnte keine Methode finden, mit der sich die Farbe des Kopfzeilentextes ändern lässt, also habe ich beschlossen, window.mqh hinzuzufügen:
Das ist gut. Ich werde auch diese Funktion in einem der nächsten Artikel hinzufügen.
Die neueste Version der Bibliothek kann in diesem Artikel heruntergeladen werden: GUIs X: New features for a drawn table (build 9).
Eine neue Version(Build 10) wird möglicherweise nächste Woche veröffentlicht.
Hallo Herr Anatoli, Ihre Artikel sind so schön und die Kodierung sind beeindruckend.
Ich brauche Hilfe, um mein Panel auf dem Diagramm zu bauen. Können Sie mir bitte helfen?
Danke!
HI. Ich möchte fragen, wie ich all diese Fehler beheben kann. Dankeschön
'Window.mqh' Window.mqh 1 1 'Element.mqh' Element.mqh 1 1 'Objects.mqh' Objects.mqh 1 1 'Enums.mqh' Enums.mqh 1 1 'Defines.mqh' Defines.mqh 1 1 'ChartObjectsBmpControls.mqh' ChartObjectsBmpControls.mqh 1 1 'ChartObject.mqh' ChartObject.mqh 1 1 'Object.mqh' Object.mqh 1 1 'StdLibErr.mqh' StdLibErr.mqh 1 1 'ChartObjectsTxtControls.mqh' ChartObjectsTxtControls.mqh 1 1 'Colors.mqh' Colors.mqh 1 1 undefined class 'CBmpLabel' cannot be used Window.mqh 25 15 see declaration of class 'CBmpLabel' Objects.mqh 20 7 undefined class 'CLabel' cannot be used Window.mqh 26 12 see declaration of class 'CLabel' Objects.mqh 19 7 undefined class 'CBmpLabel' cannot be used Window.mqh 27 15 see declaration of class 'CBmpLabel' Objects.mqh 20 7 undefined class 'CBmpLabel' cannot be used Window.mqh 28 15 see declaration of class 'CBmpLabel' Objects.mqh 20 7 undefined class 'CBmpLabel' cannot be used Window.mqh 29 15 see declaration of class 'CBmpLabel' Objects.mqh 20 7 undefined class 'CBmpLabel' cannot be used Window.mqh 30 15 see declaration of class 'CBmpLabel' Objects.mqh 20 7 'ENUM_WINDOW_TYPE' - unexpected token, probably type is missing? Window.mqh 36 5 'm_window_type' - semicolon expected Window.mqh 36 22 'ENUM_WINDOW_TYPE' - unexpected token, probably type is missing? Window.mqh 99 5 'WindowType' - semicolon expected Window.mqh 99 23 'void' - name expected Window.mqh 102 5 '}' - expressions are not allowed on a global scope Window.mqh 104 5 'const' modifier not allowed for nonmember functions Window.mqh 118 28 'const' modifier not allowed for nonmember functions Window.mqh 126 30 'const' modifier not allowed for nonmember functions Window.mqh 132 29 'const' modifier not allowed for nonmember functions Window.mqh 138 32 'const' modifier not allowed for nonmember functions Window.mqh 144 37 'public' - unexpected token, probably type is missing? Window.mqh 168 3 'long' - unexpected token, probably type is missing? Window.mqh 170 46 'double' - unexpected token, probably type is missing? Window.mqh 170 66 'string' - unexpected token, probably type is missing? Window.mqh 170 88 'virtual' - unexpected token Window.mqh 172 5 'virtual' - unexpected token Window.mqh 174 5 'virtual' - unexpected token Window.mqh 176 5 'virtual' - unexpected token Window.mqh 177 5 'virtual' - unexpected token Window.mqh 178 5 'virtual' - unexpected token Window.mqh 179 5 'virtual' - unexpected token Window.mqh 181 5 'virtual' - unexpected token Window.mqh 182 5 '}' - expressions are not allowed on a global scope Window.mqh 183 1 'RollUpSubwindowMode' - member function not defined Window.mqh 222 15 'ChangeSubwindowHeight' - member function not defined Window.mqh 235 15 'Hide' - member function not defined Window.mqh 294 15 'DefaultIcon' - member function not defined Window.mqh 362 17 'advisor.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\advisor.bmp" advisor.bmp 1 1 'indicator.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\indicator.bmp" indicator.bmp 1 1 'script.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\script.bmp" script.bmp 1 1 'm_window_type' - struct member undefined Window.mqh 193 5 'm_chart' - undeclared identifier Window.mqh 210 5 'SetWindowProperties' - undeclared identifier Window.mqh 212 5 ')' - expression expected Window.mqh 212 25 'm_window_type' - undeclared identifier Window.mqh 286 8 'W_DIALOG' - undeclared identifier Window.mqh 286 25 '.' - struct or class type expected Window.mqh 396 15 'Create' - undeclared identifier Window.mqh 396 16 'Create' - some operator expected Window.mqh 396 16 '(' - unbalanced left parenthesis Window.mqh 396 7 ',' - unexpected token Window.mqh 396 33 'name' - some operator expected Window.mqh 396 35 expression has no effect Window.mqh 396 23 ',' - unexpected token Window.mqh 396 49 expression has no effect Window.mqh 396 41 ',' - unexpected token Window.mqh 396 52 expression has no effect Window.mqh 396 51 ')' - unexpected token Window.mqh 396 55 expression has no effect Window.mqh 396 54 ')' - unexpected token Window.mqh 396 56 '.' - struct or class type expected Window.mqh 402 11 'BmpFileOn' - undeclared identifier Window.mqh 402 12 'BmpFileOn' - some operator expected Window.mqh 402 12 ')' - unexpected token Window.mqh 402 40 expression has no effect Window.mqh 402 27 '.' - struct or class type expected Window.mqh 403 11 'BmpFileOff' - undeclared identifier Window.mqh 403 12 'BmpFileOff' - some operator expected Window.mqh 403 12 ')' - unexpected token Window.mqh 403 41 expression has no effect Window.mqh 403 28 '.' - struct or class type expected Window.mqh 404 11 'Corner' - undeclared identifier Window.mqh 404 12 'Corner' - some operator expected Window.mqh 404 12 ')' - unexpected token Window.mqh 404 27 expression has no effect Window.mqh 404 19 '.' - struct or class type expected Window.mqh 405 11 'Selectable' - undeclared identifier Window.mqh 405 12 'Selectable' - some operator expected Window.mqh 405 12 ')' - unexpected token Window.mqh 405 28 expression has no effect Window.mqh 405 23 '.' - struct or class type expected Window.mqh 406 11 'Z_Order' - undeclared identifier Window.mqh 406 12 'Z_Order' - some operator expected Window.mqh 406 12 ')' - unexpected token Window.mqh 406 35 expression has no effect Window.mqh 406 20 '.' - struct or class type expected Window.mqh 407 11 'Tooltip' - undeclared identifier Window.mqh 407 12 'Tooltip' - some operator expected Window.mqh 407 12 ')' - unexpected token Window.mqh 407 24 expression has no effect Window.mqh 407 21 '.' - struct or class type expected Window.mqh 409 11 'X' - some operator expected Window.mqh 409 12 '.' - struct or class type expected Window.mqh 410 11 'Y' - some operator expected Window.mqh 410 12 '.' - struct or class type expected Window.mqh 412 11 'XGap' - some operator expected Window.mqh 412 12 '.' - struct or class type expected Window.mqh 413 11 'YGap' - some operator expected Window.mqh 413 12 '.' - struct or class type expected Window.mqh 415 11 '.' - struct or class type expected Window.mqh 415 24 'X_Size' - undeclared identifier Window.mqh 415 25 'X_Size' - some operator expected Window.mqh 415 25 '(' - unexpected token Window.mqh 415 31 'XSize' - some operator expected Window.mqh 415 12 '.' - struct or class type expected Window.mqh 416 11 '.' - struct or class type expected Window.mqh 416 24 'Y_Size' - undeclared identifier Window.mqh 416 25 'Y_Size' - some operator expected Window.mqh 416 25 '(' - unexpected token Window.mqh 416 31 'YSize' - some operator expected Window.mqh 416 12 'm_icon' - parameter conversion not allowed Window.mqh 418 26 void CElement::AddToArray(CChartObject&) Element.mqh 195 10 'm_icon_file' - undeclared identifier Window.mqh 109 9 'm_tooltips_button' - undeclared identifier Window.mqh 112 9 'm_right_limit' - undeclared identifier Window.mqh 115 9 'm_is_minimized' - undeclared identifier Window.mqh 119 16 expression not boolean Window.mqh 119 16 'm_is_minimized' - undeclared identifier Window.mqh 122 9 100 errors, 11 warnings 101 12
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Graphical Interfaces I: Formular mit Steuerelementen (Kapitel 2) :
Dieser Artikel ist die Fortsetzung des ersten Teils dieser Serie über grafische Interfaces. Der erste Artikel Grafische Interfaces I: Vorbereitung der Bibliotheksstruktur (Kapitel 1) betrachtet im Detail den Sinn und Zweck der Bibliothek. Eine vollständige Liste der Links zu den Artikeln des ersten Teils finden Sie am Ende von jedem Kapitel. Zudem finden Sie dort eine Möglichkeit das Projekt, entsprechend dem aktuellen Entwicklungszustand, herunterzuladen. Die Dateien müssen in den gleichen Verzeichnissen untergebracht werden, so, wie Sie auch in dem Archiv abgelegt sind.
In dem vorherigen Kapitel haben wir die Struktur der Bibliothek für die Erzeugung von grafischen Interfaces besprochen. Deren (1) abgeleitete Klassen für einfache Objekte, (2) eine Basisklasse für alle Controls, (3) und eine grundlegende Klasse für das Abspeichern von Pointern zu den Controls und das Verwalten der Controls in einem gemeinsamen Eventhandler.
In diesem Artikel erstellen wir das erste und wichtigste Element für das graphische Interface - ein Formular (Form) mit Steuerelementen (Controls) Es können eine Vielzahl von Controls zu jeder Zeit und in jeder Kombination zu dieser Form hinzugefügt werden.
Aus welchen Teilen wird die Form beziehungsweise das Fenster, welches wir nun erzeugen wollen, bestehen?
Autor: Anatoli Kazharski