PDA

Ver la Versión Completa : Manipular objetos desde otro objeto en otro form


Nicolas_2011
16-11-2012, 14:44:18
Buen dia foreros mi pregunta es la siguiente(con algunos detalles). tengo forms en cuestion uno de venta otro de compras, otro de caja. En el form de caja tengo un boton que intento funcione como una apertura de caja... dicho boton quiero que. ademas de postear la fecha y el usuario que esta abriendo la caja(creo que lo tengo resuelto.)
Si el boton apertura de caja no se presiono que tanto el form compra como el de ventas. se encuentren inaccesibles o bien todos sus objetos esten desabilitados(en otras palabras q no se puedan realizar ni compras ni ventas), hasta q se presione

Ahora muy similar seria la accion del otro boton 'cierre de caja' ubicado tambien en el form caja. al presionarlo que se desabiliten nuevamente ambos forms hasta q se lo presione..

espero haberme echo entender. Necesito de su ayuda. muchas gracias.

ecfisa
16-11-2012, 15:47:51
Hola Nicolas.

No se bién el escenario en que se presenta, es decir, desde donde son abiertos los forms, si los forms compras y ventas dependen de caja, si ambos estarán abiertos, si...

Form Caja:

...
implementation

uses UnitCpra, // frmCompra
UnitVta; // frmVenta

procedure FormsOnOff(F1,F2: TForm; Active: Boolean);
begin
if Assigned(F1) then F1.Enabled:= Active;
if Assigned(F2) then F2.Enabled:= Active;
end;

procedure TfrmCaja.FormCreate(Sender: TObject);
begin
FormsOnOff(frmCompra, frmVenta, False);
end;

...

procedure TfrmCaja.btnAperturaCajaClick(Sender: TObject);
begin
FormsOnOff(frmCompra, frmVenta, True);
end;

procedure TfrmCaja.btnCierreCajaClick(Sender: TObject);
begin
FormsOnOff(frmCompra, frmVenta, False);
end;

procedure TfrmCaja.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Assigned(frmCompra) and Assigned(frmVenta) then
CanClose := frmCompra.Enabled and frmVenta.Enabled
else if Assigned(frmCompra) and not Assigned(frmVenta) then
CanClose := frmcompra.Enabled
else if not Assigned(frmCompra) and not Assigned(frmVenta) then
CanClose := frmVenta.Enabled;
end;

Para lo cuál frmCaja debe incluir las unidades de los forms compra y venta.

El motivo de tanta comprobación es por que desconozco si están creados ambos o puede estar creado solo uno de ellos. La razón del evento OnCloseQuery, es que no sé si podrías volver a llamar a frmCaja para habilitar los anteriores, lo que los dejaría desactivados. Si frmCaja se puede llamar desde otro punto se podría quitar.

Fijate si de este modo te resulta, si no nos comentás con más detalle.

Saludos.

Nicolas_2011
16-11-2012, 15:58:28
Hola Nicolas.

No se bién el escenario en que se presenta, es decir, desde donde son abiertos los forms, si los forms compras y ventas dependen de caja, si ambos estarán abiertos, si...

Form Caja:

...
implementation

uses UnitCpra, // frmCompra
UnitVta; // frmVenta

procedure FormsOnOff(F1,F2: TForm; Active: Boolean);
begin
if Assigned(F1) then F1.Enabled:= Active;
if Assigned(F2) then F2.Enabled:= Active;
end;

procedure TfrmCaja.FormCreate(Sender: TObject);
begin
FormsOnOff(frmCompra, frmVenta, False);
end;

...

procedure TfrmCaja.btnAperturaCajaClick(Sender: TObject);
begin
FormsOnOff(frmCompra, frmVenta, True);
end;

procedure TfrmCaja.btnCierreCajaClick(Sender: TObject);
begin
FormsOnOff(frmCompra, frmVenta, False);
end;

procedure TfrmCaja.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Assigned(frmCompra) and Assigned(frmVenta) then
CanClose := frmCompra.Enabled and frmVenta.Enabled
else if Assigned(frmCompra) and not Assigned(frmVenta) then
CanClose := frmcompra.Enabled
else if not Assigned(frmCompra) and not Assigned(frmVenta) then
CanClose := frmVenta.Enabled;
end;

Para lo cuál frmCaja debe incluir las unidades de los forms compra y venta.

El motivo de tanta comprobación es por que desconozco si están creados ambos o puede estar creado solo uno de ellos. La razón del evento OnCloseQuery, es que no sé si podrías volver a llamar a frmCaja para habilitar los anteriores, lo que los dejaría desactivados. Si frmCaja se puede llamar desde otro punto se podría quitar.

