Página 1 de 2
Formulario do FIVEWIN
Enviado: 20 Dez 2015 13:03
por 09466261000176
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 ?
Formulario do FIVEWIN
Enviado: 21 Dez 2015 08:29
por Euclides
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
Formulario do FIVEWIN
Enviado: 22 Dez 2015 08:33
por 09466261000176
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()
Formulario do FIVEWIN
Enviado: 22 Dez 2015 10:39
por Kapiaba
Bom dia, o que você quer fazer, é algo assim? E trocar a foto em tempo real?
Abs
Formulario do FIVEWIN
Enviado: 22 Dez 2015 12:32
por 09466261000176
Sim exatamente isso!
Formulario do FIVEWIN
Enviado: 22 Dez 2015 13:21
por Kapiaba
Formulario do FIVEWIN
Enviado: 23 Dez 2015 10:45
por Euclides
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
Formulario do FIVEWIN
Enviado: 23 Dez 2015 11:17
por 09466261000176
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.
Formulario do FIVEWIN
Enviado: 23 Dez 2015 11:57
por Kapiaba
Veja \samples\TESTFIND.PRG e TESTBMP.PRG se ajuda. 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
http://forums.fivetechsupport.com/viewt ... en#p128305
Abs
Formulario do FIVEWIN
Enviado: 23 Dez 2015 14:34
por 09466261000176
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.)
Formulario do FIVEWIN
Enviado: 25 Dez 2015 13:16
por 09466261000176
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?
Formulario do FIVEWIN
Enviado: 29 Dez 2015 22:00
por 09466261000176
É 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.
Formulario do FIVEWIN
Enviado: 08 Jan 2016 10:39
por Kapiaba
Veja se entende:
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
*------------------------------------------------------------------------------
*
Necessita uma versão mais atual do fivewin: FWH1507 por exemplo.
Formulario do FIVEWIN
Enviado: 08 Jan 2016 10:42
por Kapiaba
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.
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
}
Formulario do FIVEWIN
Enviado: 08 Jan 2016 10:49
por Kapiaba
Imagem:
