Обсуждение статьи "Графические интерфейсы X: Элемент "Многострочное текстовое поле ввода" (build 8)" - страница 2

 
Реter Konow:

...

Добавлено:

Я загрузил библиотеку, но честно говоря даже не представляю как все это сделать. Инструкции ведь нет.

У Вас сложности разместить папки с файлами из архива по тем же директориям, как они там представлены?

Это всё, что нужно сделать. Этим ежедневно занимаются огромное количество пользователей MetaTrader, загружая файлы с этого сайта к себе на компьютер. Попробуйте и Вы. Всё бывает в первый раз. )

 
Anatoli Kazharski:

У Вас сложности разместить папки с файлами из архива по тем же директориям, как они там представлены?

Это всё, что нужно сделать. Этим ежедневно занимаются огромное количество пользователей MetaTrader, загружая файлы с этого сайта к себе на компьютер. Попробуйте и Вы. Всё бывает в первый раз. )

Да, я полный профан и новичек. :)

Потому прошу ответить на те вопросы, которые я Вам задал. Пожалуйста)

 
Реter Konow:

К слову, я никаких заявлений не делал. Статью прочел, но главные вещи так и не понял (много кода и взгляд теряется).

Если можете, ответьте пожалуйста на несколько вопросов:

  1. В приложении для теста элемента, объявлен массив инициализированный строками. Значит ли это, что строки попадают на полотно из него, или их можно печатать прямо на полотне?
  2. Верхнее поле ввода самостоятельно и не имеет отношения к нижнему полотну? Значит, текст из него на полотно не переноситься? Его смысл в том, чтобы увеличить кол-во вводимых символов?
  3. Если текст полотна инициализируется внутри программы, а не пишется на полотне, то зачем нужен бегающий курсор и добавление строк в текст? 
  4. Можно ли стирать текст на полотне курсором и добавлять с клавиатуры?

Читать нужно внимательно и вдумчиво. Иначе ничего не усвоите, а только время зря потратите (мало того, что своё, так ещё и других).

  1. Можно печатать на полотне.
  2. Верхнее поле ввода самостоятельно.
  3. Текст можно инициализировать внутри программы, а также вводить его в поле ввода с клавиатуры. Можно даже вводить программно во время выполнения программы. Зачем это нужно, каждый решает для себя самостоятельно. Это просто ещё одна возможность.
  4. Можно и то и другое.

 
Anatoli Kazharski:

Читать нужно внимательно и вдумчиво. Иначе ничего не усвоите, а только время зря потратите (мало того, что своё, так ещё и других).

  1. Можно печатать на полотне.
  2. Верхнее поле ввода самостоятельно.
  3. Текст можно инициализировать внутри программы, а также вводить его в поле ввода с клавиатуры. Можно даже вводить программно во время выполнения программы. Зачем это нужно, каждый решает для себя самостоятельно. Это просто ещё одна возможность.
  4. Можно и то и другое.

3,4 - Жаль Вы это не продемонстрировали на видео (ввод текста на полотне). Это же самое интересное!
 
Работа просто колоссальная. Огромное спасибо автору, обязательно буду использовать библиотеку в своих проектах. Мне представляется, что работе такого масштаба очень не помешал бы хэлп в стандартном формате. Можно ли надеяться на его появление?
 

Andrei Novichkov:
Работа просто колоссальная. Огромное спасибо автору, обязательно буду использовать библиотеку в своих проектах. Мне представляется, что работе такого масштаба очень не помешал бы хэлп в стандартном формате.

Можно ли надеяться на его появление?

Спасибо.

Да, справка будет. Работа над ней начнётся после того, как библиотека будет наполнена всем основным функционалом. Ещё немного осталось.

 

Здравствуйте.

Не находите, что метод CTimeCounter::CheckTimeCounter(void) абсолютно неправильно реализован. В смысле где там привязка ко времени-то или секундам... Просто числа сравниваются. Оттого он у меня и срабатывает непрерывно..

GetTickCount() должен где-то использоваться.
 

Не могу понять зачем мы обращаемся к методу класса

//--- Если массив пуст, выйдем
   if(CWndContainer::WindowsTotal()<1)
      return;

Если текущий класс наследуется от 

CWndContainer

Какой смысл ?

 

Зачем так все разбивать ?

protected:
   CChart            m_chart;
   //--- Идентификатор и номер окна графика
   long              m_chart_id;
   int               m_subwin;
   //--- Имя программы
   string            m_program_name;
   //--- Короткое имя индикатора
   string            m_indicator_shortname;
   //---
private:
   //--- Параметры событий
   int               m_id;
   long              m_lparam;
   double            m_dparam;
   string            m_sparam;
   //---
protected:
                     CWndEvents(void);
                    ~CWndEvents(void);
   //--- Виртуальный обработчик события графика
   virtual void      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam) {}
   //--- Таймер
   void              OnTimerEvent(void);
   //---
public:
   //--- Обработчики событий графика
   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);
   //--- Проверка событий в элементах управления
   void              CheckElementsEvents(void);
   //--- Определение номера подокна
   void              DetermineSubwindow(void);
   //--- Проверка событий элементов управления
   void              CheckSubwindowNumber(void);
   //--- Инициализация параметров событий
   void              InitChartEventsParams(const int id,const long lparam,const double dparam,const string sparam);
   //--- Перемещение окна
   void              MovingWindow(void);
   //--- Проверка событий всех элементов по таймеру
   void              CheckElementsEventsTimer(void);
   //---
protected:
   //--- Удаление интерфейса
   void              Destroy(void);

Я имею ввиду зачем плодить массу 

public:

protected:
private:

Почему нельзя один раз обьявлять ?