FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas para acceder a componenente de un Form desde un Hilo
Buenas..
Llevo dandole vueltas a este problema y estoy desesperado.. Pretendo Modificar un componente que esta en un Form desde un Hilo ejecutado desde el propio form... El caso es que si el Form no es Modal (hijo) funciona perfectamente.... https://app.box.com/s/hdydb399hsikzauxszhpsiwyv2j6wxvk Por el contario si el Form es Modal.. el Hilo no hace nada (tampoco da error) https://app.box.com/s/3nq24hh5dgrl4dk37dx1473aei7n38zr Necesito que sea modal. En fin... Debo resignarme, olvidarme por que no es posible hacerlo desde un form Modal.. o por el contrario me dais una alegria y puedo seguir "mi camino".. Gracias Última edición por NEG1414 fecha: 05-02-2015 a las 10:01:38. |
#2
|
||||
|
||||
No domino C++, pero si es similar a lo que se hace en Delphi, deberías modificar los componentes visuales desde dentro del hilo utilizando sincronización de forma obligatoria (revisa la ayuda sobre el método Synchronize y sus ejemplos).
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
Como te indica Neftali, es posible pero siempre que vayas a trabajar con un elemento de la VCL desde un hilo, sebes usar si o si, Synchronize.
Te pongo un ejemplo simple de un hilo que modifica un Label en un Form modal: Código:
#define Unit2H //--------------------------------------------------------------------------- #include <Classes.hpp> #include "Unit3.h" //--------------------------------------------------------------------------- class ThPrueba : public TThread { private: TForm3 *Form; String LS; protected: void __fastcall Execute(); public: __fastcall ThPrueba(TForm3 *form, bool CreateSuspended); void __fastcall ActualizaLabel(); }; //--------------------------------------------------------------------------- #endif Código:
#include <vcl.h> #pragma hdrstop #include "Unit2.h" #pragma package(smart_init) __fastcall ThPrueba::ThPrueba(TForm3 *form, bool CreateSuspended) : TThread(CreateSuspended) { Form = form; } void __fastcall ThPrueba::ActualizaLabel() { Form->Label1->Caption = LS; } //--------------------------------------------------------------------------- void __fastcall ThPrueba::Execute() { int n=0; while(!Terminated){ LS = n++; Synchronize(ActualizaLabel); Sleep(500); } } Saludos. Última edición por escafandra fecha: 09-03-2020 a las 08:00:24. |
#4
|
|||
|
|||
Muchas, Muchas Gracias por contestarme... Utilizare Synchrnize y os cuento..
Gracias Otra vez. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Acceder a componentes de otro form | alexisenp | OOP | 7 | 12-12-2011 01:53:32 |
me ayudan a programar un form desde cero para ventas usando TjvMemorydata??? | userdelphi | Varios | 9 | 13-01-2011 03:49:50 |
Problemas para acceder a frames | Pedro-Juan | OOP | 1 | 22-08-2006 23:42:29 |
Acceder a form modal desde módulo de datos | jcheco | Varios | 3 | 31-01-2006 17:18:22 |
|