Diskussion zum Artikel "Grafische Oberfläche X: mehrzeiliges Textfeld (build 8)" - Seite 3

 
Carl Schreiber:

Schau mal auf der Seite des Autors:

Dort gibt es eine neue Version des Textfeldes und zwei generelle Updates des Gesamtcodes und zwei noch nicht übersetzte Artikel, vielleicht ist da etwas dabei, sonst schreib ihm eine private mail am besten in Deutsch und den Übersetzungen in engl. und russisch.


Sehr gut Carl  !

Super Tipp .... ist tatsächlich in der nächsten Version enthalten . Hab das mal übersetzt. 

Ich muss wohl mal öfters bei den Autoren stöbern.

Die gesuchte Funktion ist CTextBox::ActivateTextBox()

Gruß Christian

Nach dem Doppelklick auf die Tabellenzelle erscheint das Eingabefeld,
 aber um einen weiteren Klick auszuschließen,
 um das Eingabefeld zu aktivieren,
 wurde eine zusätzliche öffentliche Methode CTextBox :: ActivateTextBox () benötigt. 
Sein Anruf simuliert einen Klick auf das Eingabefeld.
 Um dies zu tun, rufen Sie einfach die Methode CTextBox :: OnClickTextBox () auf und übergeben Sie den Namen des Grafikobjekts des Elements. 
Die Auswahl des Textes erfolgt bereits bei dieser Methode
 

Hallo.

Haben Sie festgestellt, dass die Methode CTimeCounter::CheckTimeCounter(void) absolut falsch implementiert ist. Ich meine, wo ist da eine Bindung an Zeit oder Sekunden? Es werden nur Zahlen verglichen. Deshalb funktioniert sie auch kontinuierlich.

GetTickCount() sollte irgendwo verwendet werden.
 

Ich kann nicht verstehen, warum wir auf eine Klassenmethode zugreifen

//--- Wenn das Array leer ist, beenden.
   if(CWndContainer::WindowsTotal()<1)
      return;

Wenn die aktuelle Klasse erbt von

CWndContainer

Was ist der Sinn?

 

Warum die Dinge so aufteilen?

protected:
   CChart            m_chart;
   //--- ID und Nummer des Diagrammfensters
   long              m_chart_id;
   int               m_subwin;
   //--- Name des Programms
   string            m_program_name;
   //--- Kurzbezeichnung des Indikators
   string            m_indicator_shortname;
   //---
private:
   //--- Ereignisparameter
   int               m_id;
   long              m_lparam;
   double            m_dparam;
   string            m_sparam;
   //---
protected:
                     CWndEvents(void);
                    ~CWndEvents(void);
   //--- Ereignis-Handler für virtuelle Graphen
   virtual void      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam) {}
   //--- Zeitschaltuhr
   void              OnTimerEvent(void);
   //---
public:
   //--- Diagramm-Ereignishandler
   void              ChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
private:
   void              ChartEventCustom(void);
   void              ChartEventClick(void);
   void              ChartEventMouseMove(void);
   void              ChartEventObjectClick(void);
   void              ChartEventEndEdit(void);
   void              ChartEventChartChange(void);
   //--- Überprüfung von Ereignissen in Steuerelementen
   void              CheckElementsEvents(void);
   //--- Nummer des Teilfensters bestimmen
   void              DetermineSubwindow(void);
   //--- Überprüfen der Ereignisse der Steuerelemente
   void              CheckSubwindowNumber(void);
   //--- Initialisierung der Ereignisparameter
   void              InitChartEventsParams(const int id,const long lparam,const double dparam,const string sparam);
   //--- Verschieben des Fensters
   void              MovingWindow(void);
   //--- Überprüfung der Ereignisse aller Elemente durch den Zeitgeber
   void              CheckElementsEventsTimer(void);
   //---
protected:
   //--- Löschung der Schnittstelle
   void              Destroy(void);

Ich meine, warum eine Masse von Leuten ansprechen?

public:

protected:
private:

Warum kann man es nicht nur einmal ankündigen?