No se si sea el titulo adecuado para lo que quiero mostrar. La idea surge a partir de que siempre tenemos que escribir una y otra vez los Caption de cada formulario al momento de su creación, a menos que pongamos en uso uno ya creado, esa practica tiende a generar muchos errores de escritura y a su vez muy tediosa.
Para evitarnos un poco el tener que escribir y a su vez poder reutilizar, OOP se basa en eso ¿cierto?, he hecho lo siguiente:
unit UTitulos; interface type TTipoPantalla = ( tpMantenimiento = 1, tpConsulta, tpReporte, tpProceso, tpBusqueda ); TOperacion = ( opAgregar = 1, opModificar, opBuscar, opConsultar ); function GetTitulo(const ATag : Integer) : String; function GetTipoPantalla(const ATipo : TTipoPantalla) : String; function GetOperacion(const AOperacion : TOperacion) : String; implementation var StrTitulos : Array[1000..11000] of string; StrTipos : Array[TTipoPantalla] of string; StrOperacion : Array[TOperacion] of string; //Titulos de la pantalla function GetTitulo(const ATag : Integer) : String; begin if (ATag < 1000) or (ATag > 11000) then Result := '<No titulo>' Else Result := StrTitulos[ATag]; end; //Tipos de pantalla (titulos) function GetTipoPantalla(const ATipo : TTipoPantalla) : String; begin Result := StrTipos[ATipo]; end; //Operacion de la pantalla (titulo) function GetOperacion(const AOperacion : TOperacion) : String; begin Result := StrOperacion[AOperacion]; end; initialization //Tipos de pantalla StrTipos[tpMantenimiento] := 'Mantenimiento de %s'; StrTipos[tpConsulta] := 'Consulta de %s'; StrTipos[tpReporte] := 'Reporte de %s'; StrTipos[tpProceso] := 'Proceso de %s'; StrTipos[tpBusqueda] := 'Busqueda de %s'; //Operacion de pantalla StrOperacion[opAgregar] := 'Agregando %s'; StrOperacion[opModificar] := 'Modificando %s'; StrOperacion[opBuscar] := 'Buscando %s'; StrOperacion[opConsultar] := 'Consultando %s'; //Mantenimientos StrTitulos[1000] := 'Clientes'; StrTitulos[1001] := 'Garantes'; StrTitulos[1002] := 'Cobradores'; StrTitulos[1003] := 'Suplidores'; StrTitulos[1004] := 'Carpetas'; StrTitulos[1005] := 'Tipos de Prestamo'; StrTitulos[1006] := 'Tipos de Cuota'; StrTitulos[1007] := 'Clases de Prestamo'; end.
Teniendo estas funciones a mano, ya es facil armar el titulo. Utilizando la herencia visual nuestras pantallas de mantenimientos ya es un pan comido, por ejemplo:
Declarariamos un metodo virtual en el formulario base.
public procedure SetTitulo; virtual; uses uTitulo; implementation procedure TFormaBase.SetTitulo; begin Caption := Format(GetTipoPantalla(tpMantenimiento), [GetTitulo(Self.Tag)]); end;
Con ese codigo ya sus mantenimientos obtendrían sus titulos y así solo tenemos que darle mantenimiento a esta unidad, permitiendonos la reutilizacion.
P.D.: Se puede mejorar pero en esencia esa es la idea y me funciona adecuadamente.