Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2003
vegalisandro vegalisandro is offline
Registrado
 
Registrado: jul 2003
Ubicación: Lanus - Buenos Aires - Argentina
Posts: 7
Poder: 0
vegalisandro Va por buen camino
Question Herencia

Hola, estoy trabajando con Delphi7 en vcl, el tema es que estoy creando formularios que me sirven de base para otros formularios, asi tengo una jeraquia de 4/5 formularios, el problema es que por temas relacionados con la seguridad del sistema, yo en el formulario base de todos (el mas alto en la jeraquia f01) implemento dicha seguridad, y si no cumple ciertas condiciones el formulario no se debe abrir. Tengo eventos en todos los OnShow y en todos los OnClose de los formularios de la herencia.
yo lo que necesito es que si no se cumple la condicion del formulario f01, no se siga con nada mas, es decir no ejecute nada mas, pero el tema es que cuando esto sucede, yo disparo un close del f01, lo que dispara el close de todos los formularios, y como la validacion de seguridad la tengo en el onShow, luego de disparar los close correspondientes intenta seguir disparando los shows y ahi da error, yo lo que necesito es poder interrumpir esa ejecucion de los shows en el mismo lugar que obligo a hacer los close. ¿Alguien sabe como interrumpir esta ejecucion en la herencia? (El abort me da error)

Gracias
Lisandro
Responder Con Cita
  #2  
Antiguo 12-09-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
La verdad que no entiendo mucho tu problema, si tu problema es que no se ejecuten los métodos heredados o es otro, si tu tienes una clase

Código:
TClase = class
public
  procedure Metodo; virtual;
end;

...

procedure TClase.Metodo;
begin
  ShowMessage('Hola Mundo!');
end;
y creo una clase heredada de esta que sobreesciba el método:

Código:
THeredada = class(TClase)
public
  procedure Metodo; override;
end;
Si quiero que en la implementación del método se ejecuten el método de la clase base:
Código:
 
procedure THeredada.Metodo;
begin
  inherited; {Aquí hace que se ejecute el método de la clase heredada}  
  ShowMessage('Chau Mundo!!');
end;
Aquí evito que ejecute el metodo heredado:
Código:
 
procedure THeredada.Metodo;
begin
  {Como verás no llama al metodo heredado (inherited) }
  ShowMessage('Chau Mundo!!');
end;

¿Es esta tu duda?

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 12-09-2003
vegalisandro vegalisandro is offline
Registrado
 
Registrado: jul 2003
Ubicación: Lanus - Buenos Aires - Argentina
Posts: 7
Poder: 0
vegalisandro Va por buen camino
No es esa la duda justamente, pero ya encontre una posible solucion, lo que a mi me pasaba es que no podia, ante una determinada situacion, detener la ejecucion de los formularios que heredaban del principal



--------------------------
f01
onshow
if(i=1)then
// cortar todo no seguir
else showmessage('hola mundo');

----------------------------
f02=class(Tf01)
onshow
inherited;
showmessage('como estan')



------------------------------
fUsuarios=class(TF02)
onShow
inherited;
//Abro DataSets y otras cosas


entonces cuando yo hacia el show del fUsuarios disparaba el
Show del este, que disparaba el show de f02 y el show de f01 y este ultimo no cumplia la condicion, entonces yo disparaba un close y luego, porque entro por inherited del fUsuarios y f02, seguia con lo que tenia en el onshow de estos y eso es lo que yo no queria.

Saludos
Lisandro
Responder Con Cita
  #4  
Antiguo 12-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
¿ Como lo has solucionado ? ¿ Una llamada al método Abort ?

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 12-09-2003
vegalisandro vegalisandro is offline
Registrado
 
Registrado: jul 2003
Ubicación: Lanus - Buenos Aires - Argentina
Posts: 7
Poder: 0
vegalisandro Va por buen camino
no lo hice de la manera mas fina, pero creando una variable de clase la cual cuando se dispara el create la seteo con un valor y cuando la condicion no se cumple le cambio el valor, y solo la utilizo al momento de hacer el onShow y pregunto por el valor de la misma, lo pude solucionar, en cuanto al Abort me dispara un error.

Saludos
Lisandro
Responder Con Cita
  #6  
Antiguo 12-09-2003
jacanche jacanche is offline
Miembro
 
Registrado: may 2003
Ubicación: Campeche,Campeche,Mexico
Posts: 137
Poder: 22
jacanche Va por buen camino
Hola, solo por curiosidad, ¿por que no, en lugar de validarlo en el onshow, lo validas en el create?, No seria mas optimo, que en el momento de crear el objeto se pueda verificar si el usuario cuenta con los derechos de acceso y de no ser asi, mejor que no se cree el objeto.

Saludos

Alfredo
Responder Con Cita
  #7  
Antiguo 12-09-2003
vegalisandro vegalisandro is offline
Registrado
 
Registrado: jul 2003
Ubicación: Lanus - Buenos Aires - Argentina
Posts: 7
Poder: 0
vegalisandro Va por buen camino
lo que pasa es que en el caso de que no tenga que crear el formulario, no estaria entrando nunca por esa validacion.
Es decir, yo puedo crear el formulario y no destruirlo hasta que salga de la aplicacion, por ende la primer invocacion disparara el onCreate pero las demas veces que yo lo invoque no lo hara, y si pasara por el OnShow

Saludos
Lisandro
Responder Con Cita
  #8  
Antiguo 13-09-2003
jacanche jacanche is offline
Miembro
 
Registrado: may 2003
Ubicación: Campeche,Campeche,Mexico
Posts: 137
Poder: 22
jacanche Va por buen camino
ok., pero no seria mejor que la validacion del acceso se realice de una sola vez, y no cada vez que se quiera accesar al objeto, en fin, solo estoy divagando, y creo que me estoy saliendo del tema del hilo.

Saludos

Alfredo.
Responder Con Cita
  #9  
Antiguo 15-09-2003
vegalisandro vegalisandro is offline
Registrado
 
Registrado: jul 2003
Ubicación: Lanus - Buenos Aires - Argentina
Posts: 7
Poder: 0
vegalisandro Va por buen camino
no, debido a que el formulario puede tener una propiedad de revalidacion, es decir que cada vez que entre al mismo deba pedir el Usr y Psw y a su vez, el sistema tiene la posibilidad de cambiar de usuario, y esto no funcionaria como se espera si la validacion estaria en el onCreate

Saludos
Lisandro
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:20:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi