Klassen für die Erstellung von Tafeln und Dialogen - Seite 2

 
Dmitry Fedoseev:

Falsch. Der Indikator selbst wird im Unterfenster gezeichnet, aber das Panel muss im Preisdiagramm erstellt werden. Auf den Parameter subwin gibt es keine Reaktion. Nach dem Code in Dialog.mqh zu urteilen, sollte dies nicht der Fall sein:

bool CAppDialog::CreateIndicator(const int x1,const int y1,const int x2,const int y2)
  {
   int width=m_chart.WidthInPixels();
//--- geometry for the minimized state
   m_min_rect.LeftTop(0,0);
   m_min_rect.Width(width);
   m_min_rect.Height(CONTROLS_DIALOG_MINIMIZE_HEIGHT-2*CONTROLS_BORDER_WIDTH);
//--- determine subwindow
   m_subwin=ChartWindowFind();

Ich habe bereits einen Ausweg gefunden, sehr knifflig (und sehr ungewöhnlich, wird in dem Artikel sein). Dennoch ist die Denkweise des Schöpfers dieser Klassen sehr interessant.

Um einen SimplePanel-Indikator im Hauptdiagrammfenster statt in einem Unterfenster zu erstellen, genügt es, #property indicator_separate_window statt #property indicator_chart_window zu schreiben

 
Dmitry Fedoseev:

Na gut, ich werde mich umhören. Aber in ein paar Tagen. Ich brauche etwas Ruhe, ich bin überhitzt. Und ich hätte gerne eine Antwort von Roche zu den Anforderungen an die grafische Benutzeroberfläche.

Aber wenn es Ihnen nichts ausmacht, zeigen Sie mir eine Vorlage mit einem Fenster, wie auf dem Bild oben, mit:

  • zwei Eingabefelder
  • zwei Eingabefelder mit Spins
  • zwei Dropdown-Listen
  • Taste

Natürlich müssen die Ereignisse behandelt werden, und ein Code-Beispiel, wie man die Größe des Fensters ändert, wäre auch nett.

Der Hauptpunkt meiner Aufgabe besteht darin, die Steuerelemente des Formulars im laufenden Betrieb zu ändern.

Die ersten beiden Eingabefelder sollten für Texteingaben vorgesehen sein? Leider wird sie erst in der nächsten Version enthalten sein und ich kann noch nicht sagen, wann sie veröffentlicht wird. Das Material ist fast fertig, aber ich habe noch nicht mit dem Schreiben des Artikels begonnen.

 
Slawa:

Um einen SimplePanel-Indikator im Hauptfenster und nicht in einem Unterfenster zu erstellen, schreiben Sie einfach #property indicator_separate_window anstelle von #property indicator_chart_window

Wenn zur gleichen Zeit ein Indikator im Unterfenster erscheint, wird das Bedienfeld gestört. Ich habe bereits hier darüber geschrieben.
 
Anatoli Kazharski:

Die ersten beiden Eingabefelder sollen zur Texteingabe dienen? Leider wird sie erst in der nächsten Version enthalten sein, und ich kann noch nicht sagen, wann sie veröffentlicht wird. Das Material ist fast fertig, aber ich habe noch nicht mit dem Schreiben des Artikels begonnen.

Wie das? Das Eingabefeld ist der Anfang vom Anfang. Wir haben die Spin-Box, aber nicht das Eingabefeld.

Im Allgemeinen sollten Sie int-Parameter und mehrere Varianten von Standard-Aufzählungen fahren: Art des Durchschnitts, Preis (für diese die Dropdown-Liste). Aber nur, wenn die Bibliothek das Elementare nicht zur Verfügung stellt, ich weiß nicht. Ich weiß nicht, ob es das wert ist. Ich weiß nicht, ob es das wert ist, damit jemand anderes seinen Kopf gegen die Wand schlägt.

 
Dmitry Fedoseev:

Wie ist das möglich? Das Eingabefeld ist der Anfang vom Anfang. Die SpinBox ist da, das Eingabefeld nicht.

Im Allgemeinen sollten Sie int-Parameter und mehrere Varianten von Standard-Aufzählungen fahren: Art des Durchschnitts, Preis (für diese die Dropdown-Liste). Aber nur, wenn die Bibliothek das Elementare nicht zur Verfügung stellt, ich weiß nicht. Ich weiß nicht, ob es das wert ist. Damit jemand anderes danach mit dem Kopf gegen die Wand schlägt.

So war es dann auch. Ich habe es in meiner Entwicklung noch nirgends gebraucht und habe erst kürzlich eine Anfrage von mehreren Benutzern nach einem Texteingabefeld erhalten.

Die Bibliothek entwickelt sich weiter. Nach und nach wird alles da sein, was Sie brauchen. )

 
Dmitry Fedoseev:

...

Im Allgemeinen int-Parameter und einige Optionen für die Standardaufzählung: Art des Durchschnitts, Preis (hierfür eine Dropdown-Liste).

Und welche Parameter sollen in das Textfeld eingegeben werden?
 
Anatoli Kazharski:
Und welche Parameter sollen in das Textfeld eingegeben werden?
Zahlen int
 
Dmitry Fedoseev:
Zahlen int

Oder?

//---

P.S. Die Eingabefelder für Zahlen sind jetzt schon da. Dies ist die Klasse CSpinEdit. Texteingabefelder, Klasse CTextEdit, werden mit dem nächsten Update(Build 5) verfügbar sein.

 
Anatoli Kazharski:

Oder?

//---

P.S. Die Eingabefelder für Zahlen sind jetzt schon da. Dies ist die Klasse CSpinEdit. Eingabefelder für Text, CTextEdit-Klasse, werden im nächsten Update(Build 5) enthalten sein.

Also
 
Dmitry Fedoseev:
Wenn im Unterfenster ein Indikator vorhanden ist, wird das Bedienfeld gestört. Ich habe bereits hier darüber geschrieben.

Nichts ist fehlerhaft. Was sind die Symptome?

Ich habe es gerade ausprobiert. Zunächst der Indikator im Unterfenster. Dann die Tafel auf der Karte. Dann ein ähnliches Panel im Unterfenster. Das einzige, was ich gesehen habe, war SimplePanel2 im ersten Unterfenster. Dies hat jedoch keine Auswirkungen auf den Betrieb. Alle Tasten richtig gedrückt.

Das einzige, was SimplePanel2 von SimplePanel unterscheidet, ist die Eigenschaft indicator_chart_window.

PS: Reden wir über fünf oder vier?