Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Manejo del Evento On State Change del Datasource Utilizando un Datamodulo (https://www.clubdelphi.com/foros/showthread.php?t=78436)

hondaalberto 19-04-2012 21:35:05

Manejo del Evento On State Change del Datasource Utilizando un Datamodulo
 
Buenas Tardes amigos

El Motivo de escribirles es porque quiero manejar el estado en el cual estaran disponibles o no los componentes de un formulario de mantenimiento.

El Inconveniente esta en que no se como hacerlo porque el componente TTable y el Datasource estan en en un Datamodule. Cuando tengo los componentes TTable y el Datasource en el mismo formulario lo hago de la Manera Siguiente:

Código Delphi [-]
DBEDIT1.ENABLE:=TPRODUCTOS.STATE IN [DSINSERT];

LO QUE NECESITO SABER COMO HAGO ESO MISMO PERO UTILIZANDO ESTOS COMPONENTES EN UN DATAMODULO.

MUCHAS GRACIAS DE ANTEMANO.

Caral 19-04-2012 21:38:51

Hola
Es lo mismo solo que mostrando la direccion al datamodule:
Código Delphi [-]
DBEDIT1.ENABLE:= DATAMODULE1.TPRODUCTOS.STATE IN [DSINSERT];
Logicamente tendras que poner el uses de la unidad del datamodule.
Saludos

hondaalberto 19-04-2012 22:00:53

Muchas Gracias por la respuesta. Aplique la solución que me dieron y me funcionó correctamente pero tube que poner el datasource en el Formulario para que me funcionara ya que lo tenia en el Datamodulo tambien.

El Datasource debe estar siempre en formulario o hay alguna forma de manejarlo desde el Datamodulo? Cuál es la Forma Correcta?

Caral 19-04-2012 22:04:19

Hola
Todo puede estar en el datamodule.
Es simplemente llamar al componente colocando delante el nombre del datamodule, como te lo explique antes.
Yo particularmente no uso el datamodule mas que para el componente de conexion, los datasource, tables, querys y demas los pongo en su respectivo form ya que me gusta tenerlos a mano, es cuestion de gustos.
Saludos

José Luis Garcí 20-04-2012 09:01:04

Yo te pongo una solucion alternatiba y una nueva
La alternativa
Código Delphi [-]
if DataSource.dataset.State in [Dsinsert,dsedit] then Dbedit1.enable:=true else Dbedit1.enable:=false;

y la nueva, bajata del Ftp del Club el Componente NewPanelDb, instalalo y pon dentro los componentes diversos, conecta el Panel al datasource, pon la propiedades adecuadas, en este caso Action en xEnable y no en xVisible y el InverseAction en false y listo si el dataSource no esta en Insert, Append o edit, no podras acceder alos datos, tiene más posibilidades, de hecho yo suelo usar 3 de estos paneles en mi formulario
PanelBotonora, para todos los botones principales, pongo action en xEnable y Actioninverse en true, por lo que cuando estoy editando, insertando, no puedo acceder a los botones, evitando errores.
Paneldatos, donde pongo todos los componentes para rellenar de la base de datos pongo action en xEnable y Actioninverse en false, con lo que sólo puedo editar datos cuando esta en insert o edit.
Y por ultimo el PanelConfirmar donde stan los botones para confirmar(grabar) y Cancelar, las propiedades son Action en xVisible y ActionInverse en false, solo muestra el panel cuando esta en Inser o edit, para poder grabar.


La franja horaria es GMT +2. Ahora son las 03:43:36.

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