Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   duda con el manejo de eventos (https://www.clubdelphi.com/foros/showthread.php?t=47201)

meme 21-08-2007 19:05:35

duda con el manejo de eventos
 
Estoy haciendo una aplicacion con distintos componentes (buttom, listbox...) y no se si es posible hacer para que, dentro del codigo asociado a un evento (por ejemplo el asociado al click en un buttom), se pueda chequear si se han producido otros eventos en los otros componentes de la aplicacion. No se si podría hacer de alguna manera para que la aplicacion quedara "parada" en espera de los eventos del resto de componentes.

AntonioG 21-08-2007 20:11:54

Hola,

De hecho la aplicacion queda parada hasta haber realizado los eventos de cada boton, listibox o cualquier cosa que se haya apretado (a menos que uses hilos).

Podria sponer un ejemplo de que es lo que quieres hacer y que es lo que esta haciendo el programa para entender emjro cual es el problema?

Bueno, releyendo, como que entendi que quisieras que por ejemplo no puedas apretar un boton hasta despues de haber elejido una opcion de un listbox, por ejemplo. Bueno, en ese caso entonces pon el boton como descativa, digamso si es el boton Button1, pues debes hacer
Button1->Enabled=false. Cone sto queda visible pero no lo puedes apretar.
Ahora, en algun evento del listbox (por ejemplo cuanbdo se le da clcik) pues pones Button1->Enabled=true;, con eso lo activas.

Saludos

meme 22-08-2007 11:24:19

Hola, antes de nada gracias por contestar.

La cuestión no es exactamente asi, mi aplicación usa winsock para transferencia de archivos, la cosa es que uso un buttom para establecer la conexion y un list box que muestra los ficheros del pc. El problema surge porque se establece la conexion dandole al buttom, se ejecuta el codigo asociado a ese evento (buttom) pero yo necesitaria que se detuviera ahi y gestionara posibles eventos del Listbox, para enviar archivos con la conexion establecida. No se si hay alguna forma de hacerlo o alguna otra manera...

Saludos

AntonioG 24-08-2007 02:49:15

Hola,

Mmm, ahi no se bien :S, a ver si alguien el en foro que vea este tema sabe.

Saludos

ALAM 27-08-2007 12:14:24

Cita:

Empezado por meme (Mensaje 225137)
El problema surge porque se establece la conexion dandole al buttom, se ejecuta el codigo asociado a ese evento (buttom) pero yo necesitaria que se detuviera ahi y gestionara posibles eventos del Listbox, para enviar archivos con la conexion establecida. No se si hay alguna forma de hacerlo o alguna otra manera...
Saludos

No controlo muy bien el tema, pero se me ocurre que lo que puedes hacer es añadir algunas líneas, en el evento buttom que estas empleando, que realicen las comprobaciones que desees verificar. Allí, dentro de este, puedes hacer que te envíe un mensaje que te indique el resultado de dichas comprobaciones. Existen varias tipos de Mensajes, dependiendo de las opciones que quieras que este te dé. (por ejemplo ShowMessage()). Cuando el mensaje es enviado, el porgrama detiene su ejecución y espera que el usuario le indique una de las opciones.

Espero te sirva de algo.

Saludos

meme 29-08-2007 13:00:29

Hola, gracias por tu respuesta.
El problema es que no se exactamente como hacer para que compruebe (en el codigo del evento del buttom) si se han producido eventos en otros componentes. He pensado en utilizar Application->OnIdle y cuando se produzca algún evento en otro componente, procese la informacion de dicho evento, pero tampoco se como meterle mano. Si alguien tuviera alguna idea...
Saludos

ALAM 29-08-2007 13:39:10

No se exactamente a qué te refieres con "procesar la información de un evento". Pero se me ocurre que si lo que quieres hacer es verificar si un evento, o en terminos genereales alguna función, fué ejecutada o no, yo usaria una variable booleana, que este declarada en un ámbito de suficiente covertura, que tomase el valor de false por defecto y en caso de ser utilizada la ponga true, con esto ya sabrás si la función, o por ejemplo un evento, a sido ejecutado.
También puedes utilizar la propiedad Tag del buttom, de tal manera que se modifique el valor por defecto cuando utilices o llames al evento.

Tampoco controlo el tema, pero esto es lo que se me ocurre, ojalá te pueda servir de algo.

Saludos

meme 30-08-2007 18:43:19

Hola,

Gracias.He probado con una variable booleana global pero no consigo nada. He pensado hacer dos aplicaciones, una que sea la que establece la conexion con el server (winsock) y otra aplicacion que sea la que presente archivos. Ahora tengo que conseguir comunicar las dos aplicaciones, no se lo que es peor. Estoy bicheando SendMessage...

Salu2

paldave 30-08-2007 19:36:30

Mira acá para gestionar mensajes entra aplicaciones.
Creo que no es posible lo que planteabas al principio de detener la ejecución hasta que se procesen otros eventos, ya que si tu aplicación tiene un solo hilo se mantendrá procesando el código del evento actual hasta que termine y solo luego procesará los otros mensajes enviados a los demás componentes, pero nada te impide hacer que tu aplicación sea multihilo.


La franja horaria es GMT +2. Ahora son las 18:41:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi