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
  #21  
Antiguo 22-03-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Otra duda, en este procedimiento, cambio la anchura y altura de la imagen dependiendo de la posición en el formulario, esto funciona bien es lo que comentaba en el post anterior. Con el añadido de las miniaturas igual esto se puede quitar y basarnos solo en el click en la miniatura para verla, no se si es mejor.

Código Delphi [-]
 
procedure TF_Camions.Fotos_CAfterScroll(DataSet: TDataSet);
var
        jpg:TJpegImage;
        foto:TMemoryStream;
begin
        If FileExists('C:\Bombers_1.0\Temp\Temporal.jpg') then
        DeleteFile ('C:\Bombers_1.0\Temp\Temporal.jpg');
        If Fotos_CFOTO.Value<>'' then
        begin
                Jpg:=TJpegImage.create;
                Foto:=TMemoryStream.create;
                try
                        Fotos_CFOTO.SaveToStream(Foto);
                        Foto.Seek(0,soFromBeginning);
                        Jpg.LoadFromStream(Foto);
                        Jpg.SaveToFile('C:\Bombers_1.0\Temp\Temporal.jpg');
                        if jpg.Width > jpg.Height then
                        begin
                                Image2.Width := 500;
                                Image2.Height := 376;
                                Image2.Picture.Assign(Jpg);
                                Image1.Width := 500;
                                Image1.Height := 376;
                                Image1.Stretch:=False;
                                Image1.Picture.Assign(Jpg);
                        end
                        else
                        begin
                                Image2.Width := 376;
                                Image2.Height:=500;
                                Image2.Picture.Assign(Jpg);
                                Image1.Width := 282;
                                Image1.Height := 376;
                                Image1.Stretch:=True;
                                Image1.Picture.Assign(Jpg);
                        end;
                finally
                        Foto.Free;
                        Jpg.Free;
                end;
        end
        else
        begin
                Image2.Picture.Assign(nil);
                Image1.Picture.Assign(nil);
        end;
end;

Cuando asigno el valor de la tabla FOTO al DBImage de la miniatura, puedo ajustar la medida de la misma dependiendo de si la foto es horizontal o vertical?

He intentado con:

Código Delphi [-]
begin
                TumbN.Close;
                TumbN.CreateDataSet;
                TumbN.Open;
                B:= TBitmap.Create;
                try
                        while not Fotos_C.Eof do
                        begin
                              TumbN.Append;
                              TumbNID.Value:= Fotos_C.FieldByName('ID').Value;
                              JpgToBitmap(Fotos_C.FieldByName('FOTO'), B);
                              TumbNFOTO.Assign(B);
                              TumbN.Post;
                              Fotos_C.Next;
                        end;
                finally
                        B.Free
                end;
                TumbN.Last;
                TumbN.First;
                If TumbN.RecordCount = 0 then
                begin
                        DBCtrlGrid1.Visible:=False;
                end
                else
                begin
                        DBCtrlGrid1.Visible:=True;
                        If (TumbN.RecordCount >= 1) and (TumbN.RecordCount <= 10) then
                        begin
                                DBCtrlGrid1.ColCount:=TumbN.RecordCount;
                        end
                        else
                        begin
                                DBCtrlGrid1.ColCount:=10;
                        end;
                end;
                DBCtrlGrid1.DataSource:= DSTumbN;
                DBImage1.DataField:= 'FOTO';
                If DBImage1.Width > DBImage1.Heigth then
                begin
                        DBImage1.Width:=100;
                        DBImage1.Heigth:=75;
                end
                else
                begin
                        DBImage1.Width:=75;
                        DBImage1.Heigth:=10;
                end;
                DBImage1.Stretch:= True;
        end;

La parte en rojo no funciona, no se si el código está mal colocado o no es la función correcta.

Saludos

Josep
Responder Con Cita
  #22  
Antiguo 22-03-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Y otra consulta, espero sea la última de este post.

Cuando añado nuevas fotos al DataSet, no se refrescan en el Client DataSet, he probado a ejecutar el código en rojo y no funciona, solo cuando cambio de registro, creo porqué la carga del ClientDataSet se realiza en el OnChange del DBEdit1

procedure TF_Camions.Fotos_CAfterPost(DataSet: TDataSet);
var Pos: TBookmark;
begin
Pos := Fotos_C.GetBookmark;
F_ModulFotos.IBTFotosBombers.CommitRetaining;
Fotos_C.Close;
Fotos_C.Open;
TumbN.Close;
TumbN.Open;
Fotos_C.GotoBookmark(Pos);
Fotos_C.FreeBookmark(Pos);
end;

Saludos

Josep
Responder Con Cita
  #23  
Antiguo 17-04-2012
MARIA_MAR MARIA_MAR is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 21
Poder: 0
MARIA_MAR Va por buen camino
Hola ecfisa,
Como siempre tus respuestas son muy interesantes. Mi pregunta es, ¿cómo se haria para al hacer click sobre una de esas miniaturas que se viese a tamaño de pantalla completa?.
Gracias.
Responder Con Cita
  #24  
Antiguo 17-04-2012
MARIA_MAR MARIA_MAR is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 21
Poder: 0
MARIA_MAR Va por buen camino
Perdona ecfisa, quiza deberia aclarar que yo me refiero al codigo que pusiste en la primera respuesta de este post, yo necesito algo sencillo, sin tablas ni base de datos ni nada.
Saludos
Responder Con Cita
  #25  
Antiguo 17-04-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Hola.

Aunque le preguntas a ecfisa y como le tengo algo de manía te voy a contestar yo.

Esto hay varías formas de hacerlo, una fácil es abrirlo con el visor que tenga predeterminado windows para ese tipo de imágenes y sería tal que así:

Código Delphi [-]
Archivo:='C:\IMAGEN.JPG';
ShellExecute(Handle, 'open', PChar(Archivo), '', '', SW_SHOW)

ten en cuenta que debes de añadir en el uses la unidad ShellApi

Saludos
__________________
Be water my friend.
Responder Con Cita
  #26  
Antiguo 17-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola MARIA_MAR.

Como dice mi compañero de penurias maritales, utilizando el visor de imágenes asociado es la forma más simple.

Pero si deseas hacerlo sobre el código anterior, tendrías que agregarle el evento OnClick a la imágen creada:
Código Delphi [-]
type
  TForm1 = class(TForm)
  ...
  private
    procedure BuscarImagenes(const Ruta: string);
    procedure ImageClick(Sender: TObject);
  end;
...
implementation
...

(* Crear form, Imagen y mostrar seleccion *)
procedure TForm1.ImageClick(Sender: TObject);
var
  Frm: TForm;
  Img: TImage;
begin
  Frm:= TForm.Create(nil);
  try
    Frm.Caption:= 'PRESENTACION';
    Frm.WindowState:= wsMaximized;
    Frm.BorderStyle:= bsSingle;
    Img:= TImage.Create(Frm);
    Img.Align:= alClient;
    Img.Stretch:= True;
    Img.Parent:= Frm;
    Img.Picture.Assign(TImage(Sender).Picture);
    Img.Parent:= Frm;
    Frm.ShowModal;
  finally
    Frm.Free;
  end;
end;

procedure TForm1.BuscarImagenes(const Ruta: string);
var
  SR: TSearchRec;
  Img: TImage;
  E: string;
  n: Integer;
