Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cómo bloquear un documento (https://www.clubdelphi.com/foros/showthread.php?t=52031)

Leviatan 08-01-2008 16:32:24

Cómo bloquear un documento
 
Hola amigos:

Les planteo el siguiente código:

Código Delphi [-]
procedure TForm2.Button3Click(Sender: TObject);
var
  Blob: TStream;
begin
  Screen.Cursor := crHourGlass;

  with ADOQuery1 do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from tabla');
    Open;
  end;

  ADOQuery1.Edit;
  blob := ADOQuery1.CreateBlobStream(ADOQuery1.FieldByName('archivo'), bmRead);

  try
    blob.Seek(0, soFromBeginning);

    Ruta := 'C:\temp\' + ADOQuery1['nombre_archivo'];

    with TFileStream.Create(Ruta, fmCreate) do
      try
        CopyFrom(blob, blob.Size);
      finally
        Free
      end;
      ShellExecute(0, 'open', PChar(Ruta), nil, nil, SW_SHOWNORMAL);
  finally
    blob.Free
  end;

  Screen.Cursor := crDefault;

end;

Aquí lo que hago es recuperar un archivo guardado en una base de datos en una columna de tipo "Image" de SQL Server, luego crearlo en un directorio temporal y luego mostrarlo con la aplicación correcta.

La consulta es la siguiente: si por ejemplo "Juan Pérez" creó el documento entonces debería poder leer y escribir en él. En cambio "Juan González" solamente debería poder leer el archivo y no escribir en él. ¿Cómo puedo lograr eso?

Gracias anticipadas.

Leviatan 08-01-2008 19:57:03

Bloqueo de documento solucionado, ahora el problema es evitar la impresión
 
Encontré solución a cómo bloquear un documento a pesar de que nadie me haya respondido :D. Quizás a alguien le interese la misma:

procedure TForm3.Button1Click(Sender: TObject);
var
Handle: Integer;
Ruta: String;
begin
Ruta := 'C:\Documents and Settings\NGRI\Escritorio\Archivo.doc';
Handle := FileOpen(Ruta, fmShareDenyWrite);
ShellExecute(Handle, 'open', PChar(Ruta), nil, nil, SW_SHOWNORMAL);
end;

Ahora el problema es el siguiente:

¿Cómo puedo hacer para evitar que el usuario, que no es el creador original, imprima el documento?


Ojalá ahora sí pueda conseguir una respuesta :)

Saludos.


La franja horaria es GMT +2. Ahora son las 05:04:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi