Ver Mensaje Individual
  #3  
Antiguo 04-10-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Hola vroa74,
Hay muchas maneras de conseguir esto... tantas como programadores y gustos de helados hay (no puedo evitar hacer esta comparación... me invade el calor)

Una manera de conseguir esto es mantener una variable "bandera" de tres estados. Cada estado representa una acción ABM. Por ejemplo:
0 -> Alta
1 -> Baja
2 -> Modificación

De modo que cuando se crea el form (y/o cuando sea necesario) se ingresa este valor mediante algún parámetro a una función definida que se encargue de habilitar/deshabilitar y/o mostrar/ocultar los controles.
Por ejemplo una procedimiento como este:

Código Delphi [-]
procedure HabilitarControles(Opcion: integer);
begin
 case Opcion of
  0: // sentencias para habilitar los controles de alta
  1: // sentencias para habilitar los controles de bajas
  2: // sentencias para habilitar los controles de modificación
  end;

// Opcional, pero recomendado:
OpcionHabilitada := Opcion; // guardar el valor... en algun lugar
end;

Ahora, si podemos guardar el valor de opción podemos incluso ahorrarnos controles. Sobre todo los botones de Aceptar. ¿Como?

Si hemos guardado el valor de Opcion en alguna variable a la que se pueda tener acceso se puede hacer algo como esto:

Código Delphi [-]
procedure ButtonAceptarClick(Sender: TObject);
begin
  case OpcionHabilitada of
    0: // accion para alta
    1: // accion para baja
    2: // accion para modificación
   end;
end;

Esto es una opción. Y muy usada, debido a su simpleza.
Hay otras maneras, y como dije... dependerá de gustos y/o las necesidades del aplicativo.

Algo a tener en cuenta, lo simple puede llegar incluso a salirte caro. Pues la simpleza de hacer ese empleo deL case puede verse entorpecida con el posible mantenimiento y actualización del sistema. Por ejemplo: ¿Y si en el otro form el 2 es en realidad 1? ¿De donde salen esos números? ¿Y si hay otras "acciones" que agregarse, como una especie de búsqueda o subbúsqueda... le asociamos un nuevo estado... un 4? Estas preguntas pueden darte una pista si la simpleza de este método te resulta.

E incluso puede llegar a ser prospenso como para mezclar la lógica del programa con el aspecto meramente visual. Por ejemplo se puede caer en algo como esto:

Código Delphi [-]
procedure ButtonAceptarClick(Sender: TObject);
begin
  case Opcion of
  0: begin
       // Hacemos el alta...
       SQL := 'insert...... ';
       .....
      end;
   1: begin 
        DeshabilitarCombo; 
        Eliminar; 
       end;
   ...
  Query1.Open; // Un ejemplo...
end;

¿Al final? ¿Sobrecargamos al botón Aceptar con código y mezclamos las sentencias SQL alli y luego las mandamos? ¿O lo hacemos simple como que se disparen la orden mediante otros procecimientos y/o funciones qur tengan ese código enmarranado?

En fin... dependerá de lo que te resulte cómodo, y/o que tan complejas deban ser las acciones a llevar a cabo en un form como asi también de la cantidad de controles que posea.

No se si te sirva lo que dije. Pero creo que son cosas que uno debe tener en cuenta. Cuando desea llegar a un código simple, bonito, fácil de mantener, y de reutilizar empieza por los forms... pero es muy común, sobre todo cuando uno se inicia en meter todo en un form... llega el momento en que se hace una pregunta como esta: ¿Y ahora... como partir el código en forma correcta para que pueda seguir siendo operable?

Es cuestión de organizarse.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 04-10-2007 a las 19:36:15.
Responder Con Cita