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?

Imagem

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:

Imagem