![]() |
Cita:
procedure TfrmMainGeneral.EjecutarForm(pForm: TfrmForm; pNomPantalla: String); var lTransActive: Boolean; begin lTransActive := False; if not DMLectura.IBTRead.InTransaction then begin DMLectura.IBTRead.StartTransaction; lTransActive := True; end;//if not DMLectura.IBTRead.InTransaction then if FSesionUsr.AccesoFormSistema(FSesionUsr.GetSesionIDGrupoUsuario, pNomPantalla) then pForm.ExecuteModal(Self) else MessageDlg(Usuario_sin_permiso, mtInformation, [mbOK], 0); if lTransActive then DMLectura.IBTRead.Rollback; end; y despues lo que quiero hacer es EjecutarForm(TfrmVenta, Pant_Ventas); |
En esta caso estás pasando un objeto de tipo TfrmForm, pero no una referencia a la clase, que son cosas distintas; Si quieres ejecutar un mérodo de clase (ExecuteModal), debes pasar la referencia. Otra opción sería pasar el form y ejecutarl por RTTI, pero creo que no es el caso.
y despues lo que quiero hacer es;
Lo primero es cambiar:
Y en algun sitio (en la sección de type) definir:
En ese caso la llamada a:
Funcionará, siempre y cuando la clase TfrmVenta derive de TfrmForm,
No se si me he explicado. EjecutarForm(TfrmVenta, 'Pant_Ventas'); ==> Este procemimiento llega a la línea: pForm.ExecuteModal(Self) ==>pForm lo hemos pasado como parámetro con un constructor de clase (TfrmVenta); Revisa esta clase y no tiene el método ExecuteModal, pero sí su antecesor TfrmForm. Como lo tiene definido como método de clase, lo ejecuta: class procedure ExecuteModal(Sender:TForm); ==> Este ,método supongo que crea el form y lo visualiza modal. |
Cita:
Cita:
Cita:
Cita:
|
| La franja horaria es GMT +2. Ahora son las 01:17:35. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi