FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Dudas con el funcionamiento del RegisterClasses en Delphi 6.0
Buenas...
Tengo un paquete de runtime con estas unidades... unit uListadosInit; interface implementation uses Classes, uLstUsuariosApp{frmLstUsuariosApp}, uLstAlfabetico{frmLstAlfabetico}, uLstAplicaciones{frmLstAplicaciones}, uLstAppUsuario{frmLstAppUsuario}, uLstEquipos{frmLstEquipos}, uLstEstructura{frmLstEstructura}, uLstEtiquetas{frmLstEtiquetas}, uLstFichaAplicacion{frmLstFichaAplicacion}, uLstInternet{frmLstInternet}, uLstNoFunciona{frmLstNoFunciona}, uLstUbicacion{frmLstUbicacion}, uMDInventario{dmInventario: TDataModule}; initialization RegisterClasses([TfrmLstUsuariosApp,TfrmLstAlfabetico,TfrmLstAplicaciones, TfrmLstAppUsuario,TfrmLstEquipos,TfrmLstEstructura,TfrmLstEtiquetas, TfrmLstFichaAplicacion,TfrmLstInternet,TfrmLstNoFunciona,TfrmLstUbicacion]); finalization UnRegisterClasses([TfrmLstUsuariosApp,TfrmLstAlfabetico,TfrmLstAplicaciones, TfrmLstAppUsuario,TfrmLstEquipos,TfrmLstEstructura,TfrmLstEtiquetas, TfrmLstFichaAplicacion,TfrmLstInternet,TfrmLstNoFunciona,TfrmLstUbicacion]); end. Cuando intento buscar la clase TfrmLstAlfabetico en my app: procedure TfrmInventario.mListadosAlfabeticoClick(Sender: TObject); var FChildForm: TForm; AClass : TFormClass; begin result := nil; FChildForm := TForm( Application.Mainform.FindComponent('uLstAlfabetico') ); if not Assigned(FChildForm) then begin AClass := TFormClass( GetClass('TfrmLstAlfabetico') ); if AClass <> nil then begin LockWindowUpdate(Application.MainForm.Handle); ... La funcion getClass devuelve nil, parece como si el registerClasses no funcione pq el getClass 1º comprueba si esta registrada y entonces la obtiene, esto con delphi 5.0 funciona pero con delphi 6.0 ya no funciona o eso me parece, que es lo que me falta o hago mal? Gracias, salu2... |
#2
|
||||
|
||||
Yo probé este sencillo código en Delphi 6, y funciona sin problemas:
Código:
procedure TForm1.Button1Click(Sender: TObject); var AClass: TPersistentClass; begin AClass := GetClass('TForm1'); if AClass <> Nil Then ShowMessage('AClass <> Nil'); end; initialization RegisterClasses([TForm1]); finalization UnRegisterClasses([TForm1]); ¿Estas usando alguna vez en el proyecto la unit que registra las clases? ¿Si pones un BreakPoint en la línea del RegisterClass se detiene ahí?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
si.
si, se detiene pero no la encuentra, es codigo que funciona en Delphi 5, pero que al pasarlo a delphi 6 ya no me funciona, pero no se pq...? |
#4
|
||||
|
||||
¿Te funciona el código que puse en este hilo?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
si, funciona
|
#6
|
||||
|
||||
Cargar el paquete
¡Hola a todos!
Cita:
Espero esto sea de utilidad. Seguimos en contacto. Al González . |
#7
|
|||
|
|||
Hola, tengo una unidad de inicializacion por cada paquete donde hago el RegisterClasses de todas las clases de las unidades que contiene ese paquete, por ahi pasa y aparentemente las registra, pero cuando hago el getClass de la unidad que quiero utilizar entonces me devuelve un nil (vamos como si no la hubiera registrado).
En la unidad de inicializacion , tengo en las uses todas las unidades de las clases que registro. gracias |
#8
|
||||
|
||||
Cita:
Por otro lado, dices que el flujo de la aplicación sí pasa por el RegisterClasses pero el GetClass posterior falla. ¿Qué pasa si, para probar, usas un GetClass inmediatamente después del RegisterClasses: Código:
RegisterClasses(...); Assert(GetClass(una de tus clases) <> nil, '¡Es nil!'); |
#9
|
||||
|
||||
Es decir...
¡Buen día a todos!
Complementando lo que nos dice Román. Es decir, ¿estás seguro de que cuando se ejecuta tu programa, éste ejecuta las sentencias RegisterClasses que nos mencionas? Una cosa es que los paquetes llamen a RegisterClasses, cuando son cargados por el entorno de Delphi. Y otra muy distinta, que la aplicación también llame a RegisterClasses cuando comienza a ejecutarse. Quizás ésto último no sucede. De todas formas, me gustaría saber más sobre este caso. Espero esto sea de utilidad. Seguimos en contacto. Al González . |
#10
|
|||
|
|||
Cita:
|
#11
|
|||
|
|||
Cita:
|
|
|
|