2. Fügen Sie in den Klassen CTabs und CIconTabs (Dateien Tabs.mqh und IconTabs.mqh) in der Methode ShowTabElements() eine Zeile wie im folgenden Listing ein:
//+------------------------------------------------------------------+//| Zeigt nur die Elemente der ausgewählten Registerkarte an.//+------------------------------------------------------------------+void CTabs::ShowTabElements(void)
{
//--- Beenden, wenn Registerkarten ausgeblendet sindif(!CElement::IsVisible())
return;
//--- Prüfen des Index der ausgewählten Registerkarte
CheckTabIndex();
//---for(int i=0; i<m_tabs_total; i++)
{
//--- Ermitteln der Anzahl der an die Registerkarte angehängten Elementeint tab_elements_total=::ArraySize(m_tab[i].elements);
//--- Wenn diese Registerkarte hervorgehoben istif(i==m_selected_tab)
{
//--- Registerkartenelemente anzeigenfor(int j=0; j<tab_elements_total; j++)
m_tab[i].elements[j].Show();
}
//--- Elemente von inaktiven Registerkarten ausblendenelse
{
for(int j=0; j<tab_elements_total; j++)
m_tab[i].elements[j].Hide();
}
}
//--- Senden Sie eine Nachricht darüber
::EventChartCustom(m_chart_id,ON_CLICK_TAB,CElement::Id(),m_selected_tab,"");
}
//---
3. jetzt kann das Ereignis mit dem Bezeichner ON_CLICK_TAB im Handler der benutzerdefinierten Klasse akzeptiert werden.
Danke, es funktioniert. Ich habe noch einen weiteren Fehler gefunden - wir starten das Werkzeug, bewegen das Panel weg und beginnen, die Optionsfelder zu drücken. Wenn die Tabelle gezeichnet wird, beginnt sie zunächst von der linken Kante gezeichnet werden, und dann ist es irgendwie zieht bis zu den erforderlichen Koordinaten.
Alexey Oreshkin: Danke, es funktioniert. Ich habe noch einen weiteren Fehler gefunden - wir starten das Werkzeug, bewegen das Panel weg und beginnen, die Optionsfelder zu drücken. Wenn die Tabelle gezeichnet wird, wird sie zuerst vom linken Rand aus gezeichnet, und dann zieht sie sich irgendwie bis zu den gewünschten Koordinaten hoch.
Ja, so etwas gibt es. Fügen Sie am Beispiel dieser Art von Tabelle der Methode CCanvasTable::Show() in der Datei CanvasTable.mqh eine Zeile wie folgt hinzu:
//+------------------------------------------------------------------+//|| Zeigt das Element|//+------------------------------------------------------------------+void CCanvasTable::Show(void)
{
//--- Beenden, wenn das Element bereits sichtbar istif(CElement::IsVisible())
return;
//--- Alle Objekte sichtbar machen
m_area.Timeframes(OBJ_ALL_PERIODS);
m_canvas.Timeframes(OBJ_ALL_PERIODS);
m_scrollv.Show();
m_scrollh.Show();
//--- Sichtbarkeitsstatus
CElement::IsVisible(true);
//--- Verschieben eines Gegenstands
Moving(m_wnd.X(),m_wnd.Y());
}
//---
Wenn dieses Problem bei anderen Elementen auftritt, fügen Sie die gleiche Zeile in deren Show()-Methode ein. Alle Elementklassen werden diesen Fix im nächsten Update haben.
Hallo, ich verfolge Ihre Arbeit, und ich bin wirklich dankbar.
Sie bereits entwickelt oder sehen Sie etwas, das mit Tabellierungen oder Fokus auf Steuerelemente im Formular arbeiten kann.
Ich brauche die Ausgaben zu ändern, nachdem ich eine Eingabe in einem CEdit oder CSpinEdit und drücken Sie Enter oder drücken Sie TAB, ich möchte auf die nächste bearbeiten, für bessere Usuability in meinem Programm übergeben.
Können Sie mir helfen oder mir zeigen, wo ich suchen muss?
Vielen Dank für Ihren Beitrag für die Gemeinschaft.
Haben Sie schon etwas entwickelt oder gesehen, das mit Tabulatoren oder Focus on Controls im Formular arbeiten kann.
Ich muss die Ausgaben ändern, nachdem ich eine Eingabe in ein CEdit oder CSpinEdit eingefügt habe und Enter oder TAB drücke, möchte ich zum nächsten Edit übergehen, für eine bessere Nutzbarkeit in meinem Programm.
Im Moment ist dies nicht möglich. Ich werde darüber nachdenken, wie ich es implementieren kann.
Anatoli Kazharski: Im Moment ist dies noch nicht möglich. Ich werde darüber nachdenken, wie man es implementieren kann.
Anatoli Kazharski, ich denke darüber nach. Gibt es eine Möglichkeit, wie ich den Editionsmodus per Code aktivieren kann, so wie wenn sie nicht ReadOnly sind und wir einen Doppelklick auf das CEdit machen und sie werden blau und ausgewählt. Oder, irgendeine Möglichkeit, wie ich eine Eingabe per Splash, Messagebox oder irgendein Fenster automatisch anfordern kann, wenn ich den Code ausführe.
Ich denke über einige Möglichkeiten nach, und ich will wirklich keine DLL benutzen, ich bin noch nicht so ein Profi. Aber ich habe wirklich den Willen. Wenn Sie mir ein paar Hinweise oder Ideen geben, kann ich unseren Code wirklich verbessern.
Ich möchte dich nur darauf hinweisen, dass es einen Tippfehler in MenuItem.mqh, Zeile 237, gibt, der es nicht möglich macht, erfolgreich kompiliert zu werden:
" > The type of the menu item can be set using the CMenuItem::TypeMenuItem()") method");
sollte stattdessen lauten
" > The type of the menu item can be set using the CMenuItem::TypeMenuItem() method");
Wann ist die Aktualisierung zu erwarten?
Wenn Sie es dringend benötigen, können Sie die folgenden Änderungen selbst vornehmen:
1. Fügen Sie in der Datei Defines.mqh einen neuen Bezeichner hinzu:
//---
2. Fügen Sie in den Klassen CTabs und CIconTabs (Dateien Tabs.mqh und IconTabs.mqh) in der Methode ShowTabElements() eine Zeile wie im folgenden Listing ein:
//---
3. jetzt kann das Ereignis mit dem Bezeichner ON_CLICK_TAB im Handler der benutzerdefinierten Klasse akzeptiert werden.
Beispiel:
Ich habe noch einen weiteren Fehler gefunden - wir starten das Werkzeug, bewegen das Panel weg und beginnen, die Optionsfelder zu drücken. Wenn die Tabelle gezeichnet wird, beginnt sie zunächst von der linken Kante gezeichnet werden, und dann ist es irgendwie zieht bis zu den erforderlichen Koordinaten.
Danke, es funktioniert.
Ich habe noch einen weiteren Fehler gefunden - wir starten das Werkzeug, bewegen das Panel weg und beginnen, die Optionsfelder zu drücken. Wenn die Tabelle gezeichnet wird, wird sie zuerst vom linken Rand aus gezeichnet, und dann zieht sie sich irgendwie bis zu den gewünschten Koordinaten hoch.
Ja, so etwas gibt es. Fügen Sie am Beispiel dieser Art von Tabelle der Methode CCanvasTable::Show() in der Datei CanvasTable.mqh eine Zeile wie folgt hinzu:
//---
Wenn dieses Problem bei anderen Elementen auftritt, fügen Sie die gleiche Zeile in deren Show()-Methode ein. Alle Elementklassen werden diesen Fix im nächsten Update haben.
Sie bereits entwickelt oder sehen Sie etwas, das mit Tabellierungen oder Fokus auf Steuerelemente im Formular arbeiten kann.
Ich brauche die Ausgaben zu ändern, nachdem ich eine Eingabe in einem CEdit oder CSpinEdit und drücken Sie Enter oder drücken Sie TAB, ich möchte auf die nächste bearbeiten, für bessere Usuability in meinem Programm übergeben.
Vielen Dank für Ihren Beitrag für die Gemeinschaft.
Haben Sie schon etwas entwickelt oder gesehen, das mit Tabulatoren oder Focus on Controls im Formular arbeiten kann.
Ich muss die Ausgaben ändern, nachdem ich eine Eingabe in ein CEdit oder CSpinEdit eingefügt habe und Enter oder TAB drücke, möchte ich zum nächsten Edit übergehen, für eine bessere Nutzbarkeit in meinem Programm.
Im Moment ist dies noch nicht möglich. Ich werde darüber nachdenken, wie man es implementieren kann.
Oder, irgendeine Möglichkeit, wie ich eine Eingabe per Splash, Messagebox oder irgendein Fenster automatisch anfordern kann, wenn ich den Code ausführe.
Ich denke über einige Möglichkeiten nach, und ich will wirklich keine DLL benutzen, ich bin noch nicht so ein Profi. Aber ich habe wirklich den Willen. Wenn Sie mir ein paar Hinweise oder Ideen geben, kann ich unseren Code wirklich verbessern.
Lieber Anatoli, vielen Dank für deine Mühe!
Ich möchte dich nur darauf hinweisen, dass es einen Tippfehler in MenuItem.mqh, Zeile 237, gibt, der es nicht möglich macht, erfolgreich kompiliert zu werden:
" > The type of the menu item can be set using the CMenuItem::TypeMenuItem()") method");sollte stattdessen lauten
" > The type of the menu item can be set using the CMenuItem::TypeMenuItem() method");richtig?
Der Edit flackert ständig.
https://www.mql5.com/en/forum/274301