![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Lepe:
Gracias por tu aporte, pero después de unas copitas de vino no creo que pueda analizar bien tú código, prometo mañana echarle un vistazo Nos vemos...
__________________
No todo es como parece ser... |
|
#2
|
||||
|
||||
|
Reconozco que al verlo por primera vez impresiona un poquito, veamos el concepto, y así de camino sirve para otros foristas:
¿Qué es FParam1? Simplemente una variable privada del mismo tipo de datos que Param1. Se podría decir que es una "Copia de seguridad" de la propiedad. ¿Por qué se llama FParam1?, es un estándar, a todos los campos (Fields) que son privados de una clase, se le añade la letra "F" al principio. ¿Por qué no hacerlo así: Porque si tenemos que modificar la clase por otros detalles, estamos utilizando la variable pública Param1, y puede incluso que necesitemos cambiar el tipo de datos, esto supone que los programas que usan esa clase también necesitan modificarse. Esto es una onda expansiva, igual que tirar una piedra en el lago, las modificaciones se van propagando y al final necesitas rehacer todo el programa. Al usar una variable pública y otra privada, se pueden hacer cambios en el interior de la clase y no modificar la variable pública. No hay onda expansiva .Con esa linea estamos leyendo (read) el valor de Param1, en realidad delphi, lee el valor de la variable FParam1. En este caso estamos escribiendo (write) en la variable, por tanto delphi asignará a FParam1, el valor 'hola mundo'. La otra variante que lleva dos procedimientos, es exactamente igual, solo que ahora en lugar de leer de una variable privada, se ejecuta una función (GetParam1) que devuelve un string. También al tiempo de asignar una variable, se usa un procedimiento (SetParam). "Get" y "Set" también es un estándar, son prefijos que siempre se añaden para hacer más legible el código. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 31-10-2006 a las 11:03:47. |
|
#3
|
||||
|
||||
|
Cita:
El uso de un método para paso de parámetros puede ser útil en ciertas circunstancias pero muchas veces terminamos teniendo métodos con una lista interminable de parámetros. Uno sigue teniendo pleno control del formulario al momento de crearlo, aunque, de hecho, no entiendo esto: Cita:
// Saludos |
|
#4
|
|||
|
|||
|
Yo en lo personal me iria mas por hacer un "overload" o "override" del metodo execute, tal como se hace con el "creator" o el "destructor", dependiendo de la necesidad. Modificando los parametros de entrada si eso es lo que se busca.
Mis problemas con OnActivate - Se activa cada momento en que la ventana obtiene "focus", si usted trabaja con multiples ventanas, este evento y el codigo dentro del mismo se ejecutara multiples veces al hacer switch, no una ves, a como es usualmente deseado en un metodo de ejecucion tipo "execute". Esto se puede eliminar agregando variables internas para controlar la primera vez que se logra la activacion y asi en adelante no re-ejecutar las instrucciones en este evento, pero en fin, mas codigo. No hay nada de malo con Onshow, pero en lo personal, para valores de inicializacion y de ejecucion de nuevos dialogos, OnShow es un evento que ocurre ya muy tarde en el ciclo de ejecucion de una nueva ventana. No permite inicializar variables visuales y no visuales que se necesitan previo al despliegue de una ventana. En fin, es el gusto de cada cual, en lo personal para un metodo de ejecucion de una ventana o dialogo, muy raramente usted vera codigo creado alrededor del evento OnShow. El VCL muestra muchos ejemplos de esto, raramente OnShow es utilizado internamente. |
|
#5
|
||||
|
||||
|
Cita:
Cita:
Cita:
// Saludos |
|
#6
|
|||
|
|||
|
"Es que, de hecho, difícilmente verás ningún evento utilizado internamente, no es exclusivo de estos eventos, simplemente porque éstos, los eventos en general, están pensados para el programador final, la VCL sólo los pone disponibles."
Incorrecto, en gran parte de la VCL se usa por herencia los metodos OnCreate, OnChange, OnKeyDown, etc, seria mas bien extrano decir que se puso ese evento unicamente para el usuario final. El VCL no es simplemente una cosa bonita que Borland puso ahi, es un claro ejemplo de la forma correcta de desarrollar codigo usando Object Pascal, desde su sintaxis, best "coding practices", comentarios y estandarizacion de presentacion de codigo. Es un ejemplo en vivo de como implementar todo tipo de soluciones, e.g. una caja de dialogo donde se despliega un mensaje (MessageDlg), un wrapper de Activex, etc, codigo que usaremos muchas veces en situaciones de nuestra vida diaria. Solo examinen la implementacion de los DBAware components y noten como gracias a toda esa base de clases, metodos y con gran uso de herencia y polimorfismo logran implementar esos increibles componentes. Danny Thorpe, antiguo chief scientist de Borland y la persona a cargo del compilador de Delphi escribio el maximo manual de como escribir componentes, dialogs, etc en Delphi, utilizando como ejemplo el mismo VCL y la mayoria de sus metodos. Es una gran lectura, y un libro considerado como clasico. ---- Ahora bien por el otro lado, repito, no utilicen el OnShow event para inicializar variables. Si estan haciendo aplicaciones pequenas para la casita, con par de formas y que solo ustedes van a hacer perfecto, pero si es para aplicaciones serias donde se utiliza mucha herencia, formas MDI y Frames, poner eventos en el OnShow o en el OnActivate SOLO les va a traer problemas y dolores de cabeza. Inicializacion !!NO!! en ese evento. Usen Oncreate, o pongan un metodo execute. (Noten como la mayoria de Dialogos en Delphi (revisen tambien los componentes JEDI) tienen un metodo Execute y pocas veces codigo en OnShow. Muchas gracias. ![]() |
|
#7
|
||||
|
||||
|
Cita:
Cita:
Cita:
// Saludos |
|
#8
|
||||
|
||||
|
Cita:
Si tenemos el método Get (ya hablando con propiedad), podemos tener la propiedad pública de tipo String, pero usar un campo privado de tipo entero. En el métodos Get se hacen las conversiones oportunas para devolver un string. De esta forma se mantiene el tipo de datos de la propiedad pública, pero se ha cambiado el tipo de datos del campo privado. ¿para qué hacer algo así?, bueno, quizás haya que devolver "331 Pepe Martínez", donde el 331 es el código de cliente y después el nombre, quizás interese guardar como entero el 331 para uso interno. (solo es un ejemplo ).Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 01-11-2006 a las 01:43:22. |
|
#9
|
||||
|
||||
|
Cita:
![]() // Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Pasar parametros.... | Coco_jac | SQL | 2 | 02-09-2006 04:28:16 |
| Abrir nueva ventana y pasar parametros | Coco_jac | PHP | 2 | 25-08-2006 17:14:16 |
| Pasar parametros a IBdataSet | digital | Firebird e Interbase | 3 | 13-07-2004 08:39:11 |
| como pasar parametros... | hook | SQL | 13 | 11-05-2004 19:24:14 |
| Pasar parametros a ADOQUERY | JODELSA | Conexión con bases de datos | 1 | 04-09-2003 23:47:36 |
|