Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Delphi para la web (https://www.clubdelphi.com/foros/forumdisplay.php?f=51)
-   -   Manipular objetos desde otro objeto en otro form (https://www.clubdelphi.com/foros/showthread.php?t=81462)

Nicolas_2011 16-11-2012 14:44:18

Manipular objetos desde otro objeto en otro form
 
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:
Código Delphi [-]
...
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

Cita:

Empezado por ecfisa (Mensaje 449683)
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:
Código Delphi [-]
...
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

Cita:

Empezado por Nicolas_2011 (Mensaje 449685)
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

Cita:

Empezado por ecfisa (Mensaje 449691)
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.

Código Delphi [-]
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

Cita:

Empezado por Nicolas_2011 (Mensaje 449693)
Amigo me esta dando un error de tipos no es aplicable, exactamente aqui.

Código Delphi [-]
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:
Código Delphi [-]
  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

Cita:

Empezado por ecfisa (Mensaje 449700)
Hola Nicolas.

Es que no has copiado correctamente el código que te puse, tendría que ser:
Código Delphi [-]
  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

Cita:

Empezado por Nicolas_2011 (Mensaje 449769)
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

Cita:

Empezado por ecfisa (Mensaje 449777)
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!


La franja horaria es GMT +2. Ahora son las 17:19:45.

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