Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2007
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Poder: 21
rafita Va por buen camino
Acceder desde un Frame a su formulario

Hola compañeros,

Nuevamente vuelvo por aquí con una duda:

Tengo un Frame que utilizo desde tres formularios porque la gestión que realizo es igual en todos ellos.
Y necesitaría acceder desde un botón situado en el Frame a un Panel situado en el formulario principal.

Código:
procedure TFrameDetalles.BCancelarClick(Sender: TObject);
begin
  PanelCabecera.Enabled:=True;  // no lo permite porque no pertenece al Frame
end;
He buscado referencias al Parent del frame y cosas así, pero no encuentro nada que sirva.

Si alguien tiene alguna respuesta, se lo agradeceré enormemente.

Saludos.
__________________
Rafita.
Responder Con Cita
  #2  
Antiguo 07-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Hazle un evento al frame, ya que si son 3 Forms donde los usas tendrías que hacer referencia a los 3 forms... y claro, se acabó el encapsulamiento:

Código Delphi [-]

TFrame1 = classs(...)
private
   FCancelar: TnotifyEvent;

public
   property OnCancelar:TnotifyEvent read FCancelar write FCancelar;

end;

implementation

procedure TFrame1.ButtonCancelar(...);
begin
  if Assigned(FCancelar) then
    FCancelar(self);
end;

Ya en el form donde usas los frames:
Código Delphi [-]
Tform1 = classs(tform);
private
  procedure AlCancelar(Sender:TObject);
end;

procedure TForm1.Form1Create();
begin
   Frame1.OnCancelar := AlCancelar;
end;


procedure TForm1.AlCancelar(Sender:TObject);
begin
  panel1.Enabled := false;
end;

Creo que no me equivocado en nada, debería compilar y ejecutar.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 07-03-2007
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Poder: 21
rafita Va por buen camino
Muchas gracias Lepe,
Voy a procesar lo que me has dicho y adaptarlo al problema, ya que mi nivel es infimo y el problema es un poco más complejo de lo que he expuesto.

Luego te cuento.
__________________
Rafita.
Responder Con Cita
  #4  
Antiguo 07-03-2007
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Poder: 21
rafita Va por buen camino
Probado,

Funciona perfectamente, y hasta creo que lo entiendo, pero desde luego yo solo no sabría resolverlo.

Muchísimas gracias.
__________________
Rafita.
Responder Con Cita
  #5  
Antiguo 07-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Lo que seguramente no te cuadra son estas dos líneas, como a mí la primera vez que lo ví:
Código Delphi [-]
  if Assigned(FCancelar) then
    FCancelar(self);

TNotifyEvent es un puntero a un procedimiento (lo que comunmente se llama evento).

Assigned(FCancelar) es la forma de saber si el usuario ha asignado el evento, es decir, saber si el usuario ha hecho esto:
Código Delphi [-]
Frame1.OnCancelar := AlCancelar;
Exactamente lo mismo que el inspector de objetos, si un evento está vacío (no tiene el nombre escrito) delphi no ejecuta nada.

Si tiene algo escrito, ejecuta ese procedimiento (TForm1.Button1Click(..) por ejemplo.

FCancelar(self), en tiempo de ejecución se sustituye por:
Código Delphi [-]
Form1.AlCancelar(Frame1);
... eso suena raro, pero alguna vez supongo que has hecho esto:
Código Delphi [-]
button1Click(nil); 
// o bien
button1Click(Form1);
para ejecutar el evento Onclick de un boton, en tu ventana por código, pues realmente es eso lo que se hace con la línea FCancelar(Self), ejecutar el procedimiento que se haya asignado, en este caso "AlCancelar".

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 07-03-2007 a las 16:32:17.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
3 botones para acceder a un mismo formulario. VRO Varios 9 05-09-2007 03:08:32
como vincular .dbf en acccess por codigo? o como acceder a ellas desde desde .mdb orfeo Conexión con bases de datos 0 24-06-2004 16:35:21
FindNextComponent desde un Frame chemoide OOP 3 17-06-2004 17:11:47
Acceder a Interbase 6 desde .NET EL WINDSURFISTA Firebird e Interbase 1 04-10-2003 20:23:49
Como acceder a los componentes de un frame? CORBATIN OOP 7 25-07-2003 21:24:23


La franja horaria es GMT +2. Ahora son las 18:29:02.


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