Cita:
Empezado por Delphius
...
¿Y parte del código puede reducirse? 
|
mmm, pues no sé. En esto debo trabajar. Lo curioso de esta ventana es que a través de ella no se hacen procesos complejos ni nada que se le parezca, ya que simplemente se leen y guardan los valores de configuración, salvo en un par de secciones en donde se usan algunos componentes de base de datos. Para dar una idea del código, transcribo un fragmento del mismo aquí:
Código:
procedure TfConfiguracion.bGuardarCambiosClick(Sender: TObject);
var
IniFile: TIniFile;
CI, TextLine, ModoVista: string;
I: Short;
begin
CI := IntToStr(fMaestro.CurrentInstitution);
IniFile := TIniFile.Create(fMaestro.IniFileName);
// + Estudiantes - Datos adicionales
with sgDatosAdicionalesEstudiantes1 do begin
IniFile.WriteString('Estudiantes', CI+'-Dato1_Nombre', Cells[4, 1]);
IniFile.WriteString('Estudiantes', CI+'-Dato2_Nombre', Cells[4, 2]);
...
if Cells[3, 1] = 'SI' then
IniFile.WriteBool('Estudiantes', CI+'-Dato1_Habilitado', True)
else
IniFile.WriteBool('Estudiantes', CI+'-Dato1_Habilitado', False);
...
end;
// + Indicadores
IniFile.WriteBool('Logros', 'AutoInc', ckbAutoIncCodigoLogro.Checked);
IniFile.WriteInteger('Logros', 'LogrosConsulta.Rejilla', rgRejilla.ItemIndex);
if rbDistribucionVertical.Checked then
IniFile.WriteInteger('Ventanas', 'LogrosConsulta.DBGLogros.Style', 2)
else
IniFile.WriteInteger('Ventanas', 'LogrosConsulta.DBGLogros.Style', 1);
// + Evaluaciones y asistencia (Estilo de visualización)
IniFile.WriteInteger('LogrosAsistencia', 'Estilo', rgEstiloEvaluacionesAsistencia.ItemIndex);
// + Evaluaciones y asistencia (Estilo de visualización por estudiante)
IniFile.WriteInteger('LogrosAsistencia', 'EstudiantesVisibles', rbEstudiantesVisibles.ItemIndex);
IniFile.WriteBool('LogrosAsistencia', 'OrganizarEstudiantesAuto', ckbOrganizarEstudiantesAuto.Checked);
IniFile.WriteBool('LogrosAsistencia', 'ConservarCodigoLogro', ckbConservarCodigo.Checked);
IniFile.WriteBool('LogrosAsistencia', 'ConservarValoracionLogro', ckbConservarValoracion.Checked);
IniFile.WriteBool('LogrosAsistencia', 'AutoDesplazamiento', ckbAutoDesplazamiento.Checked);
IniFile.WriteBool('LogrosAsistencia', 'FaltasTotalesPeriodo', ckbPermitirFaltasTotalesPeriodo.Checked);
IniFile.WriteBool('LogrosAsistencia', 'ForzarAreaMateria', ckbPermitirForzarAreaMateria.Checked);
IniFile.WriteBool('LogrosAsistencia', 'NoActualizarEval', ckbNoActualizarEval.Checked);
IniFile.WriteBool('LogrosAsistencia', 'SolicitarDocumentoRec', ckbSolicitarDocumentoRespaldoRec.Checked);
// + Evaluaciones y asistencia (Estilo de visualización por materia)
IniFile.WriteInteger('LogrosAsistencia2', 'NombresApellidos', rgListaEstudiantes.ItemIndex);
IniFile.WriteInteger('LogrosAsistencia2', 'DireccionEvaluacion', rgDireccionEvaluacion.ItemIndex);
IniFile.WriteInteger('LogrosAsistencia2', 'TipoSonido', cbSonidos.ItemIndex);
...
...y así continúa. Solamente este procedimiento tiene 398 líneas. Hay forma de reducir este código? Ya trabajaré en ello, pero inicialmente no lo veo sencillo, a no ser de que cada componente lea y guarde automáticamente el valor. Se me ocurre por ejemplo que podría usar un CheckBox extendido al que se le pueda especificar a traves de sus parámetros el lugar de lectura y escritura del valor. Aunque por ahora estudiamos cuáles de estos valores deberían almacenarse en el cliente, y cuáles en el servidor (en la base de datos).