![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
![]() Hola amigos,
Tengo un Form pre-diseñado a modo de Diálogo Modal, que solo contiene un TPanel y dos TBitButtons para el Ok y el Cancel respectivamente. Este Form se crea y se invoca solo en runtime. Se incrustan en el interior del TPanel los componentes que en ese momento se necesiten. Por ej:
Esto funcionaba bien a excepción cuando le agregué lo que está marcado en color rojo. La duda a plantear es que no puedo crear el procedimiento que debe responder al evento OnClick de la casilla. ¿Quién sabe cómo hacerlo?
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
#2
|
||||
|
||||
Creo que es porque OnClick necesita un método y no un procedimiento. Un método es un procedimiento de una clase.
Por ejemplo, para solucionarlo podrías crear Check1_OnClick dentro de TForm1. Así te debería ir. Ah, no. Pero según estoy viendo dentro de Check1_OnClick haces uso de Date1 que es una variable que creas a nivel interno. Entonces no te sirve. Entonces, ¿por qué no implementas todo lo que hace TfrmCustomDlg dentro de él mismo? Saludos!
__________________
Si no lo sabes, necesitas leerlo |
#3
|
||||
|
||||
Cita:
![]() pero simplemente NO LO SE HACER , sino ya hubiese funcionado ¿no te parece? ![]()
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
#4
|
||||
|
||||
Yo creo que la única posibilidad es la que apunta DarKraZY.
Este proceminiento debe estar definido como método del formulario, ed decir igual que está definido el: TForm1.ButonXXXOnClick(Sender: TObject);
Algo así:
Y con su correspondiente definición en la parte de Interface. Si luego te hace falta una variable privada (en este caso Date1) la defines en la parte privada del form.
__________________
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. |
#5
|
||||
|
||||
Cita:
![]()
Y el TfrmCustomDlg quedaría más o menos así...
Creo que podría servirte algo así. Pero intenta cambiar los nombres de objetos para que quede más claro su cometido ![]() Saludos!! Ya me dices si te sirvió ![]()
__________________
Si no lo sabes, necesitas leerlo |
#6
|
||||
|
||||
![]() Bien amigos, siguiendo sus consejos, he logrado hacerlo funcionar.
![]() Como dijo "DarKraZY", el evento OnClick del CheckBox debe responder a un método de un clase. Cómo no encontré la forma de definir este método en runtime, dentro del Form que también es creado en runtime (MyForm), entonces lo hice en la definición del formulario principal (TForm1) dentro del apartado Public.
Luego, moví las variables locales para la creación de los componentes que se mostraban dentro del formulario MyForm hacia la parte global del formulario TForm1, de forma que sean accesibles desde cualquier punto:
El resto quedó como estaba y funciona a la perfección. Gracias a todos, ![]()
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· Última edición por hgiacobone fecha: 16-09-2011 a las 13:47:43. |
#7
|
||||
|
||||
Bueno, es una forma de hacerlo.... pero nada tiene que ver con OOP
![]() Tanto las variables como el método podrías ponerlo en la parte privada de TForm1. Pero aún así, no tiene sentido que componentes que vas a mostrar y que van a ser propios de TfrmCustomDlg estén declarados en TForm1.
__________________
Si no lo sabes, necesitas leerlo |
#8
|
||||
|
||||
Cita:
En primer lugar, el Form creado en runtime (MyForm o TfrmCustomDlg) no debe contener en su estructura interna nada extra, porque se instancia en diferentes partes del sistema y se "rellena" con elementos y funciones propias del momento en que se lo invoca. Aqui por ejemplo, solo había que responder al evento OnClick de un TCheckbox también creado en runtime, pero en otros módulos del sistema, la llamada a este formulario tal vez responda a eventos de otros componentes o incluso a ninguno, ya que se lo puede utilizar para mostrar un simple texto y nada más. A parte de esto y para este caso particular, la necesidad de declarar las variables como globales del Form principal, es porque yo debía poder acceder desde el método Check1_OnClic() al componente DATE1 que de lo contrario quedaba oculto si lo declaraba localmente. Claro, solo era necesario declarar esta variable y el resto podrían permanecer donde estaban ya que no se invocan desde otros lugares, pero no hace al caso. Como dije, esta solución lejos de ser tal vez la más adecuada, se ajusta perfectamente a este particular caso. Reitero el agradecimiento a todos y este nutritivo feedback. ![]() Saludos,
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Creacion de botones runtime, los cuales se mantengan despues de cerrar la aplicación | giocatore | Varios | 18 | 25-01-2011 20:29:38 |
Creación de TFields en Runtime | vinguel | Conexión con bases de datos | 5 | 16-11-2010 15:16:18 |
Problema con LIKE en runtime | anghell77 | SQL | 8 | 04-05-2006 12:16:57 |
Creación de jpg en RunTime | sierraja | Gráficos | 4 | 06-10-2005 04:26:04 |
Creación de Forms en runtime con Tipo dinámico | Aprendiz | OOP | 2 | 29-09-2004 10:35:25 |
![]() |
|