Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-04-2007
Monxy Monxy is offline
Registrado
 
Registrado: abr 2007
Posts: 8
Poder: 0
Monxy Va por buen camino
Question Solicito recomendación sobre formas de programar

Saludos colegas. No estoy seguro de si el título del hilo les da una idea clara de la intención de este hilo, pero lo que quiero preguntar es lo siguiente:
Al desarrollar un aplicación, por lo general reutilizo formularios (dentro de la misma aplicación) para diferentes funciones en las que sólo cambian algunos controles. Por ejemplo, digamos que en la aplicación existe la función de dar de alta profesores, así como de dar de baja y de modificar sus datos. Para estas tres funciones yo utilizo un mismo form, sólo hago visibles o invisibles algunos botones y otros controles, y en algunos casos sólo cambio el caption de los mismos, y dentro del código del evento click (por ejemplo) tomo la decisión de qué líneas ejecutar en función del caption.
¿Creen ustedes que esto es recomendable? O, ¿es más recomendable crear un form con su propio conjunto de controles para cada función?
Gracias por su tiempo
Responder Con Cita
  #2  
Antiguo 21-04-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Creo que es una cuestión de cómo lo veas en cada caso. Si, por ejemplo, por reutilizar formularios vas a tener que hacer virguerías codificando... pues no sé yo si compensa: al fin y al cabo un IDE como el de Delphi está para utilizarlo, porque se gana tiempo, por ejemplo.

Así que no sé yo si se podría dar una respuesta general... más bien creo que no. Dependerá de cada caso y de cómo lo veas. Lo que tal vez pueda decirse es que las dos formas son válidas, yo por lo menos no veo nada de malo en una u otra. Todo lo contrario.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 21-04-2007
Monxy Monxy is offline
Registrado
 
Registrado: abr 2007
Posts: 8
Poder: 0
Monxy Va por buen camino
Ya veo, tiene sentido. Gracias.
Responder Con Cita
  #4  
Antiguo 22-04-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Lo más fácil es crear una variable (o propiedad) que indique qué se debe mostrar, por ejemplo, lo típico:
Código Delphi [-]
type TModo = (mInsertar, mEditar, mMostrar);

form1 = class(tform)
private
  FModo:TModo
  procedure SetModo(Value:TModo);
public 
 property Modo:TModo read FModo write SetModo;
end;


procedure TForm1.SetModo(value:TModo);
begin
  
  if Value = mInsertar then
  begin 
    // ocultar Edits, cambiar captions, etc.
  end
  else if Value = mEditar then
  begin
   
  end;
  FModo := Value;
end;

Ahora después de crear ese Form, asignas un valor a la propiedad Modo y listo, ya tienes todos los captions y demás hecho. Por otra parte tienes la variable FModo que puedes preguntar si está en modo edicion, inserción, etc; como ves mucho más cómodo que preguntar por un caption.

Código Delphi [-]
  Form1 := Tform1.Create(Application);
  Form1.Modo := mInsertar;
  Form1.Show;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 22-04-2007
Monxy Monxy is offline
Registrado
 
Registrado: abr 2007
Posts: 8
Poder: 0
Monxy Va por buen camino
Ciertamente es más cómodo y más práctico. Por desgracia, la escuela donde estudio no enseña a programar de esta manera en delphi, sino a usar únicamente lo que ya contiene, sin nuevas implementaciones. Es bueno estar aquí, se aprende bastante.
Gracias compañero.
Responder Con Cita
  #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
Poder: 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
  #7  
Antiguo 22-04-2007
Monxy Monxy is offline
Registrado
 
Registrado: abr 2007
Posts: 8
Poder: 0
Monxy Va por buen camino
Cita:
Empezado por roman
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.



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.


Ambos ejemplos son válidos para mi pregunta, dado que he reutilizado formularios tanto para habilitar/mostrar diferentes controles como para utilizar de manera distinta los mismos.

Y tienes razón, hay veces en que la interfaz se mezcla con la lógica y ocasiona enredos bastante difíciles. Supongo que es válido hacerlo de la manera habilitar/mostrar únicamente si los cambios son simples y no complican el entendimiento del flujo del código. Pero si lo hacen, suena más recomendable lo que tú propones.



Gracias por tu recomendación compañero.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Solicito informacion sobre Temporizacion neto57 Varios 0 21-09-2006 03:06:22
Duda sobre como programar el juego Timbiriche mifiar Varios 16 26-11-2005 06:06:01
Duda sobre maximizar formas vick Conexión con bases de datos 3 27-10-2005 23:54:00
Consulta Sobre programar PDA's Enan0 Varios 1 28-09-2005 08:49:31
Informacion sobre programar nuevas SESSIONES CARSOFT_AR Conexión con bases de datos 1 22-11-2004 22:46:13


La franja horaria es GMT +2. Ahora son las 15:12:21.


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