begin
  if FindFirst(Ruta + '\*.*', faAnyFile, SR) = 0 then
  begin
    n:= 0;
    repeat
      E:= ExtractFileExt(SR.Name);
      if (E='.jpg')or(E='.jpeg')or(E='.bmp')or(E='.emf')or(E='.wmf') then
      begin
        Img:= TImage.Create(Self);
        ObjList.Add(Img);
        with TImage(ObjList.Items[n]) do
        begin
          Height:= 80;
          Width:= 80;
          Left:= 10;
          Top := 120 * n + 10;
          Stretch:= True;
          Picture.LoadFromFile(Ruta+'\'+SR.Name);
          Parent:= ScrollBox1;
          OnClick:= ImageClick;  // <== Asignar evento OnClick
          Inc(n);
        end;
      end
    until FindNext(SR) <> 0;
    FindClose(SR)
  end
end;

...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #27  
Antiguo 17-04-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Otra opción es ejecutar directamente el visor de imágenes de windows. La solución de newtron abrirá la aplicación asociada para ver/editar imágenes, que no necesariamente es el visor.

// Saludos
Responder Con Cita
  #28  
Antiguo 18-04-2012
MARIA_MAR MARIA_MAR is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 21
Poder: 0
MARIA_MAR Va por buen camino
Gracias ecfisa, como siempre me solucionas mis problemas rápidamente. Es justo lo que queria.
La respuesta de newtrom tambien es buena idea.

Gracias a todos por ser tan atentos.
Responder Con Cita
  #29  
Antiguo 18-04-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Otra opción es ejecutar directamente el visor de imágenes de windows. La solución de newtron abrirá la aplicación asociada para ver/editar imágenes, que no necesariamente es el visor.

// Saludos
Tiquismiquis.
__________________
Be water my friend.
Responder Con Cita
  #30  
Antiguo 19-04-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Hola a todos.

Encontre un componente en las jedi, el JvDBImage, que si acepta archivos en jpg y no es necesario convertirlos a bitmap paso necesario para poder usar el DBImage standart.

Saludos a todos.

Josep

Última edición por jafera fecha: 19-04-2012 a las 17:48:01.
Responder Con Cita
  #31  
Antiguo 20-04-2012
MARIA_MAR MARIA_MAR is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 21
Poder: 0
MARIA_MAR Va por buen camino
Buenas tardes ecfisa,

Me estoy complicando un poco la vida, y si quisiera que las imagenes que se van mostrando en miniatura en el scrollbox, apareciesen cada x segundos. ¿ Lo puedo hacer utilizando Timer? , ¿ como ?
Gracias de nuevo
Responder Con Cita
  #32  
Antiguo 20-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Maria.

En ese caso creo que sería más sencillo trabajar todo en un form.
Poné un TScrollBox, un TImage, un TTimer y un TPanel donde irán un TCheckBox (muestra aleatoria) y dos TButton (Start/Stop). El ejemplito es muy simple y lo hice sin mucho detalle, pero seguro que podrás usarlo como base para algo más elaborado y optimizado.

La pantalla queda así:



El código:
Código Delphi [-]
implementation  

uses contnrs, jpeg;

var
  ObjList: TObjectList;

// Mostrar imágen
procedure TForm1.ShowImage(AImage: TImage);
begin
  Image1.Picture:= nil;
  Image1.Picture:= AImage.Picture;
end;

// Imagen OnClick
procedure TForm1.ImageClick(Sender: TObject);
begin
  ShowImage(TImage(Sender));
end;

// Buscar y cargar imagenes en ObjectList
procedure TForm1.BuscarImagenes(const Ruta: string);
var
  SR: TSearchRec;
  Img: TImage;
  E: string;
  n: Integer;
begin
  if FindFirst(Ruta + '\*.*', faAnyFile, SR) = 0 then
  begin
    n:= 0;
    repeat
      E:= ExtractFileExt(SR.Name);
      if (E='.jpg')or(E='.jpeg')or(E='.bmp')or(E='.emf')or(E='.wmf') then
      begin
        Img:= TImage.Create(Self);
        ObjList.Add(Img);
        with TImage(ObjList.Items[n]) do
        begin
          Height:= 80;
          Width:= 80;
          Left:= 120 * n + 10;
          Top := 10;
          Stretch:= True;
          Picture.LoadFromFile(Ruta+'\'+SR.Name);
          Parent:= ScrollBox1;
          OnClick:= ImageClick;  
          Inc(n);
        end;
      end
    until FindNext(SR) <> 0;
    FindClose(SR)
  end
end;

// Form OnCreate
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  Timer1.Enabled:= False;
  ObjList:= TObjectList.Create;
  BuscarImagenes('C:\RUTA_A_TUS_IMAGENES')
end;

// Timer OnTimer
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Inc(FImgCount);
  if CheckBoxRnd.Checked then
    FImgCount:= Random(ObjList.Count)
  else if FImgCount = ObjList.Count then
    FImgCount:= 0;
  ShowImage(TImage(ObjList.Items[FImgCount]));
end;

// Comenzar muestra
procedure TForm1.btnStartClick(Sender: TObject);
begin
  if CheckBoxRnd.Checked then
    FImgCount:= Random(ObjList.Count)
  else
    FImgCount:= 0;
  Timer1.Enabled:= True;
  ShowImage(TImage(ObjList.Items[FImgCount]));
end;

// Finalizar mostrar 
procedure TForm1.btnStopClick(Sender: TObject);
begin
  Timer1.Enabled:= False;
end;
end.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 20-04-2012 a las 21:51:02.
Responder Con Cita
  #33  
Antiguo 24-04-2012
MARIA_MAR MARIA_MAR is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 21
Poder: 0
MARIA_MAR Va por buen camino
Ideal ecfisa, como siempre dando soluciones.
Gracias por tu tiempo
Responder Con Cita
  #34  
Antiguo 14-05-2012
MARIA_MAR MARIA_MAR is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 21
Poder: 0
MARIA_MAR Va por buen camino
Hola de nuevo,

Me gustaria imprimir, a través de un botón, la imagen que se muestra en grande en el Timage, pero no sé cómo pasar la ruta de la imagen , si la escribo a mano me funciona bien ¿cómo puedo saber dicha ruta?.

Hago lo siguiente:

Código Delphi [-]
procedure TForm1.B_imprimirClick(sender: Tobject);
var
JPG : TJpegImage;
R : TRect;
begin
if Printer.Printing then
Application.MessageBox('Impresora ocupada', 'Error de impresion', 0)
else
begin
Printer.BeginDoc;
with Printer.Canvas do
begin
JPG := TJpegImage.Create;
JPG.LoadFromFile('C:\FOTOS\IMG15.JPG');  // Asi me funciona
R:=Rect(0,0,3524,2434);
StretchDraw(R, JPG);
JPG.Free;
end;
Printer.EndDoc;
end;
end;

Debe ser una tonteria, pero no lo consigo.
Gracias.
Responder Con Cita
  #35  
Antiguo 14-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, recuerda crear un hilo nuevo cuando sean preguntas distintas a la que originó el hilo actual.
Ya sabes, preguntas distintas en hilos distintos.
Gracias
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
Recorrer directorio Pedro-Juan Conexión con bases de datos 4 09-02-2011 18:50:43
Mostrar ficheros de un directorio y subdirectoros chinchan C++ Builder 3 11-01-2009 22:26:49
Mostrar directorio con ShellExecute MON___ API de Windows 5 26-03-2008 13:07:00
Borrar archivos de un directorio nelem Internet 6 29-10-2007 16:04:00
Mostrar un directorio con el explorador de archivos de windows Jan_polero API de Windows 2 11-01-2005 18:40:21


La franja horaria es GMT +2. Ahora son las 01:45:51.


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