Ver Mensaje Individual
  #2  
Antiguo 07-04-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Reputación: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A ver si lo he entendido bien. Si lo que necesitas es mostrar una imagen en un formulario, la clase "TJPEGImage" (hasta donde yo llego) no es la adecuada, porque, no se trata de un componente, menos un componente "visual", como pueda serlo el componente "TImage". Así pues, creo que habría que usar el componente "TImage" o alguno similar.

No sé si el siguiente código hace exactamente lo que quieres: crea en tiempo de ejecución un componente "TImage", carga una imagen JPG en el mismo y luego muestra esta imagen en un formulario. Hay varias cosas a tener en cuenta en el siguiente código:

Código Delphi [-]
uses
  SysUtils, ExtCtrls, Jpeg;

procedure TForm1.Button1Click(Sender: TObject);
var
  imgPath: string;
  imgComp: TImage;
begin
  imgPath := ExtractFilePath(ParamStr(0)) + 'pompas.jpg';
  imgComp := TImage.Create(Self);
  with imgComp do begin
    Parent := Self;
    SetBounds(10, 10, 200, 200);
    Picture.LoadFromFile(imgPath);
  end;
end;

En primer lugar, las unidades a utilizar. En "ExtCtrls" encontramos la clase del componente "TImage". En "Jpeg" lo necesario para que, a la hora de cargar la imagen JPG, no nos encontremos con la excepción "EInvalidGraphic", puesto que el componente "TImage" no soporta este tipo de imágenes por sí solo. La unidad "SysUtils" nos proporciona, entre otras cosas, la función "ExtractFilePath".

Yo diría que ya está dicho todo. Tal vez pueda decirse algo sobre la instrucción "Parent := Self;". Sin esta crearíamos el componente, pero, no mostraríamos la imagen en el formulario. En efecto, es menester un "Parent" para el componente "TImage", y nosotros le damos uno con "Self" (el propio formulario "Form1"). Si acaso, para terminar, añadir que usamos el mismo formulario como "Owner" (dueño, encargado) del componente "TImage".

De este modo, cuando se destruya el formulario, automáticamente, se destruirá también el componente "TImage", es decir, que delegamos esta tarea (destruir el objeto que hemos creado) al formulario donde mostramos la imagen. Y ya está. Creo que me he enrrollado mucho, sobre todo teniendo en cuenta que he empezado con un "A ver si lo he entendido bien."...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita