Diskussion zum Artikel "Grafisches Interface XI: Texteingabefelder und Kombinationsfelder in Tabellenzellen (build 15)" - Seite 3

 
Oleksii Chepurnyi:

Ja.

In der Tat, ja. Ich erinnere mich an etwas Ähnliches... Jetzt muss ich mich nur noch daran erinnern, was ich geändert habe :)

Ich glaube, ich habe dies hinzugefügt. Keys.mqh

vielen Dank!
 
Oleksii Chepurnyi:

...

Ich glaube, ich habe dies hinzugefügt. Keys.mqh

Habe es dem letzten Update für die Bibliothek hinzugefügt. Wird im nächsten Artikel als Appendix verfügbar sein.

Darüber hinaus gibt es einige Aktualisierungen für Tabellen in der Klasse CTable.

Die neueste Version dieser Klasse kann in diesem Artikel heruntergeladen werden: Visualisierung von Optimierungsergebnissen nach ausgewählten Kriterien

Etwas später wird die neueste Version der Bibliothek, die sich in der Codebasis befindet, hinzugefügt: EasyAndFast

 
Anatoli Kazharski:

Zum letzten Update für die Bibliothek hinzugefügt. Wird im nächsten Artikel als Anhang verfügbar sein.

Darüber hinaus gibt es einige Aktualisierungen für Tabellen in der Klasse CTable.

Die neueste Version dieser Klasse kann in diesem Artikel heruntergeladen werden: Visualisierung von Optimierungsergebnissen nach ausgewählten Kriterien

Wenig später wird die neueste Version der Bibliothek, die sich in der Codebasis befindet, hinzugefügt: EasyAndFast

Wenn es möglich ist, fügen Sie bitte diese Funktion hinzu:

Geben Sie bei der Angabe des Datentyps der Zelle an, wie viele Zeichen nach dem Dezimalpunkt zu zeichnen sind:

Beispiel: m_table.DataType(column,TYPE_DOUBLE,2);

oder geben Sie die Anzahl der Zeichen in einer separaten Funktion an

Beispiel: m_table.DataDigits(Spalte,2);

 
Andrii Djola:

wenn es möglich ist, mehr solcher Funktionen hinzufügen:

Geben Sie bei der Angabe des Datentyps der Zelle an, wie viele Zeichen nach dem Dezimalkomma gezeichnet werden sollen:

...

Jetzt können Sie auch die Anzahl der Dezimalstellen angeben:

//+------------------------------------------------------------------+
//| Füllt das Array um die angegebenen Indizes
//+------------------------------------------------------------------+
void CTable::SetValue(const uint column_index,const uint row_index,const string value="",const uint digits=0,const bool redraw=false)
  {
//--- Prüfung auf Bereichsüberschreitung
   if(!CheckOutOfRange(column_index,row_index))
      return;
//--- Den Wert in ein Array setzen:
// Zeichenfolge
   if(m_columns[column_index].m_data_type==TYPE_STRING)
      m_columns[column_index].m_rows[row_index].m_full_text=value;
//--- Real
   else if(m_columns[column_index].m_data_type==TYPE_DOUBLE)
     {
      m_columns[column_index].m_rows[row_index].m_digits=digits;
      double type_value=::StringToDouble(value);
      m_columns[column_index].m_rows[row_index].m_full_text=::DoubleToString(type_value,digits);
     }
//--- Zeit
   else if(m_columns[column_index].m_data_type==TYPE_DATETIME)
     {
      datetime type_value=::StringToTime(value);
      m_columns[column_index].m_rows[row_index].m_full_text=::TimeToString(type_value);
     }
//--- Jeder andere Typ wird als String gesetzt
   else
      m_columns[column_index].m_rows[row_index].m_full_text=value;
//--- Den Text anpassen und speichern, wenn er nicht in die Zelle passt
   m_columns[column_index].m_rows[row_index].m_short_text=CorrectingText(column_index,row_index);
//--- Neuzeichnen der Zelle, falls angegeben
   if(redraw)
      RedrawCell(column_index,row_index);
  }
 
Anatoli Kazharski:

Jetzt können Sie auch die Anzahl der Dezimalstellen angeben:

Ja, aber wenn man einen Dezimalpunkt in das Eingabefeld eingibt, dann wird alles nach dem Dezimalpunkt verworfen, ich musste es ein bisschen ändern!

aber Sie haben eine großartige Arbeit geleistet!!!!

 
Beim Aufrufen der Funktion Rebuild bin ich auch auf dieses Problem gestoßen, die Bilder auf den Schaltflächen werden nicht angezeigt
 
Andrii Djola:
Ich bin auch auf dieses Problem gestoßen, wenn ich die Funktion Rebuild aufrufe, werden die Bilder auf den Schaltflächen nicht gezeichnet

Das liegt daran, dass in der Methode CTable::Rebuilding() alle Zellen gelöscht und neue angelegt werden. Daher müssen nach dem Neuaufbau der Tabelle alle Zellen wieder mit Daten gefüllt werden.

Andrii Djola:

Ja, aber wenn man einen Wert mit einem Kommain das Eingabefeldeingibt , dann wird alles nach dem Komma verworfen, ich musste es ein bisschen ändern!

Zeigen Sie mir im Detail, was Sie meinen.

 
Ich fülle sie mit der gleichen Funktion, mit der ich die Tabelle erstellt habe, aber sie zeichnet keine Bilder.
 
Andrii Djola:
Ich fülle sie mit der gleichen Funktion, mit der ich die Tabelle erstellt habe, aber es werden keine Bilder gezeichnet.

Zeigen Sie mir, was Sie tun und wie Sie es tun. Ohne es zu sehen, ist es schwierig, etwas vorzuschlagen.

 
Anatoli Kazharski:

Zeigen Sie mir, was Sie tun und wie Sie es tun. Ohne es zu sehen, ist es schwer, Ihnen etwas zu sagen.

Ich habe diesen Code gelöscht, aber wenn ich ihn reproduzieren kann, werde ich ihn hier posten!