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
[-]......
public
FormaMDI: boolean;
FormaMenu: TFrmFB;
end;
......
.......
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
[-]
...................
public
FormaHija: TFrmGB;
end;
............
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