Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2007
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.629
Poder: 10
Emilio Va por buen camino
Galeria de Imágenes en Delphi 7 (Paradox)

Hola, despues de una incansable búsqueda me resultó inutil tratar de hacer una galeria de imágenes por que realicé un formulario de facturación pero queria que al agregar algun articulo se tuviera la libertad de elegir una imagen y guardarla junto con sus datos.

de tanto intentar y fallar codigos posibles para esta accion logré alfin está funcion

la falta de informacion no es buena asi que voy a explicar lo que hice ya que he visto en muchisimos foros la busca de esta solucion.

trataré de ser lo mas específico posible ok? :)

pasos:

1- crea una carpeta ( donde se guardará el project).
2- crea una sub carpeta donde guardarás las imagenes.
3- crea una tabla (paradox 7) con los siguientes campos( nombF,DirF)con el nombre de dbFoto.
4- inserta en el formulario un componente opendialog, un componente table, 5 componente buttons, 1 componente label,un componente image y finalmente 2 componentes edit.
5-al button 1 lo llamaremos cargar al button 2 lo llamaremos guardar al buton 3 lo llamaremos cerrar al buton4 lo llamaremos anterior y al buton5 lo llamaremos siguiente.:)
6- el componente label es para que vaya encima del edit2 llamado nombre:

ok ya tenemos armado el formulario ahora vamos con el codigo :D

ahora solo haremos doble clic en cualquier parte vacia del formulario y ponemos este codigo

Código Delphi [-]
// ponemos los edit en blanco (no me gusta usar el clear por que en algunos casos da error :)
edit1.Text:='';
edit2.Text:='';
//enlazamos la tabla con el componente table
TABLE1.DatabaseName:=ExtractFilePath(Application.ExeName);
Table1.TableName:='bdfoto.db';
Table1.Open;


luego hacemos doble clic al boton cargar y ponemos este codigo

Código Delphi [-]
OpenDialog1.Execute;
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
edit1.Text:=OpenDialog1.FileName;
luego hacemos doble clic en el boton guardar y ponemos este codigo
Código Delphi [-]
table1.Insert;
table1.FieldValues['dirf']:=edit1.Text;
table1.FieldValues['nomf']:=edit2.Text;
table1.post;
application.MessageBox('Foto Guardada','Guardar');
luego hacemos doble clic al boton anterior y ponemos este codigo
Código Delphi [-]
table1.prior;
edit1.Text:=table1.FieldValues['dirf'];
edit2.Text:=table1.FieldValues['nomf'];
 Image1.Picture.LoadFromFile(edit1.text);

luego hacemos doble clic en el boton siguiente y ponemos este codigo
Código Delphi [-]
table1.Next;
edit1.Text:=table1.FieldValues['dirf'];
edit2.Text:=table1.FieldValues['nomf'];
Image1.Picture.LoadFromFile(edit1.text);

y luego tienen que hacer los siguientes 21 pasos:

era un chiste ya esta listo jejejeje.

recuerda que para que el programa funcione debe haber imagenes en la carpeta donde se creo el project...

Espero les sirva a mi me sirvio sin problemas :D

como funciona?: funciona es guardando la ruta de acceso en la tabla ( y todo el mundo se quema las neuronas averiguando en internet como insertar graficos en una tabla).. no digo que no se pueda sino que es algo fastidioso y de paso que vas a recargar la base de datos de muchos de MB por que en la tabla no se guarda jpg ni bmp ni gif en la tabla se guarda es mediante codigos binarios en fin....... creo que mi solucion es mucho mas simple y cumple la misma funcion :)
Responder Con Cita
  #2  
Antiguo 25-08-2007
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 11
mightydragonlor Va por buen camino
Pues eso no es nada, yo ya conseguí guardar imagenes en la base de datos.
Este es el código que guarda la imagen en una base de datos:
Código:
[delphi]
procedure TfrmAgenda.Button1Click(Sender: TObject);
begin
{dmConexion es un TDataModule}
{TblContacto en un TTable}
{ImgFoto es un TImage}
{El Resto son TEdit}
dmConexion.TblContacto.InsertRecord([NIL,NICK.Text,NOMBRES.Text,APELLIDOS.Text,TEL_PER.Text
      ,TEL_LAB.Text,TEL_MOV.Text,DIRECCION.Text,CIUDAD.Text
      ,MAIL_PER.Text,MAIL_LAB.Text,MAIL_ADD.Text
      ,FECHA_NAC.Date,ImgFoto.Picture,NOTAS.Lines]);
end;
el problema es que al cargar solo me muestra los Bitmap y no los JPEG que estan guardados en un campo Graphic de la base de datos, si alguien sabe como corregir esto se lo agradeceria, tambien agradeceria una ayuda para convertir el contenido de un Image a un Bitmap, gracias.
Responder Con Cita
  #3  
Antiguo 27-08-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 12
BlackDaemon Va por buen camino
Y donde esta tu código mightydragonlor ??

Y sobre el code pues siempre es útil tener algo así, gracias por compartir

saludos!
Responder Con Cita
  #4  
Antiguo 29-08-2007
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 11
mightydragonlor Va por buen camino
Lo siento, pero es que no me deja editar el comentario, pero aquí va el código.
Es necesario convertir la imagen a un Bitmap y para eso es la función ToBMP
dmConexxion es un DataModule
TblContacto es un TTable
Código Delphi [-]
procedure TfrmAgenda.btnGuardarClick(Sender: TObject);
begin
  dmConexion.TblContacto.AppendRecord([NIL,NICK.Text,NOMBRES.Text,APELLIDOS.Text,TEL_PER.Text
    ,TEL_LAB.Text,TEL_MOV.Text,DIRECCION.Text,CIUDAD.Text
    ,MAIL_PER.Text,MAIL_LAB.Text,MAIL_ADD.Text
    ,FECHA_NAC.Date,ToBMP(ImgFoto.Picture.Graphic),NOTAS.Lines]);
end;

function TfrmAgenda.ToBMP(g: TGraphic): TBitMap;
begin
  try
    Result:=TBitmap.Create;
    Result.Width:= g.Width;
    Result.Height:= g.Height;
    Result.Palette:=g.palette;
    Result.PixelFormat:=pf15bit;
    Result.Canvas.Draw(0,0,g);
  except
    Result:=nil;
  end;
end;
Listo, es muy sencillo, la verdad es que me gustaria guardar la imagen como JPG, ya que como BMP pesa mucho, pero tengo problemas cargando la imagen desde la base de datos si está guardada en JPG, algo que no pasa si la guardo como BMP.

Última edición por ecfisa fecha: 27-03-2015 a las 09:44:38. Razón: agregar etiquetas
Responder Con Cita
  #5  
Antiguo 01-09-2007
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 181
Poder: 12
casacham Va por buen camino
Holo a todos, Lamento por lo precario que es utilizar PARADOX , en ultima instancia pueden utilizar bases de datos administradas por Access, que es lo mismo que JET OLE 4. Lo que no aclara el procedimiento es como borrar esos ragistros, aunque ya se que solo es para una biblioteca predefinida. Si les interesa el tema como almacenar imagenes en una base de datos => primero, no hay porque convertirlas a BMP, se pueden almacenar de cualquier tipo, segundo => se pueden almacenar en la misma base de datos y no solo la direccion. Para saber como hacer todo eso deben leer el boletin pascal N° 11 cuya direccion es esta:

http://www.latiumsoftware.com/es/pascal/index.php

o bien

http://www.latiumsoftware.com/es/pascal/0011.php

disfruten leyendo ese articulo, aprenderan cosas muy interesantes
Responder Con Cita
  #6  
Antiguo 18-11-2008
madriles madriles is offline
Miembro
 
Registrado: may 2003
Ubicación: madrid
Posts: 93
Poder: 15
madriles Va por buen camino
hola a todos, yo lo que uso es lo siguiente, creo una subcarpeta donde van las fotos o graficos, en formato jpg
Las imagenes tienen que tener un nombre que coincida con alguno de los campos de la base de datos, en mi caso concreto use el de la reerencia del producto. en el DataSouce pongo este codigo
Código Delphi [-]
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
   try
     Foto := Ruta + 'MisFotos\'+DBEdit4.Text+'.jpg';
     if FileExists(Foto) then
       Image1.Picture.LoadFromFile(Foto)
     else
       Image1.Picture := nil;
   Except
       Image1.Picture := nil;
   end;
end;
se repite el codigo en el DataSource1StateChange

Foto es una variable String;
Ruta es una string donde esta la ruta del ejecutable, yo la pogo en el onCreate

Ruta := ExtractFilePath(ParamStr(0));

asi no necesitas almacenar las imagenes en ninguna base ni crear campos especificos con la ruta, a mi me resulta muy practico

Última edición por ecfisa fecha: 27-03-2015 a las 09:46:57. Razón: agregar etiquetas
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 14:53:14.


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