Aquisição de arquivo JPG em arquivo .RC

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

Aquisição de arquivo JPG em arquivo .RC

Mensagem por Mario Mesquita »

Bom dia, pessoal.

Estou tentando resolver uma coisa sem sucesso até agora: Eu tenho umas imagens no arquivo de recursos (.RC) da HMG. Nos objetos, como Image, vc pode pega-los via programa. Também os uso na MiniPrint, para imprimir em formulários.

Meu problema é que estou modelando um PDF usando aquela lib HPDF. Aparentemente na proprieddade Picture não pega a imagem declarando o nome dela no arquivo .RC. Nos exemplos da HMG só tem referência direta, tipo "MeuJPG.jpg".

Então estou tentando achar alguma função que adquira a imagem para tentar botar na Picture por variável. Tentei algumas mas não consegui até agora. Já tentei até pela IA mas ela sugere funções que o compilador não reconhece, deve ser de algum fork.

Se alguém já teve essa experiência e puder compartilhar, agradeço.

Saudações,
Mario.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Aquisição de arquivo JPG em arquivo .RC

Mensagem por JoséQuintas »

Atenção que na harupdf tem função diferente pra arquivo físico ou da memória.

Uso resource em RC, em MySQL e também no programa.
Depende da finalidade de uso, e da necessidade de existência.

Código: Selecionar todos

/*
ZE_RESOURCE - RESOURCES
2016.05.20 - José Quintas
*/

#include "josequintas.ch"

FUNCTION ze_LoadBinary( cFileName )

   LOCAL cTxt

   cFileName := Lower( cFileName )
   DO CASE
   CASE cFileName == "jpsenha.sql"; #pragma __binarystreaminclude "sql\table\jpsenha.sql" | RETURN %s
   CASE cFileName == "jpbinary.sql"; #pragma __binarystreaminclude "sql\table\jpbinary.sql" | RETURN %s
   CASE cFileName == "jpconfi.sql"; #pragma __binarystreaminclude "sql\table\jpconfi.sql" | RETURN %s
   CASE cFileName == "jpreguso.sql"; #pragma __binarystreaminclude "sql\table\jpreguso.sql" | RETURN %s
   OTHERWISE
      cTxt := ze_binaryFromSQL( cFileName )
   ENDCASE

   RETURN cTxt
Exemplos do meu uso:

- ícones das telas, em resource, o programa precisa funcionar mesmo não existindo MySQL

- arquivos básicos do SQL, pra criar os arquivos básicos do SQL precisam existir no programa, uso esse pragma

- Outros arquivos e imagens, salvo no MySQL, incluindo arquivos pra harupdf.

O pragma, na hora da compilação, acrescenta o arquivo físico como parte do EXE.

Deixo tudo num único PRG, assim dá pra olhar o tamanho ocupado por resource.
Se ficar espalhando pragma pelos fontes, pode acabar colocando arquivo repetido, e gastando espaço à toa.
Deixando tudo junto, pode decidir depois quais pode salvar em MySQL ou outra alternativa.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Aquisição de arquivo JPG em arquivo .RC

Mensagem por JoséQuintas »

resource.png
Só pra lembrar:
A compilação do harbour transforma em fonte C, e depois o fonte C é compilado gerando o objeto (.o em mingw)
Não tem limite, mas pra que ficar aumentando o tamanho do EXE com coisas que pode baixar depois.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder