• Lunes 29 de Abril de 2024, 05:29

Autor Tema:  Comunicación entre objetos.  (Leído 951 veces)

bladower

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Comunicación entre objetos.
« en: Lunes 20 de Julio de 2009, 09:51 »
0
Hola a tod@s y gracias por dedicar tiempo a mi problema.
Tengo varios objetos de tipo frame que en su interior tienen un teechart. La idea que quiero hacer es que cuando ocurra un evento como un scroll sobre la gráfica o la modificación de los ejes, ese cambio se comunique al resto de objetos de tipo frame para que sus gráficas se actualicen con esos valores.
Lo que hago ahora es colocar los valores representativos (límites de los ejes, posición del cursor de la gráfica etc) en la variable global correspondiente.
Cuando se produce un cambio en una gráfica, actualizo las variables globales y mando el mensaje de actualización.

Código: C++
  1. void __fastcall TFrame3::moveCursor(TCursorTool* Sender... )
  2. {
  3.     Form4->cursor = XValue; //variable global
  4.     PostMessage(NULL, WM_USER, SCROLL,0);
  5.  

En cada frame coloco un objeto tapplicationevent y en el evento onmessage coloco el código para actualizar la gráfica.
Código: C++
  1. void __fastcall TFrame3::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
  2. {
  3.     if(Msg.message == WM_USER)
  4.         {
  5.         switch (Msg.wParam)
  6.         {
  7.             case SCROLL:        //Scroll sobre la gráfica
  8.             {
  9.                 Chart1->BottomAxis->SetMinMax(Form4->min, Form4->max);
  10.                 break;
  11.             }
  12.  
  13.  


El método funciona pero cuando se están representado muchos puntos de las series, al hacer scroll sobre una gráfica (o cualquier tipo de operación sobre la misma), las demás tardan demasiado tiempo en actualizarse. la cosa se ralentiza cuantos más puntos hay representados en las gráficas

Alguien sabe en si hay alguna otra forma más eficiente de comunicación entre los objetos?

Un saludo y gracias por el tiempo dedicado a mi problema