Ir al contenido


Foto

Problema con los archivos de recursos


  • Por favor identifícate para responder
12 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 31 octubre 2009 - 10:20

Hola a todos, es la primera vez que trabajo con ellos, no tuve problemas en generar el archivo RES con imágenes PNG, pues bien, lo agrego al proyecto de esta manera:


delphi
  1. {$R *.dfm}
  2. {$R Interfaz.RES}


Ahora, cuando intento cargarlo de esta manera:


delphi
  1. Image1.Picture.Bitmap.LoadFromResourceName(hinstance,'ZERO');


Me arroja un error diciendo que el recurso ZERO no fue encontrado, el recurso lo generé con XN Resouce editor.

¿Alguien me podría decir a qué se debe eso? :(.

Saludos.
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 31 octubre 2009 - 12:08

¿nadie ha tenido ese tipo de experiencia? :(
  • 0

#3 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 31 octubre 2009 - 12:26

¿nadie ha tenido ese tipo de experiencia? :(


Si..., tranquilo, te estaba preparando un ejemplo.... :D

Lo estás haciendo bien, se hace así. Sólo hay un pequeño detalle, tu recurso debe incluirse como un BITMAP, si no delphi no lo puede manejar. No se si se podrá con las últimas versiones de delphi, pero hasta la 7 no.

Te subo el ejemplo.  :D
  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 31 octubre 2009 - 12:32

:$ :$, acabo de ver el code y funciona bien :D, a ver una cosa, al meter un recurso PNG como BITMAP pues esa imagen se veía como BITMAP no como PNG, no sé si aquí estoy haciendo algo mal o en realidad es así, quisiera saber cómo hiciste el archivo .rc o lo hiciste con el software que mencioné.

Saludos.
  • 0

#5 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 31 octubre 2009 - 12:45

quisiera saber cómo hiciste el archivo .rc o lo hiciste con el software que mencioné.


Pues hice puna prueba con el Resource Workshop 4.5 del delphi. Para recursos normales lo uso mucho. Sólo tiene una pega, es antiguo y no trabaja con imágenes de mas de 256 colores.

Luego hice una prueba con el XN Resouce editor que proponías. Tienes que darle el nombre a tu recurso, es decir, por defecto pone un número.

Como ampliación te diré que los Recursos pueden referenciarse con una cadena o con un número, la macro de Miscrosoft MAKEINTRESOURCE convierte el número a su cadena:



cpp
  1. LPTSTR MAKEINTRESOURCE( WORD wInteger /*integer to convert*/ );



la definición es esta:


cpp
  1. #define MAKEINTRESOURCE(i)  (LPTSTR) ((DWORD) ((WORD) (i)))



de esta manera puedes trabajar con ResourceId.

Saludos.

  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 31 octubre 2009 - 12:48

Gracias por la aclaración escafandra, pero no me refería a eso, me refería a que cuando ingreso un archivo PNG ésta se convierte en una imagen BMP, por lo que la calidad no es la misma, deja subir un ejemplo para que veas la diferencia.

Saludos.
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 31 octubre 2009 - 12:55

Creo que ya sé cual es el problema, creo que el problema viene con las imágenes con transparencia. :s, déjame hacer unas pruebas.
  • 0

#8 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 31 octubre 2009 - 01:12

Efectivamente el problema era de las transparencia, basandome en tu aclaración escafandra, lo que hice fue tratar primero la imagen como PNG y luego asignarlo en un TImage, lo hice de esta manera:



delphi
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var PNG: TPNGObject;
  3. begin
  4.  
  5. PNG := TPNGObject.Create;
  6.  
  7. PNG.LoadFromResourceName(hinstance,'ZERO');
  8.  
  9. Image1.Picture.Assign(PNG);
  10. end;



Y me ha funcionado de pelos, el TPNGObject es una clase de los componentes PNGComponents de Thany ;), gracias amigo :D.

Saludos.
  • 0

#9 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 109 mensajes
  • LocationLa Serena-Chile

Escrito 30 agosto 2016 - 10:20

Hola enecumene, por favor me podrias indicar que uses necesito para LoadFromResourceName, tengo el siguiente error y no logro dar con la info.

 

DCC Error] UMultiView.pas(118): E2003 Undeclared identifier: 'LoadFromResourceName'


  • 0

#10 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 30 agosto 2016 - 10:49

Es un método de TBitmap:
 

delphi
  1. TBitmap.LoadFromResourceName(Instance: THandle; const ResName: string);

 

Saludos.
  • 0

#11 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 109 mensajes
  • LocationLa Serena-Chile

Escrito 30 agosto 2016 - 01:21

gracias  escafandra me queda claro.


  • 0

#12 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 109 mensajes
  • LocationLa Serena-Chile

Escrito 30 agosto 2016 - 01:49

escafandra, funciona perfecto en una aplicacion vcl, pero no funciona para una apps Android, serias tan amable de revisar este hilo para ver que me sugieres.

 

Saludos....

 

http://delphiaccess....agen-a-la-apps/


  • 0

#13 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 02 septiembre 2016 - 05:49


delphi
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var
  3. PNG: TPNGObject;
  4. begin
  5. PNG := TPNGObject.Create;
  6. Try
  7. PNG.LoadFromResourceName(hinstance,'ZERO');
  8. Image1.Picture.Assign(PNG);
  9. Finally
  10. PNG.Free;
  11. End;
  12. end;

No te olvides de Liberar los Objetos, Memory Leaks ;)

 

Saludos!


  • 1




IP.Board spam blocked by CleanTalk.