![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Muchas gracias Delphius. Como decía más arriba en este hilo, quizá haya usado la herencia visual, aunque sea de forma intuitiva. Bueno, no sabía a qué exactamente se hacía referencia en ese momento, pero ahora que das el ejemplo, pues te cuento que en mis proyectos sí la he usado, y lo he intentado hacer de la mejor manera.
Bueno, la verdad es que no sé si pudiera usar la herencia visual en este proyecto específicamente para esta ventana. Te voy a contar por qué. Se trata de una ventana de configuración. Como las que ya conocemos, tipo ventana de opciones de Firefox o la misma ventana Editor Properties del IDE de Delphi. Tenemos varias secciones de configuración. Cada una de estas hace referencia a una parte específica de nuestro sistema, exactamente a 35 secciones. Cada sección a la que se puede acceder a través de un TreeView tiene componentes como ComboBox, CheckBox, Edit, una que otra grilla, botones, imágenes, pestañas, etc. Las secciones se parecen muy poco unas con otras, y la ventana dentro del sistema es única. Como puedes imaginar, en primera instancia no creo que pueda usarse la herencia visual, aunque sí estoy de acuerdo en que se puede optimizar el funcionamiento de dicha ventana. para dar una idea más exacta de lo que es, he decidido poner algunos "WindowShots" en este link. Claro, como siempre, se aceptan sugerencias , ya que entre otras cosas ya se me hace necesario optimizar esta ventanita.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. Última edición por mlara fecha: 19-05-2008 a las 05:24:33. |
|
#2
|
||||
|
||||
|
Hola mlara,
A como veo, yo diría que en este caso lo más útil es emplear frames. Los frames son como forms bajo la herencia visual, pero ha diferencia de éstos, se pueden crear/detruir a demanda y se incorporan a un form. es decir que un form puedes colocar más de um frame. Cada frame puede contener su código, y no necesitaría alterarlo. Burdamente se podría decir que son forms dentro de forms. ¿Y parte del código puede reducirse? ![]() Saludos, |
|
#3
|
||||
|
||||
|
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 mañana caminaré por las calles pasando inadvertido, como siempre. |
|
#4
|
||||
|
||||
|
La verdad es que la tienes dificil
![]() En fin, quedará en ti analizar si es viable a estas alturas estructurar el código. Lo único que se me ocurre es separar la configuración en varias partes, lo más independientemente posible, en formas separadas y tratar de conseguir un procedimiento al estilo: procedure SaveConfiguratiosFromForm(TForm: TCustomForm); Y buscar la manera de centralizar en un sólo punto los elementos comunes. O algo por el estilo. E incluso, se podría conseguir con los Frames. Yo al menos soy de la idea de que si hay mucho que configurar, separo el trabajo en diversas configuraciones. No se que más decirte por el momento, se me acabaron las ideas por hoy... Se me está apgando el cerebro ![]() .Por el momento, lo que si puedo darte es ánimos. No dejes que esas KLDC te dominen. Saludos, |
|
#5
|
||||
|
||||
|
jajajajajjj... muchas gracias Delphius.
y bueno, yo por hoy me voy a dormir, después de las horas buscando la razón del error, como dijiste, puedo dormir más tranquilo. Saludos.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
|
#6
|
||||
|
||||
|
¡Que bueno que llegamos a una conclusión mlara!
![]() Sería interesante ver si en Delphi 2007 ocurre lo mismo o si ya había sido tomada en cuenta la sugerencia de aceptar LFs solos. Cita:
Desde mi punto de vista, ninguna rutina debe tener más de unas cuantas decenas de líneas. He llegado a crear algunas de hasta 50 o 70 líneas, pero por lo general no las escribo con más de un pequeño puñado de sentencias. El código atomizado es más fácil de depurar y mantener y goza de mayor aprovechamiento. Se empieza por buscar patrones de código consistentes, susceptibles a ser optimizados. Código:
...
{ Ajusté los nombres de los cuadros de verificación para que concordaran
con los nombres de las llaves }
IniFile.WriteBool('LogrosAsistencia', 'OrganizarEstudiantesAuto', ckbOrganizarEstudiantesAuto.Checked);
IniFile.WriteBool('LogrosAsistencia', 'ConservarCodigoLogro', ckbConservarCodigoLogro.Checked);
IniFile.WriteBool('LogrosAsistencia', 'ConservarValoracionLogro', ckbConservarValoracionLogro.Checked);
...
Se me ocurre que puede escribirse un procedimiento que pueda ser llamado de esta forma:
Incluso podría reducirse más, lo anterior es solo una aproximación. ![]() Me alegro por haber ayudado a resolver el misterio. Un abrazo con retorno y sin fin. Al González. ![]()
__________________
Tras casi seis años de trabajar para una empresa alemana como desarrollador Delphi, se vieron forzados a dejarme ir (temas presupuestales). Así que ahora estoy abierto a escuchar nuevas ofertas. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Statement expected, but expression of type 'Boolean' found | Shikanda | Conexión con bases de datos | 7 | 06-09-2007 13:26:19 |
| "Undeclared Identifier "CLOSE" | anghell77 | OOP | 4 | 09-10-2006 12:18:26 |
| Error "File not found: AHMSystemClass.dcu" | Miriamc | Varios | 2 | 05-06-2006 16:13:36 |
| Error: "Record not found or changed by another user" | jmlifi | Varios | 0 | 27-01-2006 10:16:57 |
| Solución para el error "Field ID not found" | Calderin | Conexión con bases de datos | 5 | 24-11-2004 11:18:26 |
|