unit fplanes;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ZAbstractDataset, ZDataset, Data.DB,
  ZAbstractRODataset, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids,
  Vcl.DBCtrls, Vcl.ComCtrls, shellapi;

type
  Tplanes = class(TForm)
    Panel9: TPanel;
    btpcancelar: TButton;
    btpmodificar: TButton;
    btpborrar: TButton;
    btpnuevo: TButton;
    btpguardar: TButton;
    btpcopiar: TButton;
    dsqcursos: TDataSource;
    qcursos: TZReadOnlyQuery;
    qplan: TZQuery;
    qcursosid: TIntegerField;
    qcursoside: TIntegerField;
    qcursosnombre: TWideStringField;
    qcursosfechainicio: TDateField;
    qcursosfechafin: TDateField;
    qcursosprecio_material: TFloatField;
    qcursosactivo: TIntegerField;
    qcursosprecio_curso: TFloatField;
    qcursosprecio_mes: TFloatField;
    qcursosanyo_escolar: TWideStringField;
    combocursos: TDBLookupComboBox;
    Label1: TLabel;
    dsqplan: TDataSource;
    qid: TZReadOnlyQuery;
    Panel1: TPanel;
    qidsesion: TLargeintField;
    qplanide: TIntegerField;
    qplanidc: TIntegerField;
    qplansesion: TIntegerField;
    qplanpaginas: TWideStringField;
    qplanrecursos: TWideMemoField;
    qplantrabajos: TWideMemoField;
    qplannotas_profesor: TWideMemoField;
    qplanguia_profesor: TWideMemoField;
    Label2: TLabel;
    qplanactividad: TWideStringField;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DBGrid1: TDBGrid;
    DBMemo1: TDBMemo;
    DBMemo2: TDBMemo;
    DBMemo3: TDBMemo;
    DBMemo4: TDBMemo;
    Panel2: TPanel;
    DBMemo5: TDBMemo;
    Label7: TLabel;
    qidrecursos: TZReadOnlyQuery;
    qrecursos: TZQuery;
    dsqrecursos: TDataSource;
    qidrecursosid: TLargeintField;
    qrecursosid: TIntegerField;
    qrecursoside: TIntegerField;
    qrecursosidc: TIntegerField;
    qrecursosdescripcion: TWideStringField;
    qrecursosubicacion: TWideStringField;
    Panel3: TPanel;
    Label8: TLabel;
    DBGrid2: TDBGrid;
    Button1: TButton;
    qrecursosarchivo: TWideStringField;
    Button2: TButton;
    archivos: TOpenDialog;
    Memo1: TMemo;
    Button3: TButton;
    DBMemo6: TDBMemo;
    Label9: TLabel;
    qplanfechaplan: TDateField;
    qrecursossesion: TIntegerField;
    procedure FormShow(Sender: TObject);
    procedure dsqcursosDataChange(Sender: TObject; Field: TField);
    procedure qplanBeforePost(DataSet: TDataSet);
    procedure qplanBeforeDelete(DataSet: TDataSet);
    procedure qplanBeforeOpen(DataSet: TDataSet);
    procedure btpnuevoClick(Sender: TObject);
    procedure qplanAfterInsert(DataSet: TDataSet);
    procedure qidBeforeOpen(DataSet: TDataSet);
    procedure btpborrarClick(Sender: TObject);
    procedure btpmodificarClick(Sender: TObject);
    procedure btpguardarClick(Sender: TObject);
    procedure btpcancelarClick(Sender: TObject);
    procedure dsqplanStateChange(Sender: TObject);
    procedure qrecursosAfterInsert(DataSet: TDataSet);
    procedure qidrecursosBeforeOpen(DataSet: TDataSet);
    procedure qrecursosBeforeDelete(DataSet: TDataSet);
    procedure qrecursosBeforePost(DataSet: TDataSet);
    procedure qrecursosBeforeOpen(DataSet: TDataSet);
    procedure Button1Click(Sender: TObject);
    procedure btpcopiarClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure dsqplanDataChange(Sender: TObject; Field: TField);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  planes: Tplanes;
  pcentro,pcurso:integer;
