PDA

Ver la Versión Completa : saber cuando estoy editando un registro


jhcaboverde
12-02-2007, 20:29:43
bueno tengo un formulario "form2", con:dbedit1, DBNavigator1, button1 y un button2 que esta basado en un datasource de otro formulario ejemplo Form1.DataSource1 este datasource su origen es un ADOTable, ahora bien que necesito:

un button es salir y otro guardar, este ultimo deberia cuando se agrega un nuevo registro o se edita uno que ya este activarse el button de guardar cambios.

mil gracias anticipadas;

yo

Caral
12-02-2007, 21:06:26
Hola
Si el DBNavigator1 esta en edit o insert:

procedure FForm1.BitBtn1Click(Sender: TObject);
begin
If (DBNavigator1.State = dsEdit) or (DBNavigator1.State = dsInsert) then
begin
ADOTable1.Post;
end
else
Close;
end;
Saludos

kalisto
12-02-2007, 21:10:29
Ya que tienes un dbnavigator, podrias usar el boton para guardar que este tiene, de todas formas siquieres hacerlo con un boton independiente puedes hacerlo de la siguiente forma:


procedure Form1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
if Form1.DataSource1.state in [dsedit, dsinsert] then
buttonGuardar.enabled:= true
else
buttonGuardar.enabled:= false;
end;

jhonny
12-02-2007, 21:20:58
Otra forma es usar un evento que se dispare cada que el dataSet cambie de estado y ese evento puede ser el StateChange del DataSource (ejemplo: dsEjemplo) que conecta el DataSet(ejemplo: tblEjemplo) y colocar alli algo como:
procedure TForm1.dsEjemploStateChange(Sender: TObject);
begin
tbgrabar.Enabled := (tblEjemplo.STATE IN DSEDITMODES);
end;

egostar
13-02-2007, 00:30:48
O tambien puedes mostrar cualquier estado en un StatusBar.

procedure TDataModule2.DSCustomersStateChange(Sender: TObject);
begin
FCustomers.StatusBar1.Panels[1].Text :=
'State = ' + GetEnumName(TypeInfo(TDataSetState),
Ord(IBCustomers.State));
end;


Saludos.