Página 1 de 1
Imagens dentro do executável
Enviado: 04 Abr 2015 17:25
por Cavalo Marinho
Boa tarde
tem como colocar as imagens que utilizo nos botoes, combos, etc dentro do executável, ou seja para não precisar levar a pastinha com todas as imagens, sem contar que o usuário pode apagar e o programa ficar muito feio.
Obrigado.
Imagens dentro do executável
Enviado: 04 Abr 2015 20:18
por Toledo
Amigo, é só usar um arquivo de resource (*.RC).
Crie um arquivo RC, por exemplo demo.rc, e informar os arquivos de imagens:
No arquivo PRG ou FMG, use assim:
Código: Selecionar todos
DEFINE WINDOW Form_Main ;
AT 0,0 ;
WIDTH 640 HEIGHT 480 ;
TITLE 'Main Window' ;
ICON 'WORLD' ;
MAIN
@ 200,140 BUTTON ImageButton_1 ;
PICTURE 'button1' ;
ACTION MsgInfo('Button Pressed!','!') ;
WIDTH 29 ;
HEIGHT 29 TOOLTIP 'Print Preview' ;
END WINDOW
No seu projeto incluir o arquivo RC para compilação. Se estiver usando arquivo HBP, incluir o arquivo RC junto com os PRGs. Na IDE, incluir o arquivo RC no projeto,na aba de RC-Bat.
Abraços,
Imagens dentro do executável
Enviado: 05 Abr 2015 19:36
por Cavalo Marinho
Boa noite
Mais uma vez obrigado Toledo, vou fazer os testes, tenho muita coisa pra mudar, "mas não se faz um omelete sem quebrar os ovos", kkkkkkkk
:-Y
Imagens dentro do executável
Enviado: 05 Abr 2015 20:06
por Cavalo Marinho
Toledo infelizmente não funcionou, fiz os primeiros teste mas não deu certo, onde estou errando??? :% segue trechos do sistema onde estou testando
no arquivo fenix.fmg tem este trecho onde fiz as modificações nos três primeiros botoes, já no quarto botão (botao sair) que aponta para imagem funciona perfeito
DEFINE SPLITBOX
DEFINE TOOLBAR TBotoes BUTTONSIZE 104,64 FONT FonteMenu SIZE 11 FLAT
BUTTON tEntidade CAPTION "&Entidades" PICTURE 'BTNCLIENTE' ACTION mEntidade() TOOLTIP "Manuatenção de Entidades"
BUTTON tProdutos CAPTION "&Produtos" PICTURE 'BTNPRODUTO' ACTION mProduto() TOOLTIP "Manuatenção de Produtos"
BUTTON tGruposProd CAPTION "&Grupos" PICTURE 'BTNGRUPO' ACTION mGrupo() TOOLTIP "Manutenção de Grupos de Produtos"
END TOOLBAR
DEFINE TOOLBAR TBtSair BUTTONSIZE 104,64 FONT FonteMenu SIZE 11 FLAT
BUTTON Sair CAPTION "&Sair" PICTURE "imagens\sair.jpg" ACTION sair() TOOLTIP "Encerrar o sistemas"
END TOOLBAR
END SPLITBOX
arquivo fenix.rc
BTNCLIENTE BIPMAP d:\fenix\imagens\clientes.bmp
BTNPRODUTO BIPMAP d:\fenix\imagens\produtos.bmp
BTNGRUPO BIPMAP d:\fenix\imagens\grupos.bmp
arquivo fenix.hbp
-hbexe
-mt
-inc
-L\fenix\libs -lrddleto
-L\fenix\libs -lgenericas
-o\fenix\fenix
Fenix.Prg
consultaAcessos.prg
fConsulta.Prg
fSetup.Prg
farquivos.prg
f_Queries.prg
login.prg
manutBancos.prg
manutCeps.prg
manutCfops.prg
manutContador.prg
manutCstCsosn.prg
manutEmpresa.prg
manutEntidade.prg
manutFormasDePagamento.prg
manutGrupo.Prg
manutHistoricoDeCaixa.prg
manutIbge.prg
manutImpressorasFiscais.prg
manutLog.prg
manutNcmsh.prg
manutOrigemProdutos.prg
manutPedidos.prg
manutProduto.prg
manutRedesCartoes.prg
manutTipoDocumento.prg
manutTributacao.prg
manutUnidades.prg
manutUsuario.prg
manutVendedor.prg
relatUnidades.prg
frelatorios.prg
FENIX.RC
Imagens dentro do executável
Enviado: 05 Abr 2015 22:11
por Toledo
Cavalo Marinho escreveu:BTNCLIENTE BIPMAP d:\fenix\imagens\clientes.bmp
O correto é BI
TMAP para arquivos BMP.
Abraços,
Imagens dentro do executável
Enviado: 06 Abr 2015 09:18
por Cavalo Marinho
Bom dia, desculpe-me a minha falta de atenção :^|
Más mesmo assim, corrigir o arquivo FENIX.RC e mesmo assim não funfou, será que tem alguma relação com botoes em outras telas? acredito que não, é que troquei somente imagens dos botoes da tela principal do sistema, as outras telas ainda permanecem no modo antigo, lembrando que utilizo minigui extend com mingw.
Imagens dentro do executável
Enviado: 06 Abr 2015 11:13
por rubens
Olá...
Também estou tentando compilar com as imagens no programa mas tá dando o seguinte erro:
Código: Selecionar todos
Lines 21857, Functions/Procedures 17
Generating C source output to '.hbmk\win\bcc\TESTANFC.c'... Done.
hbmk2: Compiling resources...
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
Error TESTANFC.rc 2 17: Allocate failed
hbmk2[TESTANFC]: Error: Running resource compiler. 20018
brcc32.exe -IC:\BCC55\Include -Ic:\minigui\harbour\include -Ic:\minigui\include -IC:\hmg\TESTANFC C:\hmg\TESTANFC\TESTANFC.rc -fo.hbmk\win\bcc\TESTANFC.res
****
Failure!
Linha de criação do formulario com o icone
Código: Selecionar todos
DEFINE WINDOW TEMPLATE AT 206 , 305 WIDTH 747 HEIGHT 410 TITLE "Sistema de verificação de NFe/NFCe" ICON "MDVICO" MAIN BACKCOLOR {192,192,192}
arquivo RC
o arquivo MDV.ICO está no path.
não consegui achar esse arquivo se tiver alguma coisa a ver...
Rubens
Imagens dentro do executável
Enviado: 06 Abr 2015 21:27
por Toledo
Cavalo Marinho escreveu:corrigir o arquivo FENIX.RC e mesmo assim não funfou
Amigo, se for possível, compactar (ZIP ou RAR) estes arquivos BMP e anexar aqui neste tópico, assim eu monto um demo para você.
rubens escreveu:Também estou tentando compilar com as imagens no programa mas tá dando o seguinte erro:
Rubens, compactar este arquivo ICO e anexar aqui neste tópico, ai eu faço um demo também!
Abraços,
Imagens dentro do executável
Enviado: 06 Abr 2015 21:41
por Cavalo Marinho
Boa noite Toledo
Segue as imagens em anexo, e são estas mesmas imagens que estou utilizando nos botoes, e estão funcionando quando aponto para a pasta imagens, agora quando o botao aponta para a variável do arquivo fenix.rc não funciona, o botão fica sem imagem.
Imagens dentro do executável
Enviado: 06 Abr 2015 22:36
por Toledo
Amigo, segue em anexo um exemplo!
Abraços,
Imagens dentro do executável
Enviado: 13 Abr 2015 18:09
por rochinha
Amiguinhos,
Não é uma solução, mas uma dica.
Eu sempre compilei meu sistema incluindo nele as .RCs e imagens tornando-o um executável único. Mas com o tempo e seu tamanho aumentando, inclusive pela existencia de muitos módulos e telas e pelo fato de usar BRC não houve mais possibilidade de grudar os .RCs ao EXE.
Parti então para a colocação de todos os recursos em .DLL e não me arrependo, afinal encontramos por ai sempre um SISTEMA.EXE com uma SISTEMA.DLL.
Outra coisa interessante reside no fato de atualizar-mos os clientes e por um erro jogar uma .DLL antiga sobre uma nova e BUG.
Adotei o seguinte esquema:
Meu sistema abre a sua .DLL correspondente caso ela tenha o mesmo nome do EXEcutável. Portanto a SISTEMA1.DLL sera executada apenas pelo SISTEMA1.DLL, a SISTEMA2.DLL sera executada apenas pelo SISTEMA2.DLL, assim por diante.
Ter um EXEcutável e uma DLL para ele é bem profissional e limpo, apesar de eu ainda usar a pasta IMAGENS, ka ka ka.
Imagens dentro do executável
Enviado: 14 Abr 2015 10:31
por Softwhouse
Rochinha, conta aí para nós como é que se faz ...
Imagens dentro do executável
Enviado: 14 Abr 2015 20:13
por rochinha
Amiguinhos,
Vou apresentar como eu uso com
FiveWIN. Para
MiniGUI com certeza o processo será o mesmo só um pouquinho diferente.
Todos os recursos que preciso são chamados dentro de arquivos
.RC e quanto existe uma mudança em telas ou uma manutenção nestes recursos eu refaço a
.DLL, assim:
Código: Selecionar todos
rem @ECHO OFF
rem RC file to 32 bits resources DLL
rem syntax: rc2dll32.bat Your_rc_file !!! without the .RC extension
@ECHO #include "WinApi.ch" > NFWH29.RC
rem @ECHO 1 24 themed.manifest >> NFWH29.RC
@ECHO #include "nfwh.rc" >> NFWH29.RC
@SET FWDIR=%CAMINHO%
@IF EXIST NFWH29.DLL DEL NFWH29.DLL
copy %FWDIR%\dll\SCREEN32.C
%FWDIR%\bin\bcc32 -c -I%FWDIR%\include SCREEN32.C
%FWDIR%\bin\brc32 -r NFWH29.rc
%FWDIR%\bin\ilink32 /Tpd /v %FWDIR%\lib\c0d32.obj dll\SCREEN32.OBJ, NFWH29.DLL,,%FWDIR%\lib\cw32.lib %FWDIR%\lib\import32.lib,, NFWH29.RES
@IF EXIST NFWH29.res DEL NFWH29.RES > NULL
@IF EXIST NFWH29.ils DEL NFWH29.ils > NULL
@IF EXIST NFWH29.ilf DEL NFWH29.ilf > NULL
@IF EXIST NFWH29.ilc DEL NFWH29.ilc > NULL
@IF EXIST NFWH29.ild DEL NFWH29.ild > NULL
@IF EXIST NFWH29.tds DEL NFWH29.tds > NULL
@IF EXIST NFWH29.map DEL NFWH29.map > NULL
REM @IF EXIST NFWH29.rc DEL NFWH29.rc > NULL
@IF EXIST NULL. DEL NULL.
@DIR NFWH29.DLL
@COPY /y NFWH29.DLL C:\SISTEMA
:fim
No exemplo acima estou anexando na
.DLL um único
.RC. Veja abaixo o seu conteúdo:
Código: Selecionar todos
#include "WinApi.ch"
#include "nfwaux.rc"
#include "nfwhbmp.rc"
#include "nfwhdlg.rc"
#include "nfwhdlg1.rc"
#include "nfwhdlg2.rc"
#include "nfwhdlg3.rc"
#include "prev32.rc"
#include "GenLabel.rc"
#include "nfwhtms.rc"
#include "nfwhstat.rc"
#include "nfwform.rc"
Neste
.RC faço a inclusão unificada de todos os
.RCs que necessito. Dividi as
NFWHDLGs em vários porque uso o
WorkShop e ele tem limite de tamanho destes arquivos, assim como tem limite na hora de colar os recursos no executável.
Agora vem a parte mais dificil e dolorosa de todas. Acrescentar a chamada a
.DLL dentro do sistema:
Código: Selecionar todos
Cl_NFWHDLL := StrTran( cFileName( GetModuleFileName( GetInstance() ) ), ".EXE", ".DLL" )
Set Resources to Cl_NFWHDLL
As funções
cFileName( GetModuleFileName( GetInstance() ) ) irão trazer o nome do aplicativo aberto. Em
MiniGUI será necessário buscar funções aproximadas, pois não lembro se são especificas da
FiveWIN.