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: 1: 2: end;
OpcionHabilitada := Opcion; 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: 1: 2: 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
SQL := 'insert...... ';
.....
end;
1: begin
DeshabilitarCombo;
Eliminar;
end;
...
Query1.Open; 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,