Formulario do FIVEWIN
Moderador: Moderadores
- 09466261000176
- Usuário Nível 1

- Mensagens: 39
- Registrado em: 19 Mar 2014 15:50
- Localização: lorena sp
Formulario do FIVEWIN
Olá amigos. Alguém ai tem uma maneira simples de se REPRINTAR uma figura no formulário. Estou usando RESOURCE e já fiz varias tentativas usando REFRESH no objeto ( oBmp1 ) da imagem após carregá-la e nada. Se alguém tiver um exemplo que funcione eu agradeço.
Trecho do meu programa que uso a imagem.
REDEFINE BITMAP oBmp1 ADJUST ID 4103 RESOURCE '#8066' OF oDlg_CAD_ALUNOS
NO caso quando eu carrego outro registro preciso variar esse RESOURCE com um outro que carregarei. Naturalmente que deverei considerear
RESOURCE '#8066' como uma variavel tipo RESOURCE cVariavel
Mas o problema reside em como carregar essa imagem na variavel e como faria essa referência através de &cVariavel ou simplesmente cVariavel ?
Trecho do meu programa que uso a imagem.
REDEFINE BITMAP oBmp1 ADJUST ID 4103 RESOURCE '#8066' OF oDlg_CAD_ALUNOS
NO caso quando eu carrego outro registro preciso variar esse RESOURCE com um outro que carregarei. Naturalmente que deverei considerear
RESOURCE '#8066' como uma variavel tipo RESOURCE cVariavel
Mas o problema reside em como carregar essa imagem na variavel e como faria essa referência através de &cVariavel ou simplesmente cVariavel ?
-
Euclides
- Usuário Nível 3

- Mensagens: 154
- Registrado em: 12 Mai 2007 14:07
- Localização: São Paulo, Capital
Formulario do FIVEWIN
Olá! ... não sei se entendi bem...
Você poderia usar o formato 'function' (a definição completa está em FIVEWIN.INI - procure por REDEFINE BITMAP )
oBmp := TBitmap():ReDefine( nId, cResName, cBmpFile, ... );
Outra opção seria utilizar macrosubstituição:
REDEFINE BITMAP oBmp ID 90 OF oDlg RESOURCE &cResname ...
(& = e comercial)
e para alterar:
o Bmp:LoadImage( cResName, cBmpFile)
deve ter exemplo na pasta SAMPLES
Acho que é isso... T+ Euclides
Você poderia usar o formato 'function' (a definição completa está em FIVEWIN.INI - procure por REDEFINE BITMAP )
oBmp := TBitmap():ReDefine( nId, cResName, cBmpFile, ... );
Outra opção seria utilizar macrosubstituição:
REDEFINE BITMAP oBmp ID 90 OF oDlg RESOURCE &cResname ...
(& = e comercial)
e para alterar:
o Bmp:LoadImage( cResName, cBmpFile)
deve ter exemplo na pasta SAMPLES
Acho que é isso... T+ Euclides
- 09466261000176
- Usuário Nível 1

- Mensagens: 39
- Registrado em: 19 Mar 2014 15:50
- Localização: lorena sp
Formulario do FIVEWIN
Olá Euclide. Tentei fazendo a macro substituição, porém no formulario não aceitou a referencia da variavel com & deu erro de sintax. Usei ela sem a referencia e exibiu o que foi indicado no momento do instanciamento da mesma. Contudo, quando fui realizar a garga para troca nada aconteceu.
REDEFINE GET oT_SITUACAO VAR T_SITUACAO ID 4112 OF oDlg_CAD_ALUNOS FONT O_TITULO COLOR CLR_AZUL,CLR_LWHITE
REDEFINE BITMAP oBmp4 ADJUST ID 4021 RESOURCE T_RESOURCE OF oDlg_CAD_ALUNOS
REDEFINE BUTTON oBt_troca_status ID 4107 OF oDlg_CAD_ALUNOS ACTION( T_OPER:="N",MUDA_STATUS() )
STATIC FUNCTION MUDA_STATUS()
oBmp4:LoadImage( T_RESOURCE, '#8015' )
oBmp4:REFRESH()
REDEFINE GET oT_SITUACAO VAR T_SITUACAO ID 4112 OF oDlg_CAD_ALUNOS FONT O_TITULO COLOR CLR_AZUL,CLR_LWHITE
REDEFINE BITMAP oBmp4 ADJUST ID 4021 RESOURCE T_RESOURCE OF oDlg_CAD_ALUNOS
REDEFINE BUTTON oBt_troca_status ID 4107 OF oDlg_CAD_ALUNOS ACTION( T_OPER:="N",MUDA_STATUS() )
STATIC FUNCTION MUDA_STATUS()
oBmp4:LoadImage( T_RESOURCE, '#8015' )
oBmp4:REFRESH()
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Formulario do FIVEWIN
Bom dia, o que você quer fazer, é algo assim? E trocar a foto em tempo real?

Abs

Abs
- 09466261000176
- Usuário Nível 1

