Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2006
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Exclamation Problemas con Topenpicuredialog

Saludos,

Tal vez la pregunta sea de lo más tonta, pero no llevo mucho tiempo en esto y he visto que por aquí andan auténticos expertos.
Trabajo con Turbo Delphi 2006 en windwos xp -Home.

Tengo un problema con Topenpicturedialog. En un form tengo un Timage. Para asignarle una imagen en runtime, tengo un componente Topenpicturedialog. He añadido la clausula jpeg a Uses.
Para asignar la imagen, en el onclose del componente topenpicturedialog he hecho:

image1.picture.loadfromfile(topendialog1.filename);

y me da error. Me dice que no reconoce la extensión. He probado con bmp, ico, png,... en fin, todo tipo de imágenes y no hay manera.

Por ver si era otro tipo de error, he creado una variable y la he llamado de la siguiente manera en el onclose:
var
img:string;
beging
img:=topenpicturedialog1.filename;
image1.picture.loadfromfile(img);
end

y nada de nada. Con el fin de ver cual es el problema, he creado un label y le he asignado el valor de img en el caption, y oh sorpresa!, me muestra símbolos y no el path a ninguna imagen.

¿Estoy haciendo bien las cosas? ¿donde estoy metiendo la pata? Solo quiero que el usuario busque y carge la imagen que quiera en el componente timage...

Muchas gracias por ayudarme con esto.
Ciao!

M.A. de Pablo
Responder Con Cita
  #2  
Antiguo 18-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Generalmente no es en el evento "OnClose" del componente que mencionas donde se accede a la imagen en cuestión. De hecho es posible que en ese evento la propiedad "FileName" no sea la correcta: esto deberías comprobarlo, simplemente, echándola un vistazo ("ShowMessage") o, directamente, viendo si existe el archivo con "FileExists" por ejemplo.

Pero, como he dicho, como norma general (vale para el resto de cuadros de diálogo similares) se accede a la propiedad "FileName" acto seguido de presentar al usuario el diálogo en cuestión. Es más fácil verlo que otra cosa:

Código Delphi [-]
begin
  with TOpenPictureDialog.Create(Self) do
  begin
    if(ShowModal = mrOk)
    begin
      ShowMessage(FileName);
    end;
  end;
end;

O, de otro modo:

Código Delphi [-]
var
  dlg: TOpenPictureDialog;
begin
  dlg := TOpenPictureDialog.Create(Self);
  try
    if dlg.ShowModal = mrOk then
    begin
      ShowMessage(dlg.FileName);
    end;
  finally
    dlg.Free;
  end;  
end;

Nota que el código, aunque sencillo, no está comprobado: puede que se me fuera alguna cosa, pero, la idea que trata de exponer es la siguiente: se muestra al usuario el diálogo de forma "modal", esto es, el usuario deberá elegir un archivo de imagen (en este caso) o, simplemente, cancelar el diálogo.

Tú únicamente estarás pendiente de que cuando se cierre el diálogo "ShowModal" te retorne la constante "mrOk", lo que significará que el usuario ha elegido, efectivamente, un archivo. Entonces puedes obrar en consecuencia y hacer lo que tengas que hacer con dicho archivo. En todo caso no dejes de revisar las opciones conque cuentan estos tipos de diálogos.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 18-10-2006 a las 10:20:07.
Responder Con Cita
  #3  
Antiguo 18-10-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por dec
if dlg.ShowModal = mrOk then
Hasta donde yo se los diálogos no cuentan con el método ShowModal. ¿Por que no usar el clásico Execute?

Código Delphi [-]
  if dlg.Execute then
Responder Con Cita
  #4  
Antiguo 18-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Así es la verdad Domingo. Obviamente me equivoqué y donde dije "ShowModal" quería decir "Execute".

Con la particularidad de que sobra la comparación "Execute = mrOk", que, además de no funcionar, no es precisa.

Pido disculpas.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 18-10-2006
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Funciona!

Perfecto!

Muchas gracias a todos, porque siempre encuentro soluciones interesante navegando por el foro y aprendiendo de toda vuestra experiencia.

Ciao!
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


La franja horaria es GMT +2. Ahora son las 06:47:59.


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