Ver Mensaje Individual
  #12  
Antiguo 03-09-2004
LucianoRey LucianoRey is offline
Miembro
 
Registrado: feb 2004
Posts: 73
Reputación: 21
LucianoRey Va por buen camino
Evento nevo en objeto

Bueno, perdón por la respuesta tan lenta pero con esto de los horarios, mientras yo duermo, ustedes trabajan, que bueno encontrar gente como ustedes .

1.- De acuerdo con jachguate, "artículo digno de una revista o de un buen libro de programación en Delphi" , aunque yo no tenga tanta experiencia en esto, ni sea como ustedes de extraordinario.

2.- Centura es uno de tantos lenguajes que han pasado por aqui y la verdad si, menos robusto que Delphi, si tenia herencia visual y en el caso que planteo la definición de este evento era menos complicada, lo definiamos como una constante y ya lo podiamos usar en cualquier componente, aca la diferencia es que no habia un inspector con propiedades y eventos, los eventos los teniamos que llamar escribiendolos, bueno de repente ya no habia soporte en nuestro pais y lo tuvimos que dejar.

3.- Si, la idea es la que tiene Roman, reusar codigo, pero como dije antes estoy en ese proceso interminable del aprendizaje, y con esos consejos pues si lo cambio a lo que ponen como ejemplo. Bueno aqui expongo lo que deseo y lo que hacia en Centura, para aclarar un poco, aunque creo ya lo hicierón ustedes:

Si nos pedian una aplicación, en la parte de actualización, usabamos la misma pantalla para alta, modificación y consulta, antes de entrar a esta estaba la que contenia el grid con la lista de registros en la base y sobre esta lo clasico, doble click al renglón-modificacion, boton-alta y boton consulta, que nos llevaba a la del registro completo, como parametros mandabamos:
- boton cambio ó consulta = un arreglo con los datos del registro seleccionado, boton alta = un arreglo vacio,
- una bandera para indicar si era alta ó modificación,
- una bandera para indicar si era consulta,
- y un arreglo con el mismo numero de elementos del registro seleccionado, pero en blanco.

Ahora, en la forma del registro completo, todos nuestros componentes tenian un evento "Usuario", que mas bien era un mensaje, bueno al llegar a esta forma, habia un evento CreateComplete, que nos indicaba cuando la forma y todos sus componentes ya se habian creado, dentro de este evento enviabamos este mensaje-evento con wParam=X y lParam=X, a todos los componentes incluidos en la forma, cada componente en su evento "Usuario", tenia un codigo que en efecto era :
Código:
if wParam = 0
Myvalue=ArrayIn[0]
if bConsulta
Enable:=False
elseif wParam=2
ArrayOut[0]:=MyValue
vCambio:=(ArrayIn[0]=ArrayOut[0])
elseif wParam=3
MyValue:=''
if wParam = 0//esto en el caso de botones como inicializar ó grabar
if bConsulta
Hide:=True

y algunos mas, con esto cuando entrabas a la forma se enviaba el mensaje 0 y se asignaba en cada componente su valor del registro(de la tablla), si el usuario cambiaba algun(os) dato(s) de la forma y se arrepentia de ello tenia un boton Inicializar que al darle click enviaba el mensaje "Usuario" con 0 a la Forma y esta al recibir el mensaje lo reenviaba a todos sus componentes, esto como ven volvia a poner los valores iniciales y si ademas era consulta deshabilita el componente, si el usuario queria limpiar todos los campos tenia un boton Limpiar que al darle click enviaba el mensaje "Usuario" con 3, si queria grabar el registro al darle click al boton Grabar enviaba el mensaje "Usuario" con 2, esto comparaba el valor inicial del componente con el actual, si no eran iguales entonces tenia caso grabar el registro, en el caso de consultas los botones de Grabar, Inicializar ó cualquier otro que sobrara los desapareciamos de la pantalla, bueno espero haber sido mas claro esta vez.

El seguimiento de estos mensajes era como sigue:

Forma Inicial - si me llega un evento "Usuario", mensaje a hijos(componentes)

Componente - si me llega un evento "Usuario"(siempre del padre), ejecuto acciones si es necesario

Componente(acción) - si mi comportamiento cambia mi entorno, mensaje a mi Padre(Forma)

En cuanto al ancho de banda con Sql, estaba con la idea (falsa creo), de que usando dbEdit's y dblookupcombo's, mantenia la conexión viva mientras estaba en mi pantalla de modificación ó consulta, por eso la inquietud, me dije, "bueno, mete tus campos a un arreglo, ese arreglo lo mandas a la pantalla de edición y ahi por medio de un evento Usuario lo haces como antes, con eso en lo que consultan ó cambian datos, sueltas la conexión y listo", y no, lo que tengo en mi pantalla es el cache de lo que me trae del servidor, bueno disculpen mi ignorancia, leyendo estos foros y Delphi estoy aprendiendo mas, saludos y otra vez gracias por sus respuestas.

P.D. Me han de disculpar la ortografia pero estoy tan acostumbrado a escribir con mayuscula y sin acentos, que no me sale, pero igual, un curso de ortografia no me caera mal.
Responder Con Cita