Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   crear una imagen (https://www.clubdelphi.com/foros/showthread.php?t=10491)

Metralla 20-05-2004 18:42:32

crear una imagen
 
:confused::confused: hola a todos.
Como podria hacer para crear una image al apretar un boton de un toolbar.
No cargar la imagen y que se ponga en un image al apretar el boton sino que me haga las dos cosas directamente.
Yo tengo puesto este codigo , si no podeis reponderme a ver si me podeis decir algun manual donde los explique o algo asi.
Código:

procedure TForm1.ToolButton20Click(Sender: TObject);
begin
        image := timage.Create(form1);
        with image do
        begin
                image.Picture.LoadFromFile 
                                                                        ('Z:\Pedro\rave\definitivo\iconos\camera.bmp');
        end;
end;

Gracias.

delphi.com.ar 20-05-2004 18:46:01

Hablar de "crear una imagen" es algo ambiguo... Tu quieres crear un objeto TImage y mostrarlo (supongo)... Lo único que le faltaría a tu código, es asignarle un Parent a tu TImage:

Código Delphi [-]
  Image := TImage.Create(form1);
  with image do
  begin
    image.Picture.LoadFromFile('Z:\Pedro\rave\definitivo\iconos\camera.bmp');
    image.Parent := Self;
  end;
El parent es el control "padre" donde se alojará tu TImage.

Saludos!

Metralla 20-05-2004 20:01:01

No lo entiendo
 
Gracias delphi.com.ar si es el objeto timage lo que quiero crear
no sabia bien como explicarlo y se me habia pasado por alto el detalle del parent.
Pero aun asi no me la crea, le he puesto unos
try except para ver si me entraba bien en el with y parece que si.

¿No tendria que ponerle unas cordenadas o algo
asi para decirle donde me tiene que crear el timage?
Es que si no no entiendo como no me lo crea.

Código:

procedure TForm1.ToolButton20Click(Sender: TObject);
begin
        image := timage.Create(form1);
        try
        begin
                with image do
                begin
                try
                        image.Picture.LoadFromFile('Z:\Pedro\rave\definitivo\iconos\camera.bmp');
                except
                        showmessage('direccion no');
                end;
                image.Visible := true;
                image.Parent := form1;
                end;
        end;
        except
                showmessage('no lo crea');
        end;
end;

Muchas Gracias por la ayuda:)

Metralla 20-05-2004 20:10:51

Lo he probado tanto con:
image.parent:= self;
como con
image.parent := form1;

roman 20-05-2004 20:22:50

Yo probé tu código anterior modificando únicamente el nombre del archivo bmp y me funcionó perfecto. Debe haber algo más en tu código que está afectando ésta parte.

¿Has intentado probar este código en un proyecto vacío? Si ahí funciona entonces mira de ir tratando de igualar las condiciones con el proyecto original para ver qué es lo que sucede.

// Saludos

delphi.com.ar 20-05-2004 20:46:03

Cita:

Empezado por Metralla
¿No tendria que ponerle unas cordenadas o algo asi para decirle donde me tiene que crear el timage?

Sería lo correcto si quieres ubicar tu imagen en algún sitio en particular.
Recuerda que el Parent es el control donde se ubicará el tuyo, supongamos: si Form1 tiene un panel con alineación alClient, es probable que tu imagen no se vea porque quede debajo de este panel. En este caso deberías escoger otro control para ubicar la imagen.

Saludos!

sanxpue 20-05-2004 23:20:33

Haber si te funciona con esto
 
Primero si vas a usar with quitale Image. a las propiedades que le
pertenezca o de plano no uses with

Segundo hay que ver si Z no es una unidad de red por que luego cuesta
trabajo llamarlas por que el servidor puede estar trabajando en otro proceso

Si hasta ahi vamos bien entonces

Código Delphi [-]
procedure TForm1.ToolButton20Click(Sender: TObject);
begin
  image := timage.Create(form1);
  try
    begin
       with image do
       begin
         try
           Picture.LoadFromFile('Z:\Pedro\rave\definitivo\iconos\camera.bmp');
         except
           showmessage('direccion no');
         end;
         
           Parent := Self;
           Visible := true;
           Stretch := True; //para que se acode el image por que puedes
                             //andar creando pero su tamaño puede ser width = 0 y 
                            //height = 0
           
       end;
    end;
  except
    showmessage('no lo crea');
  end;
