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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-06-2007
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Poder: 21
jzginez Va por buen camino
Talking Cambiar propiedad de componente del formulario padre al cerrar el formulario hijo

Hola amigos tengo una duda tengo un formulario principal en el cual solo tengo un menu, dependiendo de la opcion seleccionada del menu se muestra un segundo formulario con varios speedbutton, al hacer click en alguno de estos botonos este se queda sumido (para resaltar que opcion escogio el usuario) y se abre un tercer formulario.
Lo que quiero es que al cerrar el tercer formulario el speedButton el 2º formulario regrese a su estado normal (la propiedad down = false) ya se que lo mas facil seria en el evento onclose de la forma poner
Código Delphi [-]
formaMenu.SpeedButton1.down:= False;

Pero el chiste es que son varios botones y varias forma, lo que quiero por decirlo así es tener que estar poniendo esta linea en todas las formas ( es una sola linea pero no importa) para darme a entender les escribo fracmento de todo mi código

Forma Principal
Código Delphi [-]
......
//declaracion de la clase form
  public
    { Public declarations }
    FormaMDI: boolean;
    FormaMenu: TFrmFB;
  end;
//otros procedimientos y variables de la forma
......
.......
//Este procedimiento lo asigno a todos los item del menu y segun la opción
//Seleccionada creo y muestro la forma corespondiente
procedure TFrmPrincipal.ActAbreModulos(Sender: TObject);
Var
  Numero: Integer;
  estado: Boolean;
Begin
  if Sender.ClassName = 'TMenuItem'
    Then Begin
      Numero:= TMenuItem(Sender).Tag;
      Estado:= TMenuItem(Sender).Checked;
    End
    Else Begin
      Numero:= TSpeedButton(Sender).Tag;
      Estado:= TSpeedbutton(Sender).Down;
    End;
  If Sender.ClassName = 'TMenuItem'
    Then TSpeedButton(FindComponent('SpeedButton'+IntToStr(Numero+1))).Down:= Estado
    Else TMenuItem(FindComponent('Submodulo'+IntToStr(Numero+1))).Checked:= Estado;
  If Not Estado
    Then Begin
      If Assigned(FormaMenu)
        Then Begin
          FormaMenu.Close;
          If FormaMenu.Visible
            Then FormaMenu.Visible:= False;
          FormaMenu:= Nil;
          FormaMenu.Free;
        End;
    End
    Else Begin
      If Assigned(FormaMenu)
        Then Begin
          if FormaMenu.Visible
            Then FormaMenu.Visible:= False;
          FormaMenu:= Nil;
          FormaMenu.Free;
        End;
      Case Numero of
        0: Begin
          If Not FormaMDI
            Then FormaMenu:= TFrmFBMenuClientes.Create(Application,ScrollBox1)
            Else FormaMenu:= TFrmFBMenuClientes.Create(Application);
          FormaMenu.Position:= poDesigned;
          FormaMenu.Visible:= True;
          End;
        1: Begin
          If Not FormaMDI
            Then FormaMenu:= TFrmFBMenuProveedores.Create(Application,ScrollBox1)
            Else FormaMenu:= TFrmFBMenuProveedores.Create(Application);
          FormaMenu.Position:= poDesigned;
          FormaMenu.Visible:= True;
          End;
        2: Begin
          If not FormaMDI
            Then FormaMenu:= TFrmFBMenuProductos.Create(Application,ScrollBox1)
            Else FormaMenu:= TFrmFBMenuProductos.Create(Application);
          FormaMenu.Position:= poDesigned;
          FormaMenu.Visible:= True;
          End;
        3: Begin
          If Not FormaMDI
            Then FormaMenu:= TFrmFBMenuProductos.Create(Application,ScrollBox1)
            Else FormaMenu:= TFrmFBMenuProductos.Create(Application);
          FormaMenu.Position:= poDesigned;
          FormaMenu.Visible:= True;
          End;
        4: Begin
          If Not FormaMDI
            Then FormaMenu:= TFrmFBMenuCatalogos.Create(Application,ScrollBox1)
            Else FormaMenu:= TFrmFBMenuCatalogos.Create(Application);
          FormaMenu.Position:= poDesigned;
          FormaMenu.Visible:= True;
          End;
    End;
  End;
End;

Con el código anterio abro la segunda forma que es la de los speedButton
Código Delphi [-]
//declaracion de la clase form
...................
  public
    { Public declarations }
    FormaHija: TFrmGB;
  end;
............
//otros procedimientos y variables de la forma
procedure TFrmFBMenuCatalogos.AbrirGridBase(Sender: tObject);
Begin
  CierraFormaHija;
  If TSpeedButton(Sender).Down
    Then Begin
      Case TSpeedButton(Sender).Tag of
        0: if FAsChild
            Then FormaHija:= TFrmGBClasificaciones.Create(Application,frmPrincipal.ScrollBox2)
            Else FormaHija:= TFrmGBClasificaciones.Create(Application);
        1: if FAsChild
            Then FormaHija:= TFrmGBDescuentos.Create(Application,frmPrincipal.ScrollBox2)
            Else FormaHija:= TFrmGBDescuentos.Create(Application);
        2: if FAsChild
            Then FormaHija:= TFrmGBImpuestos.Create(Application,frmPrincipal.ScrollBox2)
            Else FormaHija:= TFrmGBImpuestos.Create(Application);
        3: if FAsChild
            Then FormaHija:= TFrmGBTipoAlmacen.Create(Application,frmPrincipal.ScrollBox2)
            Else FormaHija:= TFrmGBTipoAlmacen.Create(Application);
        4: if FAsChild
            Then FormaHija:= TFrmGBFamilias.Create(Application,frmPrincipal.ScrollBox2)
            Else FormaHija:= TFrmGBFamilias.Create(Application);
        5: if FAsChild
            Then FormaHija:= TFrmGBCategorias.Create(Application,frmPrincipal.ScrollBox2)
            Else FormaHija:= TFrmGBCategorias.Create(Application);
      End;
      if FAsChild
        Then Begin
          if FrmPrincipal.CoolBar1.Bands.Count = 1
            Then FrmPrincipal.CoolBar1.Bands.Add;
          FrmPrincipal.CoolBar1.Bands.Items[1].Break:= True;
          FrmPrincipal.CoolBar1.Bands.Items[1].Control:= FormaHija.ToolBar2;
          FrmPrincipal.ScrollBox2.SetFocus;
        End
        Else Begin
          FormaHija.Position:= poDesigned;
          FormaHija.Left:= FrmPrincipal.FormaMenu.Left+ FrmPrincipal.FormaMenu.Width + 10;
          FormaHija.Top:= FrmPrincipal.FormaMenu.Top;
        End;
      FormaHija.Visible:= True;
    End;
End;
Ok este código es el que abre la tercera forma, lo que quisiera es poder poner algo como: formahija.buscaformapadre.buscaboton.Down:= False o en otras palabras desde la forma principal yo puedo escribir esto
Código Delphi [-]
FormaMenu.FormaHija.Label1.Caption:= 'forma normal';
lo que quisiera es viajar al reves:
Código Delphi [-]
formahija.formamenu.label1.caption:= 'al reves';

¿es posible esto?
Gracias
disculpen tanto rollo y código pero no se si me he logrado dar a entender
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México
Responder Con Cita
 



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
Evitar cerrar un formulario desde un componente genius Varios 1 23-11-2006 15:55:42
Problema Con formulario Hijo JELIRM Varios 5 10-04-2006 17:45:42
Ayuda con formulario hijo.... ronimaxh Varios 10 26-02-2004 22:11:11
Acceso a componente de formulario padre???? mguixot OOP 6 11-06-2003 13:54:19
Tamaño formulario hijo craven Varios 1 22-05-2003 00:13:33


La franja horaria es GMT +2. Ahora son las 13:28:42.


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