Fijate si de este modo te resulta, si no nos comentás con más detalle.

Saludos.

Hola!, efectivamente tienes razon tendria q haber aclarado eso tambien los 3 formularios se abren desde un form PRINCIPAL y solo puede estar abierto uno a la vez.. funcionara lo q me propusiste de tal forma?

ecfisa
16-11-2012, 16:31:18
Hola!, efectivamente tienes razon tendria q haber aclarado eso tambien los 3 formularios se abren desde un form PRINCIPAL y solo puede estar abierto uno a la vez.. funcionara lo q me propusiste de tal forma?
Hola.

En ese código no estoy evaluando que sólo esté abierto uno a la vez, eso sería taréa del form principal. Pero de todos modos funcionará bién, ya que desde el form 'caja' se contempla la posibilidad de que este creado compras, ventas o ambos.

Saludos.

Nicolas_2011
16-11-2012, 16:47:38
Hola.

En ese código no estoy evaluando que sólo esté abierto uno a la vez, eso sería taréa del form principal. Pero de todos modos funcionará bién, ya que desde el form 'caja' se contempla la posibilidad de que este creado compras, ventas o ambos.

Saludos.


Amigo me esta dando un error de tipos no es aplicable, exactamente aqui.

procedure TFcaja.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Assigned(Ffacturacompra) and Assigned(Fventas) then
CanClose := Ffacturacompra and Fventas.Enabled
{error}else if Assigned(Ffacturacompra) and not Assigned(fventas) then
CanClose := Ffacturacompra.Enabled
else if not Assigned(Ffacturacompra) and not Assigned(fVentas) then
CanClose := Fventas.Enabled;
end;

ecfisa
16-11-2012, 18:02:53
Amigo me esta dando un error de tipos no es aplicable, exactamente aqui.

procedure TFcaja.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Assigned(Ffacturacompra) and Assigned(Fventas) then
CanClose := Ffacturacompra and Fventas.Enabled
{error}else if Assigned(Ffacturacompra) and not Assigned(fventas) then
CanClose := Ffacturacompra.Enabled
else if not Assigned(Ffacturacompra) and not Assigned(fVentas) then
CanClose := Fventas.Enabled;
end;
Hola Nicolas.

Es que no has copiado correctamente el código que te puse, tendría que ser:

if Assigned(Ffacturacompra) and Assigned(Fventas) then
CanClose := Ffacturacompra.Enabled and Fventas.Enabled
else if Assigned(Ffacturacompra) and not Assigned(fventas) then
CanClose := Ffacturacompra.Enabled
else if not Assigned(Ffacturacompra) and not Assigned(fVentas) then
CanClose := Fventas.Enabled;


Saludos.

Nicolas_2011
17-11-2012, 14:58:18
Hola Nicolas.

Es que no has copiado correctamente el código que te puse, tendría que ser:

if Assigned(Ffacturacompra) and Assigned(Fventas) then
CanClose := Ffacturacompra.Enabled and Fventas.Enabled
else if Assigned(Ffacturacompra) and not Assigned(fventas) then
CanClose := Ffacturacompra.Enabled
else if not Assigned(Ffacturacompra) and not Assigned(fVentas) then
CanClose := Fventas.Enabled;


Saludos.

Buenas amigo, ya corregido el problema de falta de codigo. al ejecutar no dio problemas ahora.. apenas ejecuto, lo primero q hago es ir a los forms de compra y venta y todo sigue igual sigue dejando tanto comprar como vender.. otro problema cuando voy al form caja selecciono el usuario y la fecha presiono el boton apertura de caja. cierro el formulario y da error de violacion de acceso al modulo drugestore.exe

ecfisa
17-11-2012, 17:44:56
Buenas amigo, ya corregido el problema de falta de codigo. al ejecutar no dio problemas ahora.. apenas ejecuto, lo primero q hago es ir a los forms de compra y venta y todo sigue igual sigue dejando tanto comprar como vender.. otro problema cuando voy al form caja selecciono el usuario y la fecha presiono el boton apertura de caja. cierro el formulario y da error de violacion de acceso al modulo drugestore.exe
Hola.

La verdad es que no sé como estás haciendo la creación ni el llamado de los forms, así que te adjunto un ejemplo básico como para que puedas revisarlo y decirme si es lo que estas buscando.

Saludos.

Nicolas_2011
17-11-2012, 18:12:51
Hola.

La verdad es que no sé como estás haciendo la creación ni el llamado de los forms, así que te adjunto un ejemplo básico como para que puedas revisarlo y decirme si es lo que estas buscando.

Saludos.

Hola! y Muchas gracias x tu tiempo ya me pongo a interpretarlo a tu ejemplo. suerte!