Ver Mensaje Individual
  #1  
Antiguo 11-02-2007
Avatar de Anunakis
Anunakis Anunakis is offline
Miembro
 
Registrado: abr 2004
Posts: 37
Reputación: 0
Anunakis Va por buen camino
Question Cargar en un TImagen que está en otro modulo

Hola a todos,

os comento mi problema haber si me podeis ayudar:

tengo una funcion en el modulo de datos que carga una imagen de la base de datos, os pongo el codigo:
Código Delphi [-]
function TMMaestros.CargarFoto(Tabla, CodTabla, Titulo: String): TGraphic;
var
StrSQL: String;
Grafico : TGraphic;
Stream : TStream;
begin
Result := nil;
Tabla := Trim(UpperCase(Tabla));
CodTabla := Trim(CodTabla);
Titulo := Trim(Titulo);
StrSQL := 'SELECT * FROM Archivos '+
'WHERE Tabla = "'+Tabla+'"'+
' AND CodTabla = "'+CodTabla+'"'+
' AND Titulo = "'+Titulo+'"';
Funciones.AbrirQuery(Archivos,StrSQL);
if Archivos.RecordCount = 0 then
begin
StrSQL := 'SELECT * FROM Archivos '+
'WHERE Tabla = "CLIENTES"'+
' AND CodTabla = "BLANCO"'+
' AND Titulo = "FOTO"';
Funciones.AbrirQuery(Archivos,StrSQL);
end;
if Archivos.RecordCount > 0 then
begin
// CARGAR LOGO EN IMAGEN
try
Stream := Archivos.CreateBlobStream(ArchivosArchivo,bmRead);
if ExtractFileExt(ArchivosNombre.AsString) = '.bmp' then
Grafico := TBitmap.Create
else
if ExtractFileExt(ArchivosNombre.AsString) = '.jpg' then
Grafico := TJPEGImage.Create;
Grafico.LoadFromStream(Stream);
Result := Grafico;
Grafico.free;
Stream.Free;
except
Grafico.free;
Stream.free;
end;
end
else
Result := nil;
end;
Y despues lo que quiero hacer es desde un FormCliente cargar esa imagen que me devuelve la funcion en un TImagen, lo hago asi:
Código Delphi [-]
try
Foto.Picture.Graphic := MMaestros.CargarFoto('CLIENTES',MMaestros.Clientes.FieldByName('CodCliente').AsString,'FOTO');
except
end;
El error que me da es una violacion de acceso. Delphi 7 contra Access.

En cambio si meto la funcion en el mismo formulario y modifico este trozo de codigo si funciona la funcion:
Código Delphi [-]
// CARGAR LOGO EN IMAGEN
try
Stream := MMaestros.Archivos.CreateBlobStream(MMaestros.ArchivosArchivo,bmRead);
if ExtractFileExt(MMaestros.ArchivosNombre.AsString) = '.bmp' then
Grafico := TBitmap.Create;
Grafico.LoadFromStream(Stream);
Foto.Picture.Graphic := Grafico;
Grafico.free;
Stream.Free;
except
Grafico.free;
Stream.free;
end;

Gracias de antemano
__________________
Un buen programador no se mide por los programas que hace, sino por lo que ayuda a los demás programadores.
Responder Con Cita