Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Crear una DLL con recursos y acceder desde una aplicación

Basta con crear un fichero de recursos estandard de Delphi y añairlo a un proyecto de DLL.

Crea un archivo .RC como este (icons.rc):
Código:
BACK    BITMAP ".\back.bmp" 
BARCODE BITMAP ".\barcode.bmp" 
...
Lo compilas usando el programa brcc32 (desde la linea de comandos), por ejemplo puedes crear un BAT/CMD como este:
Código:
brcc32 icons.Rc > Errores.txt
Al compilar los recursos obtendrás un fichero llamado icons.res

Desde Delphi creas un nuevo proyacto desde File/New/Other/DLL Wizard
y donde pone {$R *.res} cambias eso por {$R ICONS.RES}
Compila, linka y en la DLL resultante ya tiene los iconos.

Una vez que tengas la DLL creada, en mi caso, por ejemplo con el nombre: ResDLL.dll, para recuperar los iconos haz lo siguiente:
(1) Crea una nueva aplicación de delphi.
(2) Coloca dos TImage y un botón.
(3) En el Onclick del botón coloca el siguiente código:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  DllHandle: THandle;
begin
  // Cargar la DLL (debe estar en el mismo directorio)
  DllHandle := LoadLibrary('.\ResDLL.dll');
  // Cargada correctamente?
  if DllHandle <> 0 then begin
    // proteccion
    try
      //Cargar los recursos desde la DLL
      Image1.Picture.Bitmap.Handle := LoadBitmap(DllHandle, 'BACK');
      Image2.Picture.Bitmap.Handle := LoadBitmap(DllHandle, 'BARCODE');
    finally
      // Liberarla
      FreeLibrary(DllHandle)
    end;
  end
  else begin
    // Error
    ShowMessage(SysErrorMessage(GetLastError))
  end;
end;

Una vez compilado si la DLL y el EXE están en el mismo directorio deberían funcionar.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 18:06:09.


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