Tecsitel_FactuGES2/Source/GUIBase/uViewDocumentos.pas
david f3f230e414 - Actualización a DevExpress x.38 sin el módulo de skins.
- Limpieza de código para NO usar skins de DevExpress.

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@541 0c75b7a4-871f-7646-8a2f-f78d34cc349f
2008-08-27 16:48:20 +00:00

217 lines
6.5 KiB
ObjectPascal
Raw Blame History

unit uViewDocumentos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, cxControls,
cxContainer, cxListBox, ActnList, TB2Item, TBX, TB2Dock, TB2Toolbar;
type
TfrViewDocumentos = class(TfrViewBase)
ListaDocumentos: TcxListBox;
EditorActionList: TActionList;
TBXDock: TTBXDock;
tbxMain: TTBXToolbar;
TBXItem2: TTBXItem;
actAnadir: TAction;
actModificar: TAction;
actEliminar: TAction;
TBXItem1: TTBXItem;
TBXItem3: TTBXItem;
actEliminarTodo: TAction;
TBXItem4: TTBXItem;
actActualizarServidor: TAction;
TBXItem5: TTBXItem;
procedure actAnadirExecute(Sender: TObject);
procedure actModificarExecute(Sender: TObject);
procedure actEliminarExecute(Sender: TObject);
procedure actEliminarTodoExecute(Sender: TObject);
procedure actActualizarServidorExecute(Sender: TObject);
procedure CustomViewCreate(Sender: TObject);
procedure CustomViewDestroy(Sender: TObject);
private
FDirectorio: Variant;
function GetDirectorio: Variant;
function DarFicherosSeleccionados: TStringList;
protected
FListaFicheros: TStringList;
property Directorio: Variant read GetDirectorio;
//Son los metodos que se sobreescribiran en la vista hija
procedure Sincronizar; virtual; abstract;
function RecuperarFicheroServidor(const NombreFichero: String; const DirectorioDestino: String): Boolean; virtual; abstract;
procedure RefrescarVisualizador; virtual;
public
property ListaFicheros: TStringList read FListaFicheros;
end;
var
frViewDocumentos: TfrViewDocumentos;
implementation
{$R *.dfm}
uses
uSistemaFunc, ShellAPI, uDialogUtils;
procedure TfrViewDocumentos.actActualizarServidorExecute(Sender: TObject);
begin
inherited;
Sincronizar;
end;
procedure TfrViewDocumentos.actAnadirExecute(Sender: TObject);
var
openDialog : TOpenDialog;
ANombreFichero : String;
i : Integer;
begin
openDialog := TOpenDialog.Create(self);
try
// Set up the starting directory to be the current one
// openDialog.InitialDir := GetCurrentDir;
// Only allow existing files to be selected
// openDialog.Options := [ofFileMustExist];
// Allow multiple files to be selected - of any type
openDialog.Options := [ofAllowMultiSelect];
// Allow only .dpr and .pas files to be selected
// openDialog.Filter := 'Delphi project files|*.dpr|Delphi pascal files|*.pas';
// Select pascal files as the starting filter type
// openDialog.FilterIndex := 2;
if openDialog.Execute then
begin
for i:=0 to openDialog.Files.Count - 1 do
begin
ANombreFichero := openDialog.Files.Strings[i];
if Length(ANombreFichero) > 0 then
CopiarFichero(ANombreFichero, (Directorio + ExtractFileName(ANombreFichero)));
//Lo a<>adimos a la lista de documentos local
FListaFicheros.Add(ExtractFileName(ANombreFichero))
end;
end;
finally
openDialog.Free;
//Now, We compact the process memory:
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
RefrescarVisualizador;
end;
end;
procedure TfrViewDocumentos.actEliminarExecute(Sender: TObject);
var
i, j: Integer;
FicherosSeleccionados: TStringList;
ANombreFichero: String;
begin
FicherosSeleccionados := DarFicherosSeleccionados;
try
for i := 0 to FicherosSeleccionados.Count - 1 do
begin
//Buscamos si existen fisicamente y si es as<61> los eliminamos
if FileExists(FicherosSeleccionados.Strings[i]) then
if not DeleteFile(FicherosSeleccionados.Strings[i]) then
Application.MessageBox('No se pudo borrar el fichero', 'Error', MB_ICONEXCLAMATION);
//Lo quitamos de la propiedad donde guardamos lista de documentos
ANombreFichero := ExtractFileName(FicherosSeleccionados.Strings[i]);
if FListaFicheros.Find(ANombreFichero, j) then
FListaFicheros.Delete(j);
end;
finally
FreeAndNil(FicherosSeleccionados);
RefrescarVisualizador;
end;
end;
procedure TfrViewDocumentos.actEliminarTodoExecute(Sender: TObject);
begin
Deltree(Directorio, True);
FListaFicheros.Clear;
FDirectorio := Null;
RefrescarVisualizador;
end;
procedure TfrViewDocumentos.actModificarExecute(Sender: TObject);
var
i: Integer;
FicherosSeleccionados: TStringList;
begin
FicherosSeleccionados := DarFicherosSeleccionados;
try
for i := 0 to FicherosSeleccionados.Count - 1 do
if FileExists(FicherosSeleccionados.Strings[i]) then
begin
if ShellExecute(Handle, nil, pchar(FicherosSeleccionados.Strings[i]),
nil, nil, SW_SHOWNORMAL) <= 32 then
Application.MessageBox('No se pudo editar el fichero', 'Error', MB_ICONEXCLAMATION);
end
else
begin
if not RecuperarFicheroServidor(ExtractFileName(FicherosSeleccionados.Strings[i]), ExtractFilePath(FicherosSeleccionados.Strings[i])) then
Application.MessageBox('No se pudo RecuperarFicheroServidor', 'Error', MB_ICONEXCLAMATION);
if ShellExecute(Handle, nil, pchar(FicherosSeleccionados.Strings[i]),
nil, nil, SW_SHOWNORMAL) <= 32 then
Application.MessageBox('No se pudo editar el fichero', 'Error', MB_ICONEXCLAMATION);
end;
finally
FreeAndNil(FicherosSeleccionados)
end;
end;
procedure TfrViewDocumentos.CustomViewCreate(Sender: TObject);
begin
inherited;
FDirectorio := Null;
FListaFicheros := Nil;
end;
procedure TfrViewDocumentos.CustomViewDestroy(Sender: TObject);
begin
FDirectorio := Null;
FreeAndNil(FListaFicheros);
inherited;
end;
function TfrViewDocumentos.DarFicherosSeleccionados: TStringList;
var
i: Integer;
begin
Result := TStringList.Create;
for i := 0 to ListaDocumentos.Count - 1 do
begin
if ListaDocumentos.Selected[i] then
Result.Add(Directorio + ListaDocumentos.Items[i]);
end;
end;
function TfrViewDocumentos.GetDirectorio: Variant;
begin
if VarIsNull(FDirectorio) then
begin
FDirectorio := DarDirectorioTemporal;
if not CreateDir(FDirectorio) then
raise Exception.Create('ERROR: No se ha podido crear el fichero temporal GetDirectorio');
end;
Result := FDirectorio;
end;
procedure TfrViewDocumentos.RefrescarVisualizador;
begin
ListaDocumentos.Clear;
ListaDocumentos.Items.AddStrings(FListaFicheros);
end;
end.