- Mensagens: 39
- Registrado em: 19 Mar 2014 15:50
- Localização: lorena sp
-
Euclides
- Usuário Nível 3

- Mensagens: 154
- Registrado em: 12 Mai 2007 14:07
- Localização: São Paulo, Capital
Formulario do FIVEWIN
Olá!
REALMENTE eu errei no REDEFINE BITMAP... (não precisa de macro...)
Para compensar, estou enviando um exemplo de como colocar JPG em recursos.
Para compilar, use o BUILDH da pasta SAMPLES
O botão "Change JPG" carrega duas imagens JPG alternadamente e o botão "Bitmap" carrega a imagem BMP do arquivo RC.
Boas Festas!
Euclides
REALMENTE eu errei no REDEFINE BITMAP... (não precisa de macro...)
Para compensar, estou enviando um exemplo de como colocar JPG em recursos.
Para compilar, use o BUILDH da pasta SAMPLES
O botão "Change JPG" carrega duas imagens JPG alternadamente e o botão "Bitmap" carrega a imagem BMP do arquivo RC.
Boas Festas!
Euclides
- Anexos
-
testimage.zip- (50.97 KiB) Baixado 187 vezes
- 09466261000176
- Usuário Nível 1

- Mensagens: 39
- Registrado em: 19 Mar 2014 15:50
- Localização: lorena sp
Formulario do FIVEWIN
Olá Kapiaba, não consegui exito em nenhum dos exemplos. Compilo e não dá erro de sintax, porém não faz nada quando executa ou seja não troca em tempo real.
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Formulario do FIVEWIN
Veja \samples\TESTFIND.PRG e TESTBMP.PRG se ajuda. abs.
veja também:
http://forums.fivetechsupport.com/viewt ... en#p128305
Abs
veja também:
Código: Selecionar todos
//-> Pega as Bitmaps de IMAGENS.RES
MostraOn := LoadBitMap( GetResources(), "ESTOQUE12", 0 ) //-> Livre
MostraOf := LoadBitMap( GetResources(), "OCUPADA", 0 ) //-> Ocupada
Abs
- 09466261000176
- Usuário Nível 1

- Mensagens: 39
- Registrado em: 19 Mar 2014 15:50
- Localização: lorena sp
Formulario do FIVEWIN
Tentei isso também e não funcionou. Olha como eu estou fazendo:
AQUI EU CHAMO PARA TROCAR
-------------------------------------
REDEFINE GET oT_SITUACAO VAR T_SITUACAO ID 4112 OF oDlg_CAD_ALUNOS FONT O_TITULO COLOR CLR_AZUL,CLR_LWHITE
REDEFINE IMAGE oBmp4 ADJUST ID 4021 RESOURCE T_RESOURCE TRANSPARENT OF oDlg_CAD_ALUNOS UPDATE
REDEFINE BUTTON oBt_troca_status ID 4107 OF oDlg_CAD_ALUNOS ACTION( T_OPER:="N",MUDA_STATUS() )
AQUI EU TROCO
-------------------
STATIC FUNCTION TROCA_STATUS(TROCA_STATUS)
DO CASE
CASE TROCA_STATUS = 1 ; T_SITUACAO:= "CURSANDO"
T_RESOURCE := LoadBitMap( GetResources('#8016'), "CURSANDO", 0 )
oBmp4:REFRESH()
CASE TROCA_STATUS = 2 ; T_SITUACAO:= "FINALIZADO"
T_RESOURCE := LoadBitMap( GetResources('#8015'), "FINALIZADO", 0 )
oBmp4:REFRESH()
ENDCASE
BEGIN TRANSACTION
cQuery:='UPDATE alunos SET SITUACAO='+TRANSFORMA_SQL(T_SITUACAO,"T",10,0)+' WHERE ID_ALUNO='+TRANSFORMA_SQL(T_ID_ALUNO,"N",10,0)+' LIMIT 1 '
COMITAR_DADOS_SQL(cQuery)
END TRANSACTION
oT_SITUACAO:REFRESH()
RETURN (.T.)
AQUI EU CHAMO PARA TROCAR
-------------------------------------
REDEFINE GET oT_SITUACAO VAR T_SITUACAO ID 4112 OF oDlg_CAD_ALUNOS FONT O_TITULO COLOR CLR_AZUL,CLR_LWHITE
REDEFINE IMAGE oBmp4 ADJUST ID 4021 RESOURCE T_RESOURCE TRANSPARENT OF oDlg_CAD_ALUNOS UPDATE
REDEFINE BUTTON oBt_troca_status ID 4107 OF oDlg_CAD_ALUNOS ACTION( T_OPER:="N",MUDA_STATUS() )
AQUI EU TROCO
-------------------
STATIC FUNCTION TROCA_STATUS(TROCA_STATUS)
DO CASE
CASE TROCA_STATUS = 1 ; T_SITUACAO:= "CURSANDO"
T_RESOURCE := LoadBitMap( GetResources('#8016'), "CURSANDO", 0 )
oBmp4:REFRESH()
CASE TROCA_STATUS = 2 ; T_SITUACAO:= "FINALIZADO"
T_RESOURCE := LoadBitMap( GetResources('#8015'), "FINALIZADO", 0 )
oBmp4:REFRESH()
ENDCASE
BEGIN TRANSACTION
cQuery:='UPDATE alunos SET SITUACAO='+TRANSFORMA_SQL(T_SITUACAO,"T",10,0)+' WHERE ID_ALUNO='+TRANSFORMA_SQL(T_ID_ALUNO,"N",10,0)+' LIMIT 1 '
COMITAR_DADOS_SQL(cQuery)
END TRANSACTION
oT_SITUACAO:REFRESH()
RETURN (.T.)
- 09466261000176
- Usuário Nível 1

