PDA

Ver la Versión Completa : crear una imagen


Metralla
20-05-2004, 19:42:32
: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.

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, 19: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:


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, 21:01:01
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.


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, 21:10:51
Lo he probado tanto con:
image.parent:= self;
como con
image.parent := form1;

roman
20-05-2004, 21: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, 21:46:03
¿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
21-05-2004, 00:20:33
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


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, 03:18:48
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, 04:29:31
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, 11:31:41
El codigo me funciona desde el principio lo he probado en un formulario a parte y va bien.

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, 11:38:06
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, 16:32:39
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:
...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, 17:37:15
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, 22:14:38
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, 22:19:27
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