implementation

{$R *.dfm}

uses DATOS, fdlgcopiarcurso;

procedure Tplanes.btpborrarClick(Sender: TObject);
begin
  qplan.Delete;
end;

procedure Tplanes.btpcancelarClick(Sender: TObject);
begin
  qplan.Cancel;
end;

procedure Tplanes.btpcopiarClick(Sender: TObject);
begin
    dlgcopiarcurso := Tdlgcopiarcurso.Create(nil);
    try
      dlgcopiarcurso.oldcurso :=qcursosid.AsInteger;
      dlgcopiarcurso.showmodal();
    finally
      dlgcopiarcurso.Free;
    end;
end;

procedure Tplanes.btpguardarClick(Sender: TObject);
begin
 qplan.Post;
end;

procedure Tplanes.btpmodificarClick(Sender: TObject);
begin
  qplan.Edit;
end;

procedure Tplanes.btpnuevoClick(Sender: TObject);
begin
  qplan.Append;
  dbgrid1.SetFocus;
  dbgrid1.SelectedIndex:=0;
end;

procedure Tplanes.Button1Click(Sender: TObject);
var  archivo,ubicacion:string;
begin
    archivo:=qrecursosarchivo.AsString;
    ubicacion:=qrecursosubicacion.AsString;
    deletefile('c:\formagest\tmp\*.*');
    CopyFile(PChar(ubicacion+'\'+archivo), PChar('c:\formagest\tmp\'+archivo), false);
    ShellExecute(Handle,nil,PChar('c:\formagest\tmp\'+archivo),'','',SW_SHOWNORMAL);
end;

procedure Tplanes.Button2Click(Sender: TObject);
var vdesc,vubicacion,varchivo:string;
    x:integer;
begin
  if archivos.Execute then
  begin
    try
    finally
      if archivos.Files.Count = 1 then
      begin
        vubicacion := ExtractFilePath(archivos.FileName);
        varchivo := extractfilename(archivos.FileName);
        vdesc := extractfilename(archivos.FileName);
        qrecursos.Append;
        qrecursosdescripcion.Value:=vdesc;
        qrecursosubicacion.Value:=vubicacion;
        qrecursosarchivo.Value:=varchivo;
        qrecursos.Post;
      end
      else
      begin
        Memo1.Clear;
        Memo1.Lines.AddStrings(archivos.Files);
        for X := 0 to archivos.Files.Count - 1 do
        begin
           vubicacion := ExtractFilePath(Memo1.Lines[X]);
           varchivo := Extractfilename(Memo1.Lines[X]);
           vdesc := Extractfilename(Memo1.Lines[X]);
           qrecursos.Append;
           qrecursosdescripcion.Value:=vdesc;
           qrecursosubicacion.Value:=vubicacion;
           qrecursosarchivo.Value:=varchivo;
           qrecursos.Post;
        end;
      end;
    end;
  end;
end;

procedure Tplanes.Button3Click(Sender: TObject);
begin
    qrecursos.Delete;
end;

procedure Tplanes.dsqcursosDataChange(Sender: TObject; Field: TField);
begin
  pcentro:=qcursoside.AsInteger;
  pcurso:=qcursosid.AsInteger;
  qplan.Close;
  qplan.Open;
  qrecursos.Close;
  qrecursos.Open;
end;

procedure Tplanes.dsqplanDataChange(Sender: TObject; Field: TField);
begin
   qrecursos.Close;
   qrecursos.Open;
end;

procedure Tplanes.dsqplanStateChange(Sender: TObject);
begin
    if qplan.State in [dsedit,dsinsert] then
    begin
       btpnuevo.enabled:=false;
       btpborrar.enabled:=false;
       btpmodificar.enabled:=false;
       btpguardar.enabled:=true;
       btpcancelar.enabled:=true;
    end;
    if qplan.State in [dsbrowse] then
    begin
       btpnuevo.enabled:=true;
       btpborrar.enabled:=true;
       btpmodificar.enabled:=true;
       btpguardar.enabled:=false;
       btpcancelar.enabled:=false;
    end;
end;

procedure Tplanes.FormShow(Sender: TObject);
begin
   qcursos.Open;
   combocursos.KeyValue:=qcursosid.AsInteger;
end;

procedure Tplanes.qidBeforeOpen(DataSet: TDataSet);
begin
  qid.Prepare;
  qid.ParamByName('CENTRO').AsInteger:=pcentro;
  qid.ParamByName('CURSO').AsInteger:=pcurso;
end;

procedure Tplanes.qidrecursosBeforeOpen(DataSet: TDataSet);
begin
  qidrecursos.Prepare;
  qidrecursos.ParamByName('CENTRO').AsInteger:=pcentro;
  qidrecursos.ParamByName('CURSO').AsInteger:=pcurso;
end;

procedure Tplanes.qplanAfterInsert(DataSet: TDataSet);
begin
  qid.Close;
  qid.Open;
  qplanide.Value:=pcentro;
  qplanidc.Value:=pcurso;
  qplansesion.Value:=qidsesion.AsInteger;
end;

procedure Tplanes.qplanBeforeDelete(DataSet: TDataSet);
begin
   case dm.PedirConfirmacion('¿Confirma que desea borrar esta sesión?',true,true,false) of
        mrno:Abort;
   end;
end;

procedure Tplanes.qplanBeforeOpen(DataSet: TDataSet);
begin
  qplan.Prepare;
  qplan.ParamByName('CENTRO').AsInteger:=pcentro;
  qplan.ParamByName('CURSO').AsInteger:=pcurso;
end;

procedure Tplanes.qplanBeforePost(DataSet: TDataSet);
var x:integer;
begin
    if qplan.state=dsinsert then x:=dm.PedirConfirmacion('¿Confirma que desea dar de alta esta sesión?',true,true,true)
                                     else x:=dm.PedirConfirmacion('¿Confirma que desea modificar esta sesión?',true,true,true);
    case x of
        mrno: begin
                 qplan.cancel;
                 abort;
              end;
        mrcancel:BEGIN
                 abort;
                 END;
    end;
end;

procedure Tplanes.qrecursosAfterInsert(DataSet: TDataSet);
begin
  qidrecursos.Close;
  qidrecursos.Open;
  qrecursoside.Value:=pcentro;
  qrecursosidc.Value:=pcurso;
  qrecursossesion.Value:=qplansesion.AsInteger;
  qrecursosid.Value:=qidrecursosid.AsInteger;
end;

procedure Tplanes.qrecursosBeforeDelete(DataSet: TDataSet);
begin
   case dm.PedirConfirmacion('¿Confirma que desea borrar este recurso?',true,true,false) of
        mrno:Abort;
   end;
end;

procedure Tplanes.qrecursosBeforeOpen(DataSet: TDataSet);
begin
  qrecursos.Prepare;
  qrecursos.ParamByName('CENTRO').AsInteger:=pcentro;
  qrecursos.ParamByName('CURSO').AsInteger:=pcurso;
  qrecursos.ParamByName('SESION').AsInteger:=qplansesion.AsInteger;
end;

procedure Tplanes.qrecursosBeforePost(DataSet: TDataSet);
var x:integer;
begin
    if qrecursos.state=dsinsert then x:=dm.PedirConfirmacion('¿Confirma que desea dar de alta este recurso?',true,true,true)
                                     else x:=dm.PedirConfirmacion('¿Confirma que desea modificar este recurso?',true,true,true);
    case x of
        mrno: begin
                 qrecursos.cancel;
                 abort;
              end;
        mrcancel:BEGIN
                 abort;
                 END;
    end;
end;

end.