- Mensagens: 39
- Registrado em: 19 Mar 2014 15:50
- Localização: lorena sp
Formulario do FIVEWIN
Caro Kapiaba, com o ultimo exemplo que usei o maximo que acontece é desaparecer a imagem que estava instanciada antes de iniciar o formulario. Quando clico no botão para trocar a imagem a que está amostra some. Já fiz de tudo, mas, não funciona. Em HWGUI isso é muito simples. Simplesmente troco o conteúdo da variavel e faço um REFRESH() e pronto lá está aimagem. Será que não existe alguima rotina pronta que basta apenas passar o resource e pronto ela troca?
- 09466261000176
- Usuário Nível 1

- Mensagens: 39
- Registrado em: 19 Mar 2014 15:50
- Localização: lorena sp
Formulario do FIVEWIN
É nessas horas quando não encontramos nada que sirva nessa porcaria de linguagem clipper transvestida é que nos dá vontade de investir numa linguagem de verdade. Essa droga não tem nada de concreto que possamos usar com segurança. Nada funciona. Melhor mesmo é usar VB ou C# Adeus linguagem monolitica.
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Formulario do FIVEWIN
Veja se entende:
Necessita uma versão mais atual do fivewin: FWH1507 por exemplo.
Código: Selecionar todos
#include "FiveWin.ch"
#define RT_RCDATA 10
function Main()
local oDlg, oHand, oBmp1, cJpg, lLd:=.F.
DEFINE DIALOG oDlg RESOURCE "Test"
REDEFINE IMAGE oBmp1 ID 110 OF oDlg // RESOURCE "BOAS_FESTAS"
*
if Len( cJpg := cResToStr( "JPG_2", RT_RCDATA ) ) != 0
oBmp1:LoadFromMemory( cJpg )
endif
*
REDEFINE BUTTON ID 11 OF oDlg ACTION (lLd:=!lLd, cJpg:=cResToStr(iif(lLd, "JPG_1", "JPG_2"), RT_RCDATA ), oBmp1:LoadFromMemory( cJpg ), oBmp1:refresh())
REDEFINE BUTTON ID 12 OF oDlg ACTION (oBmp1:cResname := "BOAS_FESTAS", oBmp1:Reload())
ACTIVATE DIALOG oDlg CENTERED
return nil
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
HINSTANCE GetResources( void );
HB_FUNC( CRESTOSTR ) // ( cnResName, cType ) --> cResourceBytes
{
HGLOBAL hglb;
LPCTSTR lpName;
LPCTSTR lpType;
HRSRC hRes;
if( HB_ISNUM( 1 ) )
lpName = ( LPCSTR ) hb_parnl( 1 );
else
lpName = ( LPCSTR ) hb_parc( 1 );
lpType = MAKEINTRESOURCE( hb_parni( 2 ) );
hRes = FindResource( GetResources(), lpName, lpType );
if( hRes )
{
hglb = LoadResource( GetResources(), hRes );
if( hglb )
hb_retclen( ( LPSTR ) LockResource( hglb ), SizeofResource( GetResources(), hRes ) );
else
hb_retc( "" );
}
else
hb_retc( "" );
}
#pragma ENDDUMP
*------------------------------------------------------------------------------
*
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Formulario do FIVEWIN
Arquivo .RC
Infelizmente o arquivo .RC nao cabe nesta pagina, mas o nome dele no \samples e:
JPGENRES.RC e o .PRG JPGENRES.PRG Se nao tiver, envie um email que eu te mando.
Infelizmente o arquivo .RC nao cabe nesta pagina, mas o nome dele no \samples e:
JPGENRES.RC e o .PRG JPGENRES.PRG Se nao tiver, envie um email que eu te mando.
Código: Selecionar todos
#define RT_RCDATA 10
JPG_1 RT_RCDATA NONDISCARDABLE "images/angelina.jpg"
JPG_2 RT_RCDATA NONDISCARDABLE "images/Priyanka.jpg"
TEST DIALOG 17, 36, 235, 260
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "TestMap"
FONT 8, "MS Sans Serif"
{
CONTROL "", 110, "TImage", 0 | WS_CHILD | WS_VISIBLE, 2, 2, 235, 231
PUSHBUTTON "Change JPG", 11, 60, 240, 50, 15
PUSHBUTTON "Bitmap", 12, 125, 240, 50, 15
}
