Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   saber cuando estoy editando un registro (https://www.clubdelphi.com/foros/showthread.php?t=40290)

jhcaboverde 12-02-2007 20:29:43

saber cuando estoy editando un registro
 
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:
Código Delphi [-]
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:

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

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

Saludos.


La franja horaria es GMT +2. Ahora son las 15:55:22.

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