end;

delphi.com.ar 21-05-2004 02:18:48

Cita:

Empezado por sanxpue
Segundo hay que ver si Z no es una unidad de red por que luego cuesta trabajo llamarlas por que el servidor puede estar trabajando en otro proceso

Si hay algún problema para ubicar o cargar el archivo, la llamada LoadFormFile producirá un error. No creo que este sea el problema.

Amilius 21-05-2004 03:29:31

Código Delphi [-]
   function CrearBitmapDeArchivo(const filename:string):Tbitmap;
   begin
     try
         result:=Tbitmap.create;
         with result do
         begin
           HandleType:=bmDib;/* "Device Independet Bitmap", si quieres hacer tratamiento de imagen. */
           LoadFromFile(filename);
           PixelFormat:=pf24bit;  // Si quieres tratar la imagen.
           dormant;{ Opcional para reducir consumo de recursos de GDI y recomendado para tratamiento de imágenes }
        end;
     except
         result:=nil;
     end;
   end;
   
   ...
   imagen:Tbitmap;
   ...
   imagen:=CrearBitmapDeArchivo('logo.bmp');
   ...
 imagen.free; (* " freenil(imagen) " si es posible que se llame con la referencia imagen al destructor del objeto más de una vez. *)
   ...

Metralla 21-05-2004 10:31:41

Gracias a todos
 
El codigo me funciona desde el principio lo he probado en un formulario a parte y va bien.
Código:

  image := timage.Create(form1);
  try
        begin
          with image do
          begin
                try
                  Picture.LoadFromFile('Z:\Pedro\rave\definitivo\iconos\camera.bmp');
                except
                  showmessage('direccion no');
                end;
                  Parent := Self;
                  Visible := true;
                  Stretch := True; //para que se acode el image por que puedes
                                                        //andar creando pero su tamaño puede ser width = 0 y
                                                        //height = 0
          end;
        end;
  except
        showmessage('no lo crea');
  end;

Pero en el que tenia antes no me imagino que se debe crear pero no se donde.
Mirare de descubrirlo .Gracias a todos por la ayuda.
El codigo de arriba funciona perfectamente.
Cuando descubra porque no funciona en mi aplicacion ya lo pondre.

Metralla 21-05-2004 10:38:06

ya esta
 
Pese a que la respuesta a mi problema es muy humillante la pondre.
Se me creaba todo el rato pero como no le decia donde, se creaba en la esquina superior izquierda, pero ahi tengo un canvas con pestañas y un toolbar y claro se creaba debajo y no la veia.
Creo que me ire a dar una vuelta.
Gracias a todos

delphi.com.ar 21-05-2004 15:32:39

Cita:

Empezado por Metralla
Se me creaba todo el rato pero como no le decia donde, se creaba en la esquina superior izquierda, pero ahi tengo un canvas con pestañas y un toolbar y claro se creaba debajo y no la veia.

Eso me suponía cuando suponía:
Cita:

Empezado por Delphi.com.ar
...si Form1 tiene un panel con alineación alClient, es probable que tu imagen no se vea porque quede debajo de este panel. En este caso deberías escoger otro control para ubicar la imagen.

:D

Saludos!

roman 21-05-2004 16:37:15

Cita:

Empezado por Metralla
Pese a que la respuesta a mi problema es muy humillante la pondre.

Hombre, de esto nada. Todos tenemos días así. Alguna vez me pasó estar horas viendo por qué no podia mandar a imprimir un documento hasta que finalmente me percaté de que tenía desconectado el cable de la impresora. :D

// Saludos

DarkByte 21-05-2004 21:14:38

Cita:

Empezado por roman
me pasó estar horas viendo por qué no podia mandar a imprimir un documento hasta que finalmente me percaté de que tenía desconectado el cable de la impresora.

Pruff.... eso suele pasar... son cosas como:
-Abrir 14 veces el winamp y reiniciar el pc para darte cuenta que tienes apagado el altavoz.
-Coger el teléfono, marcar los números y darte cuenta que es el mando del televisor.
-Etc, etc.

sanxpue 21-05-2004 21:19:27

Oh de esos dias
 
Cuando estas haciendo el sistema y se te cicla y se te cicla y te tienes que levantar corriendo por que primero :

"Estas durmiendo " y segundo "Te estas haciendo del baño" :D


La franja horaria es GMT +2. Ahora son las 05:26:27.

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