Clipper On Line • Ver Tópico - COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor Fernando queiroz » 26 Set 2019 11:53

Tenho o seguinte OWNERBUTTON

@ 207,104 OWNERBUTTON oOwnerbutton3 SIZE 63,30 ;
TEXT 'F1-SAIR' ;
COORDINATES 0, 15, 0, 0 ;
FONT HFont():Add( '',0,-11,400,,,) ;
BITMAP 'EXIT16BMP' FROM RESOURCE ;
COORDINATES 0, 1, 0, 0 ;
TOOLTIP 'Sai da Rotina / Finaliza Venda' ;
ON CLICK {|| FormVendas:oPhantom:SETFOCUS() ,IF(MEMVAR->w_vNF > 0.00 , PAGAMENTO_GRAFICO( ), oDlg:Close() ) }

E gostaria em tempo de Execução mudar o TEXT e o BITMAP
já tentei usando o REDEFINE mas não acontece nada

REDEFINE OWNERBUTTON oOwnerbutton3 OF FormVendas ID 1001 ;
TEXT 'F1-PAGAR' ;
BITMAP 'Dollar' FROM RESOURCE

Alguem teria uma dica de como fazer ??? :% :%
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor asimoes » 06 Out 2019 17:16

Usa

ThisForm:oButton:SetText("novo valor")
ThiForm:oBitmap:= HBitmap():AddFile('TESTE.BMP')
ThisForm:oButton:Refresh()

Não testei, mas o olhando o fonte da classe deve ser por ai.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor asimoes » 06 Out 2019 18:31

Exemplo trocando o label e imagem de botão Ownerbutton em tempo de execução

STATIC FUNCTION oButtonex1_onClick

THREAD STATIC aBit, nImg := 1

   IF aBit = Nil
      aBit := {"img001.jpg", "img002.jpg"}
      nImg := 1
   ENDIF
     
   Thisform:oOwnerbutton1:Settext(StrZero(nImg,3)) //Troca o texto do botão
   Thisform:OOwnerbutton1:oBitmap := HBitmap():AddFile(aBit[nImg])
   Thisform:OOwnerbutton1:xb := 10 // alinha 10 pixel a esquerda do botão
   Thisform:OOwnerbutton1:widthb  := 24 //redimensiona a imagem do botão (largura)
   Thisform:OOwnerbutton1:heightb := 24 //redimensiona a imagem do botão (altura)
   Thisform:oOwnerbutton1:Refresh()
   
   nImg ++
   
   IF nImg > 2
      nImg := 1
   ENDIF
   
RETURN .T.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor asimoes » 06 Out 2019 18:46

2019-10-06 18_44_14-Form1.png
2019-10-06 18_44_14-Form1.png (2.1 KiB) Visualizado 2772 vezes

2019-10-06 19_12_54-Form1.png
2019-10-06 19_12_54-Form1.png (2.22 KiB) Visualizado 2771 vezes

STATIC FUNCTION oButtonex1_onClick

THREAD STATIC aBit, nImg := 1

   IF aBit = Nil
      aBit := {"img001.jpg", "img002.jpg"}
      nImg := 1
   ENDIF
     
   Thisform:oOwnerbutton1:Settext(StrZero(nImg,3)) // Trocal label
   Thisform:OOwnerbutton1:oBitmap := HBitmap():AddFile(aBit[nImg]) //Troca imagem
   Thisform:OOwnerbutton1:xb := 10 //Ajuste posição Horizontal
   Thisform:OOwnerbutton1:yb := -2 //Ajuste posição Vertical
   Thisform:OOwnerbutton1:widthb  := 24 // Ajuste largura
   Thisform:OOwnerbutton1:heightb := 24 //Ajuste Altura
   Thisform:OOwnerbutton1:lTransp := .T.
   Thisform:oOwnerbutton1:Refresh()
   
   nImg ++
   
   IF nImg > 2
      nImg := 1
   ENDIF
   
RETURN .T.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor asimoes » 06 Out 2019 19:18

Fica mais arrumado
   WITH OBJECT Thisform
      :oOwnerbutton1:Settext(StrZero(nImg,3))
      :OOwnerbutton1:oBitmap := HBitmap():AddFile(aBit[nImg])
      :OOwnerbutton1:xb      := 10
      :OOwnerbutton1:yb      := -2
      :OOwnerbutton1:widthb  := 24
      :OOwnerbutton1:heightb := 24
      :OOwnerbutton1:lTransp := .T.
      :oOwnerbutton1:Refresh()
   END
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor JoséQuintas » 06 Out 2019 19:51

Não sei dizer na hwgui, mas depende de como o button foi criado pra funcionar direito.
Pela API do Windows é só usar o SendMessage() com o handle da janela e a imagem/texto.
Mas se quando criou indicou que era texto, ou imagem... só vai aceitar isso: uma coisa ou outra.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor Fernando queiroz » 06 Out 2019 21:58

infelizmente não funciona!!
somente se CLICAR NO BOTÃO que ele muda,
Quero que a troca ocorra por condição e nao por click
:% :% :%
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor asimoes » 06 Out 2019 22:14

Posta o código que a gente tenta resolver
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor Fernando queiroz » 06 Out 2019 22:15

CONSEGUI!!!!!

FormVendas:oOwnerbutton1:Settext("F1-Pagar") // Trocal label
FormVendas:OOwnerbutton1:oBitmap := HBitmap():AddFile("Cashregister") //Troca imagem
// FormVendas:OOwnerbutton1:xb := 10 //Ajuste posição Horizontal
// FormVendas:OOwnerbutton1:yb := -2 //Ajuste posição Vertical
// FormVendas:OOwnerbutton1:widthb := 24 // Ajuste largura
// FormVendas:OOwnerbutton1:heightb := 24 //Ajuste Altura
FormVendas:OOwnerbutton1:lTransp := .T.
FormVendas:oOwnerbutton1:Paint()
FormVendas:oOwnerbutton1:SETFOCUS()
FormVendas:oOwnerbutton1:refresh()

Só falta pegar o bitmap do resouce , não estou sabendo como fazer :)) :)) :))
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor asimoes » 06 Out 2019 22:18

Trocar
Addfile por Addresource
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor Fernando queiroz » 06 Out 2019 22:26

showwwwwww

Obrigado pela ajuda!!

o problema era que tinha de acrescentar

FormVendas:oOwnerbutton1:Paint()
FormVendas:oOwnerbutton1:SETFOCUS()
FormVendas:oOwnerbutton1:refresh()

pois sem isso ele só funciona com CLICK ou passando o mouse
:{ :{ :{
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor JoséQuintas » 07 Out 2019 08:04

Fernando queiroz escreveu:o problema era que tinha de acrescentar
FormVendas:oOwnerbutton1:Paint()
FormVendas:oOwnerbutton1:SETFOCUS()
FormVendas:oOwnerbutton1:refresh()


Só comentário:
esqueci do detalhe de "owner draw".
No controle padrão, quem repinta é o próprio Windows.
Mas no controle owner draw, é o próprio controle quem tem que repintar.
É isso que a chamada de : Paint() faz, o próprio button se repinta, e não o Windows.

Mas ela deveria ter sido chamada automaticamente ao trocar texto e/ou imagem e/ou no :refresh()
Talvez mais interessante ajustar a LIB, trocar o button:obitmap := por uma rotina SetGet.
Nada do outro mundo: uma função no lugar de atribuição direta, assim a função chamaria o Paint()/Refresh().
Só afetaria dentro do controle, método SetGet é justamente pra substituir a atribuição direta, sem precisar chamar como função/método.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

COMO MUDAR O TEXT E O BITMAP DO OWNERBUTTON?

Mensagempor Fernando queiroz » 07 Out 2019 10:30

JoséQuintas escreveu:
Fernando queiroz escreveu:o problema era que tinha de acrescentar
FormVendas:oOwnerbutton1:Paint()
FormVendas:oOwnerbutton1:SETFOCUS()
FormVendas:oOwnerbutton1:refresh()


Só comentário:
esqueci do detalhe de "owner draw".
No controle padrão, quem repinta é o próprio Windows.
Mas no controle owner draw, é o próprio controle quem tem que repintar.
É isso que a chamada de : Paint() faz, o próprio button se repinta, e não o Windows.

Mas ela deveria ter sido chamada automaticamente ao trocar texto e/ou imagem e/ou no :refresh()
Talvez mais interessante ajustar a LIB, trocar o button:obitmap := por uma rotina SetGet.
Nada do outro mundo: uma função no lugar de atribuição direta, assim a função chamaria o Paint()/Refresh().
Só afetaria dentro do controle, método SetGet é justamente pra substituir a atribuição direta, sem precisar chamar como função/método.


Acho que não faz direto pois em alguns casos ela só muda quando pressionado, no meu caso queria que mudasse por condição
testei com REDEFINE deu certo mas com click do botão
com a dica do pessoal aconteceu a mesma coisa, depois acrescentei o PAINT() e REFRESH() ele mudava quando passava o mouse, enfim
com SETFOCUS() o danado mudouuuuuu :-Y :-Y :-Y :-Y
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes




Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 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