Ver Mensaje Individual
  #6  
Antiguo 22-04-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
Si, por ejemplo, por reutilizar formularios vas a tener que hacer virguerías codificando... pues no sé yo si compensa
En mi opinión, el ejemplo de Lepe no necesariamente concuerda con lo que se pregunta. Su ejemplo trata de un formulario en donde lo que cambia no son los controles, sino el modo en que se usan. Ciertamente, para editar los datos de un cliente, da lo mismo si se trata de uno existente o de un cliente nuevo y yo haría algo similar.

Pero cuando hablamos de ocultar y/o inhabilitar controles dependiendo del contexto, realmente estamos cambiando de formulario, así sea virtualmente. Visto en un ejemplo aislado puede parecer razonable, pero cuando tales situaciones comienzan a multiplicarse en la aplicación, corre uno el riesgo de tener que hacer auténticas virguerías en aras del reuso de formularios.

A mi me sucedió eso, precisamente. Me sentí muy 'listo' reusando formularios, ¡caramba! ¡sólo tengo que hacer unas cuantas comprobaciones y habilitar/ocultar lo que no haga falta. Al final, las comprobaciones eran de miedo, la lógica de la aplicación se mezclaba bien y bonito con la interfaz de usuario, en fin, una pesadilla.

Luego me percaté que la mejor solución era, en efecto, la reutilización de formularios, pero no por la via de ocultar/inhabilitar controles, sino por la de la herencia visual de formularios.

Digamos que tenemos que capturar los datos de un cliente, pero hay dos tipos de clientes, normales y preferenciales, y, si bien muchos datos son comunes, hay otros que dependen del tipo de cliente. En lugar de colocar todos los controles, comunes y no comunes, en un sólo formulario, ocultando los que no se requieran; viene mejor hacer una formulario base con los controles comunes y derivar de él dos formularios, uno por cada tipo de cliente:

Código:
               TfrmDatosClientes
                      ^
                      |
           -----------+-------------
           +                       +
           |                       |
TfrmDatosClienteNormal TfrmDatosClientePreferencial
No sé yo, si lo que comento se ajuste a lo que se requiere, pero sólo digo que hay que tener cuidado con el reuso de formularios.

// Saludos
Responder Con Cita