git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES/trunk@5 9a1d36f3-7752-2d40-8ccb-50eb49674c68
193 lines
5.9 KiB
ObjectPascal
193 lines
5.9 KiB
ObjectPascal
unit uViewDocumentosAsociados;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, uViewBase, ComCtrls, ShlObj, cxShellCommon, Menus, cxControls, DB,
|
||
cxContainer, cxShellListView, ExtCtrls, ActnList, StdCtrls,
|
||
JvComponent, JvChangeNotify, uBizDocumentosAsociados, JvComponentBase;
|
||
|
||
type
|
||
|
||
IViewDocumentosAsociados = interface(IViewBase)
|
||
['{38C44437-BAC5-4155-A737-4A448062653C}']
|
||
function GetGestorDocumentos: TGestorDocumentos;
|
||
procedure SetGestorDocumentos(const Value: TGestorDocumentos);
|
||
property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write
|
||
SetGestorDocumentos;
|
||
end;
|
||
|
||
TfrViewDocumentosAsociados = class(TfrViewBase, IViewDocumentosAsociados)
|
||
Panel10: TPanel;
|
||
Panel11: TPanel;
|
||
explo: TcxShellListView;
|
||
pnlBarraDocumentos: TPanel;
|
||
OpenDialog1: TOpenDialog;
|
||
ActionList1: TActionList;
|
||
actAnadirDocumento: TAction;
|
||
actElliminarDocumento: TAction;
|
||
actAbrirDocumento: TAction;
|
||
Button1: TButton;
|
||
Button2: TButton;
|
||
GridPopupMenu: TPopupMenu;
|
||
Modificar1: TMenuItem;
|
||
N1: TMenuItem;
|
||
Nuevo1: TMenuItem;
|
||
Previsualizar1: TMenuItem;
|
||
JvChangeNotify1: TJvChangeNotify;
|
||
procedure actAnadirDocumentoExecute(Sender: TObject);
|
||
procedure actElliminarDocumentoExecute(Sender: TObject);
|
||
procedure actAbrirDocumentoExecute(Sender: TObject);
|
||
procedure actAbrirDocumentoUpdate(Sender: TObject);
|
||
procedure actElliminarDocumentoUpdate(Sender: TObject);
|
||
procedure JvChangeNotify1ChangeNotify(Sender: TObject; Dir: String;
|
||
Actions: TJvChangeActions);
|
||
procedure CustomViewDestroy(Sender: TObject);
|
||
procedure exploDblClick(Sender: TObject);
|
||
private
|
||
FGestorDocumentos: TGestorDocumentos;
|
||
function GetGestorDocumentos: TGestorDocumentos;
|
||
procedure SetGestorDocumentos(const Value: TGestorDocumentos);
|
||
|
||
procedure HabilitarDocumentos;
|
||
procedure DeshabilitarDocumentos;
|
||
|
||
public
|
||
property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write SetGestorDocumentos;
|
||
end;
|
||
|
||
var
|
||
frViewDocumentosAsociados: TfrViewDocumentosAsociados;
|
||
|
||
implementation
|
||
{$R *.dfm}
|
||
|
||
uses ShellApi, uSysFunc;
|
||
|
||
procedure TfrViewDocumentosAsociados.actAnadirDocumentoExecute(Sender: TObject);
|
||
var
|
||
FicheroOrigen : String;
|
||
i : Integer;
|
||
begin
|
||
if OpenDialog1.Execute then
|
||
begin
|
||
for i:=0 to OpenDialog1.Files.Count - 1 do
|
||
begin
|
||
FicheroOrigen := OpenDialog1.Files.Strings[i];
|
||
if not (length(trim(FicheroOrigen))=0) then
|
||
if not FGestorDocumentos.AnadirDocumento(FicheroOrigen) then
|
||
raise Exception.Create('Error al a<>adir el documento');
|
||
end;
|
||
end;
|
||
|
||
Explo.Root.CustomPath := Explo.Root.CustomPath;
|
||
end;
|
||
|
||
procedure TfrViewDocumentosAsociados.actElliminarDocumentoExecute(Sender: TObject);
|
||
var
|
||
i : Integer;
|
||
cadena: String;
|
||
begin
|
||
if (Application.MessageBox('<27>Desea eliminar los documentos seleccionados?', 'Atenci<63>n', MB_YESNO) = IDYES) then
|
||
begin
|
||
for i:=0 to explo.InnerListView.Items.Count - 1 do
|
||
begin
|
||
if explo.InnerListView.Items[i].Selected then
|
||
begin
|
||
cadena := GetPidlName(explo.GetItemAbsolutePIDL(i));
|
||
if not SysUtils.DeleteFile(cadena) then
|
||
raise Exception.Create('Error al eliminar el documento');
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
Explo.Root.CustomPath := Explo.Root.CustomPath;
|
||
end;
|
||
|
||
procedure TfrViewDocumentosAsociados.actAbrirDocumentoExecute(Sender: TObject);
|
||
var
|
||
FileHandle : Integer;
|
||
cadena : String;
|
||
begin
|
||
if explo.InnerListView.SelCount <> 0 then
|
||
begin
|
||
cadena := GetPidlName(explo.GetItemAbsolutePIDL(explo.InnerListView.ItemFocused.Index));
|
||
ShellExecute(Handle, 'open', PAnsiChar(cadena), nil, nil, SW_SHOWNORMAL);
|
||
end;
|
||
end;
|
||
|
||
procedure TfrViewDocumentosAsociados.actAbrirDocumentoUpdate(Sender: TObject);
|
||
begin
|
||
(Sender as TAction).Enabled := explo.InnerListView.SelCount <> 0;
|
||
end;
|
||
|
||
procedure TfrViewDocumentosAsociados.actElliminarDocumentoUpdate(Sender: TObject);
|
||
begin
|
||
(Sender as TAction).Enabled := explo.InnerListView.SelCount <> 0;
|
||
end;
|
||
|
||
function TfrViewDocumentosAsociados.GetGestorDocumentos: TGestorDocumentos;
|
||
begin
|
||
Result := FGestorDocumentos;
|
||
end;
|
||
|
||
procedure TfrViewDocumentosAsociados.SetGestorDocumentos(const Value: TGestorDocumentos);
|
||
begin
|
||
FGestorDocumentos := Value;
|
||
|
||
if Assigned(FGestorDocumentos) then
|
||
begin
|
||
DeshabilitarDocumentos;
|
||
FGestorDocumentos.HabilitarDirectorio;
|
||
HabilitarDocumentos;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrViewDocumentosAsociados.DeshabilitarDocumentos;
|
||
begin
|
||
JvChangeNotify1.Active := False;
|
||
JvChangeNotify1.Notifications.Clear;
|
||
explo.Enabled := False;
|
||
explo.Options.ShowNonFolders := False;
|
||
explo.Root.CustomPath := FGestorDocumentos.RootDocumentos;
|
||
end;
|
||
|
||
procedure TfrViewDocumentosAsociados.HabilitarDocumentos;
|
||
begin
|
||
explo.Options.ShowNonFolders := True;
|
||
explo.Root.CustomPath := FGestorDocumentos.darRutaDocumentos;
|
||
JvChangeNotify1.Notifications.Clear;
|
||
with JvChangeNotify1.Notifications.Add do
|
||
begin
|
||
Actions := [caChangeFileName, caChangeDirName];
|
||
Directory := explo.Root.CustomPath;
|
||
end;
|
||
JvChangeNotify1.Active := True;
|
||
explo.Enabled := True;
|
||
end;
|
||
|
||
procedure TfrViewDocumentosAsociados.JvChangeNotify1ChangeNotify(
|
||
Sender: TObject; Dir: String; Actions: TJvChangeActions);
|
||
begin
|
||
Explo.Root.CustomPath := Explo.Root.CustomPath;
|
||
end;
|
||
|
||
procedure TfrViewDocumentosAsociados.CustomViewDestroy(Sender: TObject);
|
||
begin
|
||
//Eliminaremos el directorio si no tiene documentos, solo tendremos direcctorios
|
||
//en el caso que el presupuesto tenga documentos asociados
|
||
RemoveDir(FGestorDocumentos.darRutaDocumentos);
|
||
FGestorDocumentos := NIL;
|
||
|
||
inherited;
|
||
end;
|
||
|
||
procedure TfrViewDocumentosAsociados.exploDblClick(Sender: TObject);
|
||
begin
|
||
inherited;
|
||
actAbrirDocumento.Execute;
|
||
end;
|
||
|
||
end.
|