Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-09-2006
morfeo21 morfeo21 is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
morfeo21 Va por buen camino
como declarar Clases que almacenen imagenes

hola a todos. estoy realizando la creacion de una interfaz en delphi el cual almacena informacion en una tabla de bd interbase. La tabla la e llamado articuloImagen y en su estructura tiene un campo de tipo blob ,algo asi:

Código SQL [-]
CREATE TABLE ARTICULOIMAGEN
(
  "TIPINV"  INTEGER NOT NULL,
  "CODART"  VARCHAR(40) NOT NULL,
  "CODIMG"  INTEGER NOT NULL,
  "DIRIMG"  VARCHAR(150),
  "IMAGEN"  BLOB SUB_TYPE 0 SEGMENT SIZE 80,
  "FORMATO"  VARCHAR(3),
)

lo particular en esto es que en la interfaz , utilizo componentes standar ; que luego los verifico bajandolo hacia una clase , que mantiene la misma estructura , pero el problema es que no se como declarar en mi clase el cambo imagen. lo que he hecho no me a resultado. alguien sabe como poder realizar esto?

Código Delphi [-]
Tart_imagen  = Class
  Private
    ptipinv    :integer;
    pcodart    :string;
    pcodimg    :integer;
    pdirimg    :string;
    pimagen    :TBlobData;
    pformato   :Variant;
  Public
    Property tipinv  :integer   read ptipinv write ptipinv;
    Property codart  :string   read pcodart write pcodart;
    Property codimg  :integer   read pcodimg write pcodimg;
    Property dirimg  :string   read pdirimg write pdirimg;
    Property imagen  :tblobdata   read pimagen write pimagen;
    Property formato :string   read pformato write pformato;
   Constructor Create;
   procedure   Clear;
  end;

constructor Tart_imagen.Create;
begin
  inherited;
  Clear;
end;

procedure Tart_imagen.Clear;
begin
  tipinv:=0;
  codart:='';
  codimg:=0;
  dirimg:='';
  imagen:=nil;
  formato:='';
end;

function GetArticulo_imagen(Conexion:TADOConnection;Articulo_imagen:Tart_imagen):boolean;
var
  sw             : Boolean;
  PArtImagen   : TADODataSet;
begin
  Sw:=False;
  PArtImagen := TADODataSet.Create(nil);
  PArtImagen.Connection:=Conexion;
  PArtImagen.CommandText:=' Select   tipinv,codart,codimg,dirimg,imagen,formato'+
                          ' from art_imagen '+
                          ' where tipinv = : p01 and Codart = : p02 and Codimg = : p03 ';
  PArtImagen.Parameters.ParamByName('p01').Value:=Articulo_imagen.tipinv;
  PArtImagen.Parameters.ParamByName('p02').Value:=Articulo_imagen.codart;
  PArtImagen.Parameters.ParamByName('p03').Value:=Articulo_imagen.codimg;
  PArtImagen.Open;
  PArtImagen.First;
  if not(PArtImagen.Eof) then
   begin
     Articulo_imagen.tipinv :=PArtImagen.FieldByName('tipinv').Value;
     Articulo_imagen.codart :=PArtImagen.FieldByName('codart').Value;
     Articulo_imagen.codimg :=PArtImagen.FieldByName('codesp').Value;
     Articulo_imagen.dirimg :=PArtImagen.FieldByName('dirimg').Value;
     Articulo_imagen.imagen :=PArtImagen.FieldByName('imagen').Value;
     Articulo_imagen.formato :=PArtImagen.FieldByName('formato').Value;
     SW:=True;
   end;
  PArtImagen.Close;
  PArtImagen.Free;
  Result:=sw;
end;

nota : si me dieran alguna recomendacion adicional, se los agradeceria mucho. gracias

Última edición por dec fecha: 06-09-2006 a las 17:59:14.
Responder Con Cita
  #2  
Antiguo 06-09-2006
chalitox chalitox is offline
Registrado
 
Registrado: jun 2006
Posts: 7
Poder: 0
chalitox Va por buen camino
a ver si entendi? -> Vos lo que queres hacer es traer una imagen de la DB y tenerla en una clase.
Responder Con Cita
  #3  
Antiguo 06-09-2006
Avatar de Jonnathan
Jonnathan Jonnathan is offline
Miembro
 
Registrado: may 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 64
Poder: 19
Jonnathan Va por buen camino
Hola morfeo21, hace un tiempo vi un componente donde almacenaban una imagen de una base de datos en un campo de tipo TPicture. Para asignarlo sería algo como:
Código Delphi [-]... Private ptipinv :integer; pcodart :string; pcodimg :integer; pdirimg :string; pimagen :TPicture; pformato :Variant; ... Property imagen :tPicture read pimagen write pimagen; ... //Mas abajo a la hora de asignarlo if not(PArtImagen.Eof) then begin Articulo_imagen.tipinv := PArtImagen.FieldByName('tipinv').Value; Articulo_imagen.codart := PArtImagen.FieldByName('codart').Value; Articulo_imagen.codimg := PArtImagen.FieldByName('codesp').Value; Articulo_imagen.dirimg := PArtImagen.FieldByName('dirimg').Value; Articulo_imagen.imagen.Assign(PArtImagen.FieldByName('imagen').Value); Articulo_imagen.formato :=PArtImagen.FieldByName('formato').Value; SW:=True; end;

Tambien tendrías que crear y destruir ese objeto TPicture junto con tu componente. Pruébalo a ver si te funciona asi.
__________________
"En el siglo de la estupidez todas las casas comienzan por la fachada" (Fuckowsky)
Planeta Insólito, La Pluma Inspirada
Responder Con Cita
  #4  
Antiguo 06-09-2006
Avatar de Jonnathan
Jonnathan Jonnathan is offline
Miembro
 
Registrado: may 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 64
Poder: 19
Jonnathan Va por buen camino
Perdon por el mensaje repetido y el mal formato, creo que tengo problemas con mi navegador, si algún moderador lo puede arreglar...
__________________
"En el siglo de la estupidez todas las casas comienzan por la fachada" (Fuckowsky)
Planeta Insólito, La Pluma Inspirada
Responder Con Cita
  #5  
Antiguo 06-09-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Podes borrarlos vos mismo... le das en Editar, y luego Borrar.

Saludos.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 07-09-2006
bismarck_sierra bismarck_sierra is offline
Miembro
 
Registrado: ene 2004
Ubicación: Morelia, Michoacán, México
Posts: 70
Poder: 21
bismarck_sierra Va por buen camino
Que tal

Te paso unas modificaciones, con esto te debe funcionar, haber que tal te parece.

Código Delphi [-]
Tart_imagen  = Class
  Private
    ptipinv    :integer;
    pcodart    :string;
    pcodimg    :integer;
    pdirimg    :string;
    pformato   :Variant;
    strImagen: TMemoryStream;
  Public
    Property tipinv  :integer   read ptipinv write ptipinv;
    Property codart  :string   read pcodart write pcodart;
    Property codimg  :integer   read pcodimg write pcodimg;
    Property dirimg  :string   read pdirimg write pdirimg;
    Property imagen  :tblobdata   read pimagen write pimagen;
    Property formato :string   read pformato write pformato;
    property Imagen: TMemoryStream read strImagen write strImagen;
   Constructor Create;
   procedure   Clear;
  end;

constructor Tart_imagen.Create;
begin
  inherited;
  strImagen:= TMemoryStream.Create;
  Clear;
end;

procedure Tart_imagen.Clear;
begin
  tipinv:=0;
  codart:='';
  codimg:=0;
  dirimg:='';
  imagen:=nil;
  formato:='';
  strImagen.Clear;
end;

function GetArticulo_imagen(Conexion:TADOConnection;Articulo_imagen:Tart_imagen):boolean;
var
  sw             : Boolean;
  PArtImagen   : TADODataSet;
  fldCampo: TField;
begin
  Sw:=False;
  PArtImagen := TADODataSet.Create(nil);
  PArtImagen.Connection:=Conexion;
  PArtImagen.CommandText:=' Select   tipinv,codart,codimg,dirimg,imagen,formato'+
                          ' from art_imagen '+
                          ' where tipinv = : p01 and Codart = : p02 and Codimg = : p03 ';
  PArtImagen.Parameters.ParamByName('p01').Value:=Articulo_imagen.tipinv;
  PArtImagen.Parameters.ParamByName('p02').Value:=Articulo_imagen.codart;
  PArtImagen.Parameters.ParamByName('p03').Value:=Articulo_imagen.codimg;
  PArtImagen.Open;
  PArtImagen.First;
  if not(PArtImagen.Eof) then
   begin
     Articulo_imagen.tipinv :=PArtImagen.FieldByName('tipinv').Value;
     Articulo_imagen.codart :=PArtImagen.FieldByName('codart').Value;
     Articulo_imagen.codimg :=PArtImagen.FieldByName('codesp').Value;
     Articulo_imagen.dirimg :=PArtImagen.FieldByName('dirimg').Value;
     Articulo_imagen.formato :=PArtImagen.FieldByName('formato').Value;
    fldCampo:= FieldByName('imagen');
    Articulo_imagen.strImagen:= CreateBlobStream(fldCampo, bmRead);
     SW:=True;
   end;
  PArtImagen.Close;
  PArtImagen.Free;
  Result:=sw;
end;

Última edición por bismarck_sierra fecha: 07-09-2006 a las 16:39:43.
Responder Con Cita
  #7  
Antiguo 08-09-2006
morfeo21 morfeo21 is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
morfeo21 Va por buen camino
Gracias por la pronta respuesta por parte de todos Uds. se los agradesco mucho. Realizare las pruebas pertinentes ahora mismo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
declarar un float en delphi dmagui Firebird e Interbase 5 29-09-2005 18:18:10
Como declarar un campo tipo BLOB Ronny Firebird e Interbase 0 19-01-2005 16:46:29
Cómo declarar un campo blob en interbase para almacenar un *.jpg jaderl Firebird e Interbase 1 20-10-2004 16:50:02
Como declarar una clase para desarrollarla despues???? treydo OOP 2 03-02-2004 19:27:11
Como declarar variables para que las puedan utilizar otras units erocha Varios 1 07-11-2003 22:21:27


La franja horaria es GMT +2. Ahora son las 19:02:24.


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