Clipper On Line • Ver Tópico - Formulario do FIVEWIN

Formulario do FIVEWIN

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

 

Formulario do FIVEWIN

Mensagempor 09466261000176 » 20 Dez 2015 12:03

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 ?
Avatar de usuário

09466261000176
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 39
Data de registro: 19 Mar 2014 15:50
Cidade/Estado: lorena sp
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Formulario do FIVEWIN

Mensagempor Euclides » 21 Dez 2015 07:29

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
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 154
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Formulario do FIVEWIN

Mensagempor 09466261000176 » 22 Dez 2015 07:33

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()
Avatar de usuário

09466261000176
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 39
Data de registro: 19 Mar 2014 15:50
Cidade/Estado: lorena sp
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Formulario do FIVEWIN

Mensagempor Kapiaba » 22 Dez 2015 09:39

Bom dia, o que você quer fazer, é algo assim? E trocar a foto em tempo real?

Imagem

Abs
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Formulario do FIVEWIN

Mensagempor 09466261000176 » 22 Dez 2015 11:32

Sim exatamente isso!
Avatar de usuário

09466261000176
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 39
Data de registro: 19 Mar 2014 15:50
Cidade/Estado: lorena sp
Curtiu: 0 vez
Mens.Curtidas: 0 vez


Formulario do FIVEWIN

Mensagempor Euclides » 23 Dez 2015 09:45

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
Anexos
testimage.zip
(50.97 KiB) Baixado 151 vezes
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 154
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Formulario do FIVEWIN

Mensagempor 09466261000176 » 23 Dez 2015 10:17

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.
Avatar de usuário

09466261000176
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 39
Data de registro: 19 Mar 2014 15:50
Cidade/Estado: lorena sp
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Formulario do FIVEWIN

Mensagempor Kapiaba » 23 Dez 2015 10:57

Veja \samples\TESTFIND.PRG e TESTBMP.PRG se ajuda. abs.

veja também:

    //-> Pega as Bitmaps de IMAGENS.RES
    MostraOn := LoadBitMap( GetResources(), "ESTOQUE12", 0 ) //-> Livre
    MostraOf := LoadBitMap( GetResources(), "OCUPADA",   0 ) //-> Ocupada


http://forums.fivetechsupport.com/viewtopic.php?f=6&t=23834&p=128305&hilit=cambiar+imagen#p128305

Abs
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Formulario do FIVEWIN

Mensagempor 09466261000176 » 23 Dez 2015 13:34

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.)
Avatar de usuário

09466261000176
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 39
Data de registro: 19 Mar 2014 15:50
Cidade/Estado: lorena sp
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Formulario do FIVEWIN

Mensagempor 09466261000176 » 25 Dez 2015 12:16

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?
Avatar de usuário

09466261000176
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 39
Data de registro: 19 Mar 2014 15:50
Cidade/Estado: lorena sp
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Formulario do FIVEWIN

Mensagempor 09466261000176 » 29 Dez 2015 21:00

É 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.
Avatar de usuário

09466261000176
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 39
Data de registro: 19 Mar 2014 15:50
Cidade/Estado: lorena sp
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Formulario do FIVEWIN

Mensagempor Kapiaba » 08 Jan 2016 09:39

Veja se entende:

#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.

Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Formulario do FIVEWIN

Mensagempor Kapiaba » 08 Jan 2016 09:42

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.

#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
}



Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Formulario do FIVEWIN

Mensagempor Kapiaba » 08 Jan 2016 09:49

Imagem:

Imagem
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Próximo



Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 12 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro