Preguntas de un "tonto" - página 32

 
tol64:
Paso estas propiedades del objeto explícitamente (ANCHOR_RIGHT_UPPER, CORNER_RIGHT_UPPER):

Creo que lo tengo. ¿Has mostrado una función de ejemplo, no un trozo de código que funcione?

Ya está, me tomo el fin de semana libre. Perdón por la interrupción :)

 

Una versión mejorada de esta función, pero algo se puede retocar (en general, yo implementaría todo esto como un objeto, o varios objetos).

Aunque, puedes poner la función en una biblioteca y usarla como quieras.

bool Create_BMP_Label(long   chart_id,  // id графика
                      string bmp_nm,    // имя объекта
                      string bmp_path,  // путь к обекту
                      long   anchor,    // точка привязки
                      long   corner,    // угол привязки
                      int    x_dist,    // координата по шкале X
                      int    y_dist)    // координата по шкале Y
{
//----------------------------------------------------------------------------//
//Work variables
bool Result = true; //Returned importance
//----------------------------------------------------------------------------//

ResetLastError();

Result =  ObjectCreate(chart_id,bmp_nm,OBJ_BITMAP_LABEL,0,0,0); // создание объекта

  if(Result)
  {
  ObjectSetString(chart_id,bmp_nm,OBJPROP_BMPFILE,0,bmp_path);   // BMP файл
  ObjectSetInteger(chart_id,bmp_nm,OBJPROP_ANCHOR,anchor);       // установка точки привязки
  ObjectSetInteger(chart_id,bmp_nm,OBJPROP_CORNER,corner);       // установка угола привязки
  ObjectSetInteger(chart_id,bmp_nm,OBJPROP_XDISTANCE,x_dist);    // установка координаты X
  ObjectSetInteger(chart_id,bmp_nm,OBJPROP_YDISTANCE,y_dist);    // установка координаты Y
  ObjectSetInteger(chart_id,bmp_nm,OBJPROP_SELECTABLE,false);    // нельзя выделить объект, если FALSE
  ObjectSetString(chart_id,bmp_nm,OBJPROP_TOOLTIP,"\n");         // нет всплывающей подсказки, если "\n"
  }
//The execution errors checking
  if(GetLastError()!=0)
  {
  Result = false;
  }  
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}
 
Interesting:

Una versión mejorada de esta función, pero algo se puede retocar (en general, yo implementaría todo esto como un objeto, o varios objetos).

Aunque, puedes poner la función en una biblioteca y usarla como quieras.



Es bonito). Y en forma de objeto, ¿cuál es la ventaja, si tomas esta función como ejemplo? Hasta ahora, he implementado todo en forma de funciones. ¿Quizás me estoy equivocando de camino y tendré que rehacerlo todo más adelante?
 
tol64:
(Qué bien.)). ¿Cuál es la ventaja de utilizar esta función como objeto? Por ahora he implementado todo en forma de funciones. ¿Quizá me equivoque de camino y tenga que rehacerlo todo después?

Bueno, por qué todos ellos. Una función podría hacerse más universal y empaquetarse, por ejemplo, en una biblioteca.

Las clases también tienen ventajas, pero esto es un truco relacionado con la POO (la tarea principal será utilizar el código en varios proyectos sin pensar en la implementación).

Ejemplo

Como veo en la captura de pantalla, usted tiene algo así como un panel de información (tal vez alguna otra funcionalidad), por lo que puede considerar este panel como una serie de objetos no relacionados (gráficos, texto, etc.), o puede verlos como objetos conectados por una clase. Así, si cambia un parámetro de "entrada" "Esquina", este cambio afectará a todo lo relacionado con el panel.

Al especificar un gráfico a la clase, indicamos este gráfico a todos los objetos controlados por la clase también.

 
Interesting:

Bueno, por qué todos ellos. Una función podría hacerse más universal y empaquetarse, por ejemplo, en una biblioteca.

Las clases también tienen ventajas, pero esto es un truco relacionado con la POO (la tarea principal será utilizar el código en varios proyectos sin pensar en la implementación).

Ejemplo

Como veo en la captura de pantalla, usted tiene algo así como un panel de información (tal vez alguna otra funcionalidad), por lo que puede considerar este panel como una serie de objetos no relacionados (gráficos, texto, etc.), o puede verlos como objetos conectados por una clase. Así, si cambia un parámetro de "entrada" "Esquina", este cambio afectará a todo lo relacionado con el panel.

Tengo el mismo problema con la vinculación al gráfico. Una vez que indicamos un gráfico a la clase, indicamos este gráfico y todos los objetos que esta clase controla.

Tienes una habilidad muy notable. Explica todo muy claramente en un par de líneas. Gracias. ))

Después de familiarizarme con todas las funciones que necesito y practicar con ellas, empezaré a estudiar las estructuras, las clases y la POO. Es una pena que la naturaleza me obligue a ir a la cama a veces. Tengo que alejarme del ordenador. ))

 

He escrito este guión:

bool del;

void OnStart()
  {
   long chart_id  = ChartID();
   int amount_obj = ObjectsTotal(chart_id,0,OBJ_LABEL);
   int i;
   
   Print("Всего объектов типа OBJ_LABEL: ",amount_obj);
   
   for(i=0; i<amount_obj; i++)
      {
       string name_obj = ObjectName(chart_id,i,0,OBJ_LABEL);
       del = ObjectDelete(chart_id,name_obj);
       
       if(del == false || GetLastError() != 0) Print(ErrorDescription(GetLastError()),", ",GetLastError());
       
       ChartRedraw();
      }
  }

Tarea: eliminar todos los objetos de tipo OBJ_LABEL del gráfico. Pero algunos se saltan y se quedan. Se anota un error en el cuaderno de bitácora:

Por favor, dígame cómo hacerlo correctamente.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
tol64:

He escrito un guión de este tipo:

La tarea: eliminar todos los objetos de tipo OBJ_LABEL de un gráfico. Pero algunos se saltan y se quedan. Se escribe un error en el registro:

Por favor, aconséjeme cómo hacerlo correctamente.

Me parece que el bucle debería ser descendente y no ascendente, aunque no he entrado en detalles (pero desde MQL4 el borrado de órdenes se hace en un bucle descendente).

El truco está en que si empiezas a borrar de los índices grandes entonces la lista original no cambiará, excepto para borrar el elemento seleccionado (de la cola de la lista)...

 
Interesting:

Me parece que el ciclo debería ser descendente y no ascendente, aunque no he entrado en detalles (desde MQL4, las órdenes se borran en un ciclo descendente).

El truco está en que si empezamos a borrar desde un índice grande entonces la lista original no cambiará, excepto para borrar un elemento seleccionado (de la cola de la lista)...

He intentado empezar el ciclo desde el final:

   for(i=amount_obj-1; i>=amount_obj; i--)

Ahora no hay errores en el registro, pero no se borra ni un solo objeto).

 
tol64:

Intenté iniciar el ciclo desde el final:

Ahora no hay errores en el libro de registro, pero tampoco se borra ningún objeto).

i>=0
 
tol64:

En el cuádruple, utilizo este enfoque: todos los objetos son grupos, la parte del nombre es común en el grupo.

Eliminación de

// удаление по маске всех объектов индюка
   for (int i = ObjectsTotal() - 1; i >= 0; i--)
    {
      string name = ObjectName(i);
      if (StringFind(name, "sig_nal") == 0)
      {
         ObjectDelete(name);
      }
    }

para diferentes grupos

// удаление по маске всех объектов индюка
   for (int i = ObjectsTotal() - 1; i >= 0; i--)
   {
      string name = ObjectName(i);
      if (StringFind(name, "signal") == 0)
      {
         ObjectDelete(name);
      }
      else if (StringFind(name, "Asignal") == 0)
      {
         ObjectDelete(name);
      }
   }

y aquí la función IgorM

***

( por si acaso ) Ordenación por ObjectName(no estoy seguro de que sea relevante para el 5)

[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - MQL4 форум
  • www.mql5.com
[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - MQL4 форум
Razón de la queja: