Se pueden realizar cambios en Pushbutton?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

Se pueden realizar cambios en Pushbutton?

Mensagem por Adalberto »

Maestros y amigos, buenas noches

Estoy trabajando con Harbour 3.2 y con botones, para eso utilizo una funcion como la que sigue:

Código: Selecionar todos

oThisButton:= wvgPushbutton():New()
oThisButton:Caption:= cImagen
oThisButton:Create(,, {-nFs, -nCi}, {-nFi, -nCd})
oThisButton:PointerFocus:= .F.
oThisButton:Border:= .F.
oThisButton:TooltipText:= cToolTip
oThisButton:Activate:= &cActivar.
RELEASE cActivar
RETURN(oThisButton)
Esta funcionando muy bien, ahora recurro a ustedes porque necesito cambiar la imagen y el texto del ToolTipText durante la ejecución y no encuentro la manera de hacerlo.

Por favor ayudenme con esto, les agradezco mucho.

Atte. Adalberto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Se pueden realizar cambios en Pushbutton?

Mensagem por JoséQuintas »

Nunca precisei disso, e não sei dizer se dá pra fazer.

Mas talvez simplifique criar dois buttons, e usar a opção de Hide() e Show() - esconder/mostrar
Ou se o segundo button for temporário, quando não precisar mais usar o Destroy()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

Se pueden realizar cambios en Pushbutton?

Mensagem por Adalberto »

Maestro JoséQuintas, buenos días.

Muchas gracias por responder y ayudarme.

Creé un botón cuya acción es poner todo en modo oscuro (dark theme), y ahí me gustaría que los botones cambien por botones similares pero con fondo negro; era sólo eso: Presentación.
Esa idea de crear dos botones y mostrar/esconder me parece más práctica, me pondré a trabajar sobre eso.
De todas maneras y a modo de compartir con los amigos del foro voy a mostrar las ventanas con colores diferentes (todo en gráfico modo consola, así se dice?)
VentanaDarkTeme.jpg
VentanaDarkTeme.jpg (9.58 KiB) Exibido 1060 vezes
Anexos
VentanaColor.jpg
VentanaColor.jpg (10.17 KiB) Exibido 1060 vezes
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Se pueden realizar cambios en Pushbutton?

Mensagem por ANDRIL »

Pois é seria uma coisa tão simples em diversas linguagens atualizar o texto/label de um botão, porém com a Gtwvg não conseguimos fazer.
Se tivesse esta simples opção nos objetos não precisávamos ficar repintando a tela direto. Não achei um método o wvg_pushbutton que fizesse isso com eficácia.
Se usar

Código: Selecionar todos

oThisButton:setCaption("botao2")
altera o texto do botão mas não se mantem.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Se pueden realizar cambios en Pushbutton?

Mensagem por JoséQuintas »

ANDRIL escreveu:Pois é seria uma coisa tão simples em diversas linguagens atualizar o texto/label de um botão, porém com a Gtwvg não conseguimos fazer.
Se tivesse esta simples opção nos objetos não precisávamos ficar repintando a tela direto. Não achei um método o wvg_pushbutton que fizesse isso com eficácia.
Se usar
oThisButton:setCaption("botao2")
altera o texto do botão mas não se mantem.
Esquisito isso acontecer.
Olhei o fonte do pushbutton e ele faz igual qualquer outra linguagem, usando a API do Windows que troca o texto.

Código: Selecionar todos

METHOD WvgPushButton:setCaption( xCaption, cDll )
   __defaultNIL( @xCaption, ::caption )
   ...
   ::sendMessage( WIN_WM_SETTEXT, 0, ::caption )
Tá falando do pushbutton mesmo, ou do outro?
Porque chamou atenção o "ficar repintando".
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Se pueden realizar cambios en Pushbutton?

Mensagem por JoséQuintas »

Só curiosidade:

o pushbutton recebe por herança wvgwindow, em wnd.prg, já que o button também é uma janela Windows.

Código: Selecionar todos

CREATE CLASS WvgPushButton INHERIT WvgWindow
e wvgWindow, que é a janela, acrescenta a hWnd, o handle, dela própria, pra chamar a API do Windows.

Código: Selecionar todos

METHOD WvgWindow:sendMessage( nMessage, nlParam, nwParam )
   RETURN wapi_SendMessage( ::hWnd, nMessage, nlParam, nwParam )
igual qualquer lib gráfica que usa API do Windows.
É dessa parte que eu gosto, e que teria futuro, seja pra uso da GTWVG ou pra uso de outras LIBs... mas fazendo parte do Harbour.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Se pueden realizar cambios en Pushbutton?

Mensagem por ANDRIL »

José, quando testei criei o botão dentro de uma rotina que uso DBEDIT. O botão já estava criado antes de entrar nela rotina. No Dbedit usava o F1 para mudar o texto com oThisButton:setCaption("botao2") e mudava. Quando apertava setas para navegar no dbedit o texto voltava ao anterior, como se tivesse um restscreen que não havia.

Agora fiz um outro teste fora deste Dbedit e permaneceu o texto que é o normal. Mistério! Uso texto puro nestas telas nada gráfico.
Menos mau que agora sei que de uma certa forma esta ok.

Aproveitando, teria como alterarmos o tamanho do texto do botão e o background?
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Se pueden realizar cambios en Pushbutton?

Mensagem por JoséQuintas »

Será que testou o wvgPushbutton? ou o wvt_pushbutton?

Se não me engano, isso dependeria da janela DIALOG, mas na DIALOG não permite @say/@get
Acabei nunca pesquisando.
Meu button NÃO é o original, e altero o tamanho da imagem. Dependendo do tamanho da imagem, sobra menos espaço pra texto, por isso redimensionar automático é interessante.

Parece algo complicado, mas é relativamente simples.
Antes de carregar a imagem, vejo altura e largura, e carrego a imagem com algo do tipo altura - fontsize
é esse tipo de cálculo que não funcionava na gtwvg do harbour 3.2, mas funciona no harbour 3.4.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Se pueden realizar cambios en Pushbutton?

Mensagem por JoséQuintas »

Tem coisas que tem a ver com o Windows.
O button da GTWVG é o padrão do Windows.
Se lá na documentação de API do Windows disser que pode alterar a cor de fundo, aí podemos alterar.
Caso contrário, só usando button personalizado, que é o que as LIBs normalmente fazem, criam seu próprio button com mais opções.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

Se pueden realizar cambios en Pushbutton?

Mensagem por Adalberto »

Maestro JoséQuintas, buenas tardes

Creé dos botones como usted propuso y dependiendo de si es modo oscuro o full color oculto uno y muestro el otro, todo esta funcionando muy bonito.

Muchas gracias por ayudarme, Bendiciones para usted y para todos los amigos del foro.

Abrazos, Adalberto
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Se pueden realizar cambios en Pushbutton?

Mensagem por Fernando queiroz »

NA HWGUI eu fiz assim

oDlg:oOwnerbutton1:Settext("F1-SAIR") // Trocal label
oDlg:OOwnerbutton1:oBitmap := HBitmap():Addresource("EXIT16BMP") //Troca imagem
oDlg:OOwnerbutton1:lTransp := .T.
oDlg:oOwnerbutton1:Paint()

e esta funcionando ok
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Responder