Diskussion zum Artikel "Grafische Interfaces X: Erweitertes Management von Listen und Tabellen Code Optimierung (build 7)" - Seite 6

 
Anatoli Kazharski:

Nun, Sie sind es nicht gewohnt, "hin und her umzugestalten". )

Wahrscheinlich wird es nächste Woche einen neuen Artikel geben. Ich werde die erste Version des mehrzeiligen Eingabefeldes vorstellen. In den folgenden Artikeln werde ich nach und nach alles hinzufügen, was unter vier Augen und im Forum diskutiert wurde.

Ich würde die Methoden ItemsSelectedTotal(); ItemsUnselectedTotal(); zusammen mit ItemsTotal() hinzufügen;
 
Artyom Trishkin:
Ich würde Methoden ItemsSelectedTotal(); ItemsUnselectedTotal(); zusammen mit ItemsTotal() hinzufügen;

zu CListView und CCheckBoxList hinzufügen?

Das werde ich tun, aber nicht im nächsten Artikel. Es wird also ein ziemlich großer Artikel werden.

 
Anatoli Kazharski:

Zu CListView und CCheckBoxList?

Ich werde es hinzufügen, aber nicht im nächsten Artikel. Dies ist ein ziemlich umfangreicher Artikel.

Ja, in ihnen. Okay, vielen Dank.
 

Tol, wie kann ich programmatisch herausfinden, welches Kontrollkästchen eines Listenelements aktiviert ist. Ohne darauf zu klicken.

Ich brauche eine Liste aller angekreuzten Elemente in der Liste.

Ich bin ratlos. Bitte sagen Sie mir, in welche Richtung ich schauen muss.

 
Artyom Trishkin:

Tol, wie kann ich programmatisch herausfinden, welches Kontrollkästchen eines Listenelements aktiviert ist. Ohne darauf zu klicken.

Ich brauche eine Liste aller angekreuzten Elemente in der Liste.

Ich bin ratlos. Bitte sagen Sie mir, in welche Richtung ich schauen muss.

CCheckBoxList::GetItemState()
 
Anatoli Kazharski:
CCheckBoxList::GetItemState()

Danke! Das ist, was ich tat. Ich habe eine Schleife von 0 bis ItemsTotal() gemacht. Es war mein Fehler, deshalb hat es gepatzt.

Können Sie mir sagen, ob die Zustände der Kontrollkästchen beim Wechsel des Zeitrahmens zurückgesetzt werden?

Wenn ja, wie kann ich diesen unangenehmen Moment umgehen? (Bei mir werden sie zurückgesetzt - vielleicht mache ich etwas falsch).

 
Artyom Trishkin:

Ich danke Ihnen. Das ist, was ich tat. Ich habe eine Schleife von 0 bis ItemsTotal() gemacht. Das war mein Fehler, deshalb gab es die Störung.

Könnten Sie mir bitte sagen, ob die Zustände der Kontrollkästchen beim Wechsel des Zeitrahmens zurückgesetzt werden?

Wenn ja, wie kann ich diesen unangenehmen Moment umgehen? (Ich habe sie zurückgesetzt - vielleicht mache ich etwas falsch).

Sie müssen in eine Datei schreiben. Und sie lesen, wenn Sie die GUI installieren. Dies ist das Thema eines zukünftigen Artikels und es ist noch ein langer Weg zu gehen.

 
Anatoli Kazharski:

Sie müssen in eine Datei schreiben. Und sie bei der Installation der GUI lesen. Das ist das Thema eines zukünftigen Artikels und es ist noch ein langer Weg bis dahin.

Ich tue es bereits. Habe nicht auf eine schnelle Antwort gewartet ;)
 

Anatol, ich versuche, Bid-Preise von Zeichen, die in Tabellenzeilen in Spalte 0 geschrieben werden, in die Tabelle im Timer zu schreiben:

//+------------------------------------------------------------------+
//| Timer|
//+------------------------------------------------------------------+
void CProgram::OnTimerEvent(void)
  {
   CWndEvents::OnTimerEvent();
   //--- Pause zwischen den Aktualisierungen von Listen und Tabellen
   if(m_counter1.CheckTimeCounter()) {
      uint sz=m_table_main_symbol_list.RowsTotal();
      for(uint i=1; i<sz; i++) {
         string sy=m_table_main_symbol_list.GetValue(0,i);
         MqlTick tick;
         if(sy!=NULL && sy!="") {
            if(SymbolInfoTick(sy,tick)) {
               int dg=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
               m_table_main_symbol_list.SetValue(1,i,DoubleToString(tick.bid,dg),dg);
               m_table_main_symbol_list.TextColor(1,i,clrDimGray);
               //m_table_main_symbol_list.UpdateTable();
               }
            }
         }
      //--- Zeichnen Sie das Diagramm neu
      m_chart.Redraw();
      }
//--- Pause zwischen den Aktualisierungen der Statusleiste
   if(m_counter2.CheckTimeCounter()) {

      //--- Zeichnen Sie das Diagramm neu
      m_chart.Redraw();
      }
  }
//+------------------------------------------------------------------+

Wenn dies ohne UpdateTable() geschieht, erscheinen keine Daten in den Tabellenzellen. Wenn Sie die Tabelle jedes Mal aktualisieren, wenn Sie einen neuen Tick erhalten, wird es unmöglich, mit der Tabelle zu arbeiten - es blinkt, die hervorgehobene Zeile blinkt, etc....

Wie kann man sich aus dieser Situation befreien?

 
Artyom Trishkin:

Anatole, ich versuche, in einer Tabelle in einem Timer auf die Spalte mit Index 1 die Geldpreise der Zeichen in den Tabellenzeilen in Spalte 0 eingegeben zu schreiben:

...

Wenn ich das ohne UpdateTable() mache, erscheinen keine Daten in den Tabellenzellen. Wenn Sie die Tabelle jedes Mal aktualisieren, wenn Sie ein neues Häkchen erhalten, dann wird es unmöglich, mit der Tabelle zu arbeiten - sie blinkt, die ausgewählte Zeile blinkt, etc....

Wie kommt man aus dieser Situation heraus?

Nicht genug Daten, um das Problem zu reproduzieren. Fügen Sie ein vollständiges Beispiel bei, damit ich es selbst nachvollziehen kann.