unit FFAMILIAS;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, StdCtrls, Buttons, ExtCtrls, Menus, Mask, db,TIPOSDEFINIDOS,
  ActnList, ImgList, ComCtrls, ToolWin, ExtDlgs;

type
  TFAMILIAS = class(TForm)
    Menu: TMainMenu;
    FAMILIAS1: TMenuItem;
    DSFAMILIAS: TDataSource;
    ALTAS1: TMenuItem;
    BAJAS1: TMenuItem;
    CONSULTAS1: TMenuItem;
    MODIFICACIONES1: TMenuItem;
    LISTADO1: TMenuItem;
    N1: TMenuItem;
    SALIR1: TMenuItem;
    REGISTRO1: TMenuItem;
    PRIMERO1: TMenuItem;
    ANTERIOR1: TMenuItem;
    SIGUIENTE1: TMenuItem;
    ToolBar1: TToolBar;
    BALTAS: TToolButton;
    BBAJAS: TToolButton;
    BCONSULTAS: TToolButton;
    BMODIFICACIONES: TToolButton;
    BLISTADO: TToolButton;
    ToolButton6: TToolButton;
    DBNavigator2: TDBNavigator;
    ToolButton7: TToolButton;
    BSALIR: TToolButton;
    ActionList1: TActionList;
    AAltas: TAction;
    ABajas: TAction;
    AConsultas: TAction;
    AModificaciones: TAction;
    ASalir: TAction;
    ALISTADO: TAction;
    ImageList1: TImageList;
    BPADRE: TToolButton;
    AAPADRE: TAction;
    APADREBORRAR: TAction;
    ToolButton1: TToolButton;
    Label6: TLabel;
    ToolButton2: TToolButton;
    PDatos: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label7: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DBText2: TDBText;
    Label3: TLabel;
    DBEdit6: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    Label8: TLabel;
    DBEdit3: TDBEdit;
    Label9: TLabel;
    Image6: TImage;
    Image5: TImage;
    DBImage1: TDBImage;
    SpeedButton3: TSpeedButton;
    OpenPictureDialog1: TOpenPictureDialog;
    GroupBox1: TGroupBox;
    DBRadioGroup1: TDBRadioGroup;
    DBCheckBox9: TDBCheckBox;
    DBCheckBox10: TDBCheckBox;
    GroupBox2: TGroupBox;
    DBRadioGroup3: TDBRadioGroup;
    DBCheckBox1: TDBCheckBox;
    DBCheckBox2: TDBCheckBox;
    DBRadioGroup4: TDBRadioGroup;
    DBCheckBox3: TDBCheckBox;
    DBCheckBox4: TDBCheckBox;
    DBCheckBox6: TDBCheckBox;
    Label10: TLabel;
    DBEdit4: TDBEdit;
    Label11: TLabel;
    DBEdit5: TDBEdit;
    Label12: TLabel;
    DBEdit7: TDBEdit;
    Aorden: TAction;
    ToolButton3: TToolButton;
    LISTADOS1: TMenuItem;
    OrdenadoPorDescripcin1: TMenuItem;
    OrdenadoPorIDFAMILIA1: TMenuItem;
    OrdenadoPorCODFAMILIA1: TMenuItem;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure BAltasClick(Sender: TObject);
    procedure BConsultasClick(Sender: TObject);
    procedure BBajasClick(Sender: TObject);
    procedure BModificacionesClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure BSalirClick(Sender: TObject);
    procedure DSFAMILIASStateChange(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BListadoClick(Sender: TObject);
    procedure REGISTRO1Click(Sender: TObject);
    procedure PRIMERO1Click(Sender: TObject);
    procedure ANTERIOR1Click(Sender: TObject);
    procedure SIGUIENTE1Click(Sender: TObject);
    procedure FAMILIAS1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DSFAMILIASDataChange(Sender: TObject; Field: TField);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure BPADREClick(Sender: TObject);
    procedure DBEdit1Exit(Sender: TObject);
    procedure BPADREBORRARClick(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure DBImage1DblClick(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure DBCheckBox4Click(Sender: TObject);
    procedure DBCheckBox3Click(Sender: TObject);
    procedure DBCheckBox6Click(Sender: TObject);
    procedure DBEdit6Exit(Sender: TObject);
    procedure AordenExecute(Sender: TObject);
    procedure OrdenadoPorIDFAMILIA1Click(Sender: TObject);
    procedure OrdenadoPorCODFAMILIA1Click(Sender: TObject);
  private
    { Private declarations }

    ancho:integer;

    procedure EstadoBotones;
    function GetFAMILIA:string;
    procedure comprobarsubcuenta;
  public
    { Public declarations }

     property codigo:string read GetFAMILIA;// write SetCONDUCTOR;
  end;

var
  FAMILIAS: TFAMILIAS;

implementation

uses RUTINAS, UDMGS, fdlgFAMILIAS, DBClient, fprevio,
  FLISTADOS, FDLGFAMILIASAUX, FORDENFAMILIAS;
 //FDLGPROVEEDOR, LIST_CONDUCTORES,UDMGS;

{$R *.DFM}


//********************    FALTA POR HACER EL LISTADO

procedure TFAMILIAS.BListadoClick(Sender: TObject);
  var  bookmark:tbookmark;
begin

    with DMGS.CDSQ_FAMILIAS do
    BEGIN
      Close;
      DMGS.VFAMILIAS.ID :='%';
      dmgs.vfamilias.ORDEN := Oordenfamilias;
      Open;
    END;

    WHILE NOT DMGS.CDSQ_FAMILIAS.EOF DO
    BEGIN
      DMGS.CDSQ_FAMILIAS.Last;

      IF (DMGS.CDSQ_FAMILIAS.EOF) AND (NOT(DMGS.CDSQ_FAMILIAS.STATE IN [DSEDIT,DSINSERT])) THEN
      try // para evitar el error de memoria bloqueada en el server.
         DMGS.CDSQ_FAMILIAS.GetNextPacket;
      except
      end;
    END;
    DMGS.CDSQ_FAMILIAS.First;



//    bookmark:= dmgs.cdsq_familias.GetBookmark ;
    DSFAMILIAS.DataSet := NIL; // HACE FALTA
    LISTADOS := tLISTADOS.Create(nil);
    PREVIO := TPREVIO.Create(NIL);
    LISTADOS.FRDB.DataSet := DMGS.CDSQ_FAMILIAS;
 //   Path := ExtractFilePath(ParamStr(0));
    LISTADOS.frReport1.LoadFromFile(dmgs.Path + 'LISTADOS\FAMILIAS.frf');
    LISTADOS.frReport1.Preview := PREVIO.frPreview1;
    LISTADOS.frReport1.ShowReport;
    PREVIO.ShowModal;
    DSFAMILIAS.DataSet := DMGS.CDSQ_FAMILIAS;
    LISTADOS.Free;
    LISTADOS := NIL;
    PREVIO.FREE;
    PREVIO := NIL;
 //   dmgs.cdsq_familias.GotoBookmark(bookmark);
//    dmgs.cdsq_familias.FreeBookmark (bookmark);
end;


//***********************************************************
function TFAMILIAS.GetFAMILIA:string;
begin
    result:=DMGS.CDSQ_FAMILIASID_FAMILIA.asstring;
end;


procedure TFAMILIAS.FormDestroy(Sender: TObject);
begin
 if DMGS.CDSQ_FAMILIAS.active then
     DMGS.CDSQ_FAMILIAS.close;

end;
procedure TFAMILIAS.FormCreate(Sender: TObject);
begin
 ANCHO := Width ;
 if DMGS.CDSQ_FAMILIAS.active then
     DMGS.CDSQ_FAMILIAS.close;

 DMGS.PADRE := '';
 DMGS.COD_FAMILIA := '';
 DMGS.PROFUNDIDAD := 0;

 with DMGS.CDSQ_FAMILIAS do
 BEGIN
    Close;
    DMGS.VFAMILIAS.ID :='%';
    dmgs.vfamilias.ORDEN := Oordenfamilias;
    Open;
 END;

end;
procedure TFAMILIAS.FormShow(Sender: TObject);
begin
    EstadoBotones;
end;
procedure TFAMILIAS.BConsultasClick(Sender: TObject);
begin
    DSFAMILIAS.DataSet := nil;
    DLGFAMILIAS:=tDLGFAMILIAS.create(nil);
    DLGFAMILIAS.CerrarDataset := false;
    DLGFAMILIAS.Showmodal;
    DLGFAMILIAS.Free;
    DLGFAMILIAS := nil;
    IF NOT DMGS.CDSQ_FAMILIAS.ACTIVE THEN
       ESTADOBOTONES;// PARA CUANDO SE PULSA CANCELAR
    DSFAMILIAS.dataset := DMGS.CDSQ_FAMILIAS;
end;

procedure TFAMILIAS.FormKeyPress(Sender: TObject; var Key: Char);
begin
    if (ActiveControl=nil) and (key=#13) then
    begin
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0;
    end;
   if (key = #13) and not (ActiveControl is TButton) then
    begin
        if uppercase(activecontrol.name)='DBEDIT2'
          then
            DMGS.CDSQ_FAMILIAS.post;
        Perform(WM_NextDLGCtl, 0, 0);
        key:=#0 ;
    end;

    if not (activeControl is TDBEdit) then
    begin
       if uppercase(key)='A' then if BAltas.enabled then BAltas.click;
       if uppercase(key)='B' then if BBajas.enabled then BBajas.click;
       if uppercase(key)='C' then if BConsultas.enabled then BConsultas.click;
       if uppercase(key)='M' then if BModificaciones.enabled then BModificaciones.click;
       if uppercase(key)='L' then if BListado.enabled then BListado.click;
    end;

    if (key = #27) and not (DMGS.CDSQ_FAMILIAS.state in [dsedit,dsinsert])
     then
       close;

    if (key = #27) and not (ActiveControl is TButton) then
        if DMGS.CDSQ_FAMILIAS.state in [dsedit,dsinsert]
          then
            DMGS.CDSQ_FAMILIAS.post;

end;

procedure TFAMILIAS.BSalirClick(Sender: TObject);
begin
    close;
    modalresult := mrOk;
end;
procedure TFAMILIAS.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if key=38 then CambiarControl(self,false);
    if key=40 then CambiarControl(self,true);
end;
procedure TFAMILIAS.REGISTRO1Click(Sender: TObject);
begin
   if (DMGS.CDSQ_FAMILIAS.state in [dsedit,dsinsert]) then
   begin
      primero1.enabled:=false;
      anterior1.enabled:=false;
      siguiente1.enabled:=false;
   end
   else
   begin
    primero1.enabled:=DMGS.CDSQ_FAMILIAS.bof=false;
    anterior1.enabled:=primero1.enabled;
    siguiente1.enabled:=DMGS.CDSQ_FAMILIAS.eof=false;
   end;
end;

procedure TFAMILIAS.PRIMERO1Click(Sender: TObject);
begin
   DMGS.CDSQ_FAMILIAS.first;
end;

procedure TFAMILIAS.ANTERIOR1Click(Sender: TObject);
begin
    DMGS.CDSQ_FAMILIAS.Prior;
end;

procedure TFAMILIAS.SIGUIENTE1Click(Sender: TObject);
begin
    DMGS.CDSQ_FAMILIAS.next;
end;

procedure TFAMILIAS.EstadoBotones;
begin
    PDatos.enabled:=DMGS.CDSQ_FAMILIAS.state in [dsedit,dsinsert];
    BAltas.enabled:=(DMGS.CDSQ_FAMILIAS.state=dsbrowse) or (DMGS.CDSQ_FAMILIAS.state=dsinactive);
    BListado.enabled:=(DMGS.CDSQ_FAMILIAS.state=dsbrowse) and (DMGS.CDSQ_FAMILIAS.RecordCount >0 );
    BConsultas.enabled:=(DMGS.CDSQ_FAMILIAS.state=dsbrowse) or (DMGS.CDSQ_FAMILIAS.state=dsinactive);
    BModificaciones.enabled:=(DMGS.CDSQ_FAMILIAS.state=dsbrowse)  and (DMGS.CDSQ_FAMILIAS.RecordCount >0 );//AND (DMGS.CDSQ_FAMILIASBORRADO.VALUE = 0);
    BBajas.enabled:=(DMGS.CDSQ_FAMILIAS.state=dsbrowse) and (DMGS.CDSQ_FAMILIAS.RecordCount >0 ) ;
    BPADRE.enabled:=(DMGS.CDSQ_FAMILIAS.state IN [DSEDIT,DSINSERT]) AND (NOT (DMGS.CDSQ_FAMILIASID_FAMILIA.IsNull) AND NOT (TRIM(DMGS.CDSQ_FAMILIASID_FAMILIA.ASSTRING) = ''))  ;
//    BPADREBORRAR.enabled:=(DMGS.CDSQ_FAMILIAS.state IN [DSEDIT,DSINSERT]) AND (NOT (DMGS.CDSQ_FAMILIASID_FAMILIA.IsNull) AND NOT (TRIM(DMGS.CDSQ_FAMILIASID_FAMILIA.ASSTRING) = ''))  ;
end;

procedure TFAMILIAS.BAltasClick(Sender: TObject);
begin
 dbedit1.Enabled:= true;
 WITH DMGS.CDSQ_FAMILIAS DO
  BEGIN
     IF NOT ACTIVE THEN
     BEGIN
        DMgs.VFAMILIAS.ID :='//';
        dmgs.vfamilias.ORDEN := Oordenfamilias;        
        OPEN;
     END;
     APPEND;
  END;
  dbedit1.setfocus;
end;
procedure TFAMILIAS.BBajasClick(Sender: TObject);
VAR AUX:STRING;
    NUM:INTEGER;
begin
    if (dmGS.CDSQ_FAMILIAS.recordcount>0) then
    begin
      dmgs.CDSQ_MAXIMO.Close;
      dmgs.CDSQ_MAXIMO.CommandText := 'SELECT COUNT(*) AS MAXIMO FROM FAMILIAS WHERE PADRE = '''+DMGS.CDSQ_FAMILIASID_FAMILIA.ASSTRING+''' ';
      DMGS.CDSQ_MAXIMO.Open;
      IF DMGS.CDSQ_MAXIMO.Fields[0].ISNULL THEN
          NUM :=0
      ELSE
          NUM := DMGS.CDSQ_MAXIMO.Fields[0].Value;
      dmgs.CDSQ_MAXIMO.close;
      IF NUM > 0 THEN
      BEGIN
         SHOWMESSAGE('NO SE PUEDE BORRAR LA FAMILIA PORQUE TIENE SUBFAMILIAS');
         EXIT;
      END;
      dmGS.CDSQ_FAMILIAS.delete;
      dmGS.CDSQ_FAMILIASafterpost(dmGS.CDSQ_FAMILIAS);
    end;
end;
procedure TFAMILIAS.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if DMGS.CDSQ_FAMILIAS.State in [dsedit,dsinsert] then
      DMGS.CDSQ_FAMILIAS.post;
  ACTION := CAFREE;
end;
procedure TFAMILIAS.BModificacionesClick(Sender: TObject);
begin
    if DMGS.CDSQ_FAMILIAS.recordcount>0 then
    begin
        dbedit1.Enabled := false;
        DMGS.CDSQ_FAMILIAS.edit;
        dbedit6.setfocus;
    end;
end;
procedure TFAMILIAS.DSFAMILIASStateChange(Sender: TObject);
begin
    IF NOT DBEDIT6.Enabled THEN
       DBEDIT6.Enabled := TRUE;
    EstadoBotones;
end;
procedure TFAMILIAS.FAMILIAS1Click(Sender: TObject);
begin
    altas1.enabled:=baltas.enabled;
    bajas1.enabled:=bbajas.enabled;
    consultas1.enabled:=bconsultas.enabled;
    modificaciones1.enabled:=bmodificaciones.enabled;
    listado1.enabled:=blistado.enabled;
end;

procedure TFAMILIAS.DSFAMILIASDataChange(Sender: TObject;
  Field: TField);
begin
  IF (DMGS.CDSQ_FAMILIAS.EOF) AND (NOT(DMGS.CDSQ_FAMILIAS.STATE IN [DSEDIT,DSINSERT])) THEN
  try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_FAMILIAS.GetNextPacket;
  except
  end;

  ESTADOBOTONES;

end;

procedure TFAMILIAS.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  IF DMGS.CDSQ_FAMILIAS.EOF  THEN
  try // para evitar el error de memoria bloqueada en el server.
    DMGS.CDSQ_FAMILIAS.GetNextPacket;
  except
  end;
end;

procedure TFAMILIAS.BPADREClick(Sender: TObject);
begin
    dsFAMILIAS.DataSet := nil;
    DLGFAMILIASAUX:=tDLGFAMILIASAUX.create(nil);
    IF DLGFAMILIASAUX.Showmodal= MROK THEN
    BEGIN
       IF DMGS.CDSQ_FAMILIASAUX.RecordCount > 0 THEN
       BEGIN

          DMGS.PADRE := DMGS.CDSQ_FAMILIASAUXCOD_FAMILIA.ASSTRING  ;
          DMGS.COD_FAMILIA := DMGS.CDSQ_FAMILIASAUXCOD_FAMILIA.ASSTRING ;
          DMGS.PROFUNDIDAD := DMGS.CDSQ_FAMILIASAUXPROFUNDIDAD.Value ;

          DMGS.CDSQ_FAMILIASPROFUNDIDAD.Value := DMGS.PROFUNDIDAD + 1;
          DMGS.CDSQ_FAMILIASCOD_FAMILIA.AsString := DMGS.COD_FAMILIA + DMGS.CDSQ_FAMILIASID_FAMILIA.ASSTRING;
          DMGS.CDSQ_FAMILIASPADRE.ASSTRING := DMGS.PADRE ;
          dmgs.cdsq_familiasdescripcion.AsString := dmgs.cdsq_familiasauxdescripcion.AsString ;
       END;
    END;
    DLGFAMILIASAUX.Free;
    DLGFAMILIASAUX := nil;
    dsFAMILIAS.dataset := DMGS.CDSQ_FAMILIAS;
end;

PROCEDURE tFAMILIAS.COMPROBARsubcuenta;

BEGIN
END;

procedure TFAMILIAS.DBEdit1Exit(Sender: TObject);
begin
  IF DMGS.CDSQ_FAMILIAS.State IN [DSEDIT,DSINSERT] THEN
     DMGS.CDSQ_FAMILIASCOD_FAMILIA.ASSTRING := DMGS.COD_FAMILIA + DMGS.CDSQ_FAMILIASID_FAMILIA.ASSTRING;
end;

procedure TFAMILIAS.BPADREBORRARClick(Sender: TObject);
begin
     DMGS.PADRE := ''  ;
     DMGS.COD_FAMILIA := '';
     DMGS.PROFUNDIDAD := 0;
     DMGS.CDSQ_FAMILIASPROFUNDIDAD.Value := DMGS.PROFUNDIDAD ;
     DMGS.CDSQ_FAMILIASCOD_FAMILIA.AsString := DMGS.COD_FAMILIA + DMGS.CDSQ_FAMILIASID_FAMILIA.ASSTRING;
     DMGS.CDSQ_FAMILIASPADRE.ASSTRING := DMGS.PADRE ;
end;

procedure TFAMILIAS.FormPaint(Sender: TObject);
begin
   pdatos.Left := 10 + (ClientWidth - ancho ) div 2 ;
end;

procedure TFAMILIAS.FormResize(Sender: TObject);
begin
   pdatos.Left := 10 + (ClientWidth - ancho ) div 2 ;
end;

procedure TFAMILIAS.DBImage1DblClick(Sender: TObject);
var
//  jpeg:tjpegimage;
  corriente:TmemoryStream;
  mybmp:tbitmap;
  EscalaX,EscalaY,Escala : single;
  Rectangulo : TRect;
begin
 IF (dmgs.cdsq_FAMILIAS.State IN [DSEDIT,DSINSERT])
 THEN
 BEGIN

  if OpenPictureDialog1.Execute then
  begin
     image5.Picture := nil;
     dbimage1.Picture := nil;
     image6.Picture := nil;
     image5.Picture.LoadFromFile(openpicturedialog1.FileName);
  end
  else
     exit;
  dmgs.cdsq_FAMILIASimagen.Clear;//porque sino pone una foto encima de otra
  EscalaX := 1.0;
  EscalaY := 1.0;
  if dbimage1.Width <  image5.Picture.Width then
    EscalaX := dbimage1.Width /  image5.Picture.Width ;

  if dbimage1.Height  <  image5.Picture.Height  then
    EscalaX := dbimage1.Height  /  image5.Picture.Height ;

  if EscalaY < EscalaX then Escala := EscalaY else Escala:= EscalaX;

  with Rectangulo do
  begin
    Right := Trunc(image5.Picture.Width * Escala);
    Bottom := Trunc(image5.Picture.Height * Escala);
    left:=0;
    top:=0;
  end;

  with image6.Picture.Bitmap do
  begin
     width := Rectangulo.Right;
     Height := Rectangulo.Bottom;
     Canvas.StretchDraw(Rectangulo,image5.Picture.Graphic)
  end;
  corriente := tmemorystream.Create;
  image6.Picture.Bitmap.SaveToStream(corriente);
  dmgs.cdsq_FAMILIASimagen.loadfromStream(corriente);
  CORRIENTE.Free;
END;
end;
procedure TFAMILIAS.SpeedButton3Click(Sender: TObject);
begin
 IF (dmgs.cdsq_FAMILIAS.State IN [DSEDIT,DSINSERT]) THEN
     dmgs.cdsq_FAMILIASimagen.Clear;
end;

procedure TFAMILIAS.DBCheckBox4Click(Sender: TObject);
begin
 IF (dmgs.cdsq_FAMILIAS.State IN [DSEDIT,DSINSERT]) THEN
   if dbcheckbox4.Checked then
   begin
      dmgs.cdsq_familiasaordendescripcion.Value  := 0;
      dmgs.cdsq_familiasaordenposicionuso.Value  := 0;
   end
{   else
   begin
      dbcheckbox3.Checked := true;
      dbcheckbox6.Checked := false;
   end;
}
end;

procedure TFAMILIAS.DBCheckBox3Click(Sender: TObject);
begin
 IF (dmgs.cdsq_FAMILIAS.State IN [DSEDIT,DSINSERT]) THEN
   if dbcheckbox3.Checked then
   begin
      dmgs.cdsq_familiasaordenposicion.Value  := 0;
      dmgs.cdsq_familiasaordenposicionuso.Value  := 0;
   end
{   else
   begin
      dbcheckbox6.Checked := true;
      dbcheckbox4.Checked := false;
   end;
}
end;

procedure TFAMILIAS.DBCheckBox6Click(Sender: TObject);
begin
 IF (dmgs.cdsq_FAMILIAS.State IN [DSEDIT,DSINSERT]) THEN
   if dbcheckbox6.Checked then
   begin
      dmgs.cdsq_familiasaordendescripcion.Value  := 0;
      dmgs.cdsq_familiasaordenposicion.Value  := 0;
   end
{   else
   begin
      dbcheckbox4.Checked := true;
      dbcheckbox3.Checked := false;
   end;
}
end;

procedure TFAMILIAS.DBEdit6Exit(Sender: TObject);
begin
  IF DMGS.CDSQ_FAMILIAS.STATE IN [DSINSERT] THEN
     DMGS.CDSQ_FAMILIASDESCRIPCIONBOTON.ASSTRING := DMGS.CDSQ_FAMILIASDESCRIPCION.ASSTRING;
end;

procedure TFAMILIAS.AordenExecute(Sender: TObject);
begin
    DSFAMILIAS.DataSet := nil;
    ORDENFAMILIAS:= tORDENFAMILIAS.create(nil);
//    ORDENFAMILIAS.CerrarDataset := false;
    ORDENFAMILIAS.Showmodal;
    ORDENFAMILIAS.Free;
    ORDENFAMILIAS := nil;
    IF NOT DMGS.CDSQ_FAMILIAS.ACTIVE THEN
       ESTADOBOTONES;// PARA CUANDO SE PULSA CANCELAR
    DSFAMILIAS.dataset := DMGS.CDSQ_FAMILIAS;
end;


procedure TFAMILIAS.OrdenadoPorIDFAMILIA1Click(Sender: TObject);
begin


   with DMGS.CDSQ_FAMILIAS do
   BEGIN
      Close;
      DMGS.VFAMILIAS.ID :='%';
      dmgs.vfamilias.ORDEN := ' order by id_familia ASC,cod_familia ASC,descripcion ASC ';;
      Open;
    END;
    WHILE NOT DMGS.CDSQ_FAMILIAS.EOF DO
    BEGIN
      DMGS.CDSQ_FAMILIAS.Last;

      IF (DMGS.CDSQ_FAMILIAS.EOF) AND (NOT(DMGS.CDSQ_FAMILIAS.STATE IN [DSEDIT,DSINSERT])) THEN
      try // para evitar el error de memoria bloqueada en el server.
         DMGS.CDSQ_FAMILIAS.GetNextPacket;
      except
      end;
    END;
    DMGS.CDSQ_FAMILIAS.First;

//    bookmark:= dmgs.cdsq_familias.GetBookmark ;
    DSFAMILIAS.DataSet := NIL; // HACE FALTA
    LISTADOS := tLISTADOS.Create(nil);
    PREVIO := TPREVIO.Create(NIL);
    LISTADOS.FRDB.DataSet := DMGS.CDSQ_FAMILIAS;
 //   Path := ExtractFilePath(ParamStr(0));
    LISTADOS.frReport1.LoadFromFile(dmgs.Path + 'LISTADOS\FAMILIAS.frf');
    LISTADOS.frReport1.Preview := PREVIO.frPreview1;
    LISTADOS.frReport1.ShowReport;
    PREVIO.ShowModal;
    DSFAMILIAS.DataSet := DMGS.CDSQ_FAMILIAS;
    LISTADOS.Free;
    LISTADOS := NIL;
    PREVIO.FREE;
    PREVIO := NIL;
//    dmgs.cdsq_familias.GotoBookmark(bookmark);
//    dmgs.cdsq_familias.FreeBookmark (bookmark);
end;

procedure TFAMILIAS.OrdenadoPorCODFAMILIA1Click(Sender: TObject);
begin

   with DMGS.CDSQ_FAMILIAS do
   BEGIN
      Close;
      DMGS.VFAMILIAS.ID :='%';
      dmgs.vfamilias.ORDEN := ' order by cod_familia ASC,id_familia ASC, descripcion ASC ';;
      Open;
    END;
    WHILE NOT DMGS.CDSQ_FAMILIAS.EOF DO
    BEGIN
      DMGS.CDSQ_FAMILIAS.Last;

      IF (DMGS.CDSQ_FAMILIAS.EOF) AND (NOT(DMGS.CDSQ_FAMILIAS.STATE IN [DSEDIT,DSINSERT])) THEN
      try // para evitar el error de memoria bloqueada en el server.
         DMGS.CDSQ_FAMILIAS.GetNextPacket;
      except
      end;
    END;
    DMGS.CDSQ_FAMILIAS.First;

//    bookmark:= dmgs.cdsq_familias.GetBookmark ;
    DSFAMILIAS.DataSet := NIL; // HACE FALTA
    LISTADOS := tLISTADOS.Create(nil);
    PREVIO := TPREVIO.Create(NIL);
    LISTADOS.FRDB.DataSet := DMGS.CDSQ_FAMILIAS;
 //   Path := ExtractFilePath(ParamStr(0));
    LISTADOS.frReport1.LoadFromFile(dmgs.Path + 'LISTADOS\FAMILIAS.frf');
    LISTADOS.frReport1.Preview := PREVIO.frPreview1;
    LISTADOS.frReport1.ShowReport;
    PREVIO.ShowModal;
    DSFAMILIAS.DataSet := DMGS.CDSQ_FAMILIAS;
    LISTADOS.Free;
    LISTADOS := NIL;
    PREVIO.FREE;
    PREVIO := NIL;
//    dmgs.cdsq_familias.GotoBookmark(bookmark);
//    dmgs.cdsq_familias.FreeBookmark (bookmark);
end;

end.
