Clipper On Line • Ver Tópico - DEMO.PRG - Exemplo Simples com GTWVW e GTWVG

DEMO.PRG - Exemplo Simples com GTWVW e GTWVG

Outras bibliotecas visuais e IDEs para Harbour/xHarbour (xHGTK/HbWxW/GtWvT/GtWvW/WvWtools.etc)

Moderador: Moderadores

 

DEMO.PRG - Exemplo Simples com GTWVW e GTWVG

Mensagempor paulovirt » 06 Set 2016 15:39

Amigos

Estou tentando usar a seguinte função:

AddObj(lastwindow,{|janela|WVW_DrawButton(JANELA, 1,2,1,23 ,"Cadastrar",,,RGB(240,230,140),, )})

Porém, o botão aparece estático. Gostaria de saber como torná-lo clicável e atribuir a ele uma função. Se possível também, saber como aumentar o tamanho da fonte.

Grato!

Paulo
Avatar de usuário

paulovirt
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 69
Data de registro: 29 Jan 2007 09:00
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

DEMO.PRG - Exemplo Simples com GTWVW e GTWVG

Mensagempor microvolution » 04 Jun 2017 23:57

xiiii
aí não aparece onde?
mostra o código por favor!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

DEMO.PRG - Exemplo Simples com GTWVW e GTWVG

Mensagempor acelconsultoria » 20 Jun 2017 09:36

Bom dia,

Eu não sei como você quer colocar esses botões, se for pra colocar vários em sequência, é melhor você optar por montar uma toolbar com a GTWVW.

Mas caso você queira colocar apenas um ou outro botão na tela, é mais fácil você colocar um PushButton, que a sintaxe é bem simples de entender e você já coloca a função a ser chamada nele mesmo:
wvw_pbCreate( nJanela, 22, 42, 22, 48, "Imprimir", , {|| Relatorio() } )


Onde:
nJanela: número da janela onde o botão será criado
22, 42, 22, 48: coordenadas de linha inicial, coluna inicial, linha final e coluna final
"imprimir": rótulo do botão
{|| Relatorio() } : Code Block que irá chamar a função Relatorio()
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Avatar de usuário

acelconsultoria
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 231
Data de registro: 10 Jan 2006 16:05
Cidade/Estado: Itápolis-SP
Curtiu: 6 vezes
Mens.Curtidas: 6 vezes

DEMO.PRG - Exemplo Simples com GTWVW e GTWVG

Mensagempor JoséQuintas » 20 Jun 2017 10:05

O post original é antigo, quase um ano atrás.
Caso ainda não tenha resolvido, a sugestão é quase a mesma da anterior o pushbutton, mas pra GTWVG o wvgPushButton.
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: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

DEMO.PRG - Exemplo Simples com GTWVW e GTWVG

Mensagempor paulovirt » 20 Jun 2017 17:03

Realmente, é um post antigo, e agradeço imensamente pela colaboração. Farei os devidos testes.
Avatar de usuário

paulovirt
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 69
Data de registro: 29 Jan 2007 09:00
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

DEMO.PRG - Exemplo Simples com GTWVW e GTWVG

Mensagempor paulovirt » 20 Jun 2017 19:58

Amigos, estou testando os códigos. Achei muito interessante

Gostaria de uma dica de como fazer uma toobar com esses recursos e se é possível formatar o texto dos botões, mudar cor e/ou inserir imagens.

Grato!

Paulo
Avatar de usuário

paulovirt
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 69
Data de registro: 29 Jan 2007 09:00
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

DEMO.PRG - Exemplo Simples com GTWVW e GTWVG

Mensagempor acelconsultoria » 21 Jun 2017 09:52

Bom dia, Paulo.

Acredito que o Quintas deva ter boas cartas na manga sobre trabalhar com Toolbar. Sei que com a GTWVW, já é um processo que exige muitas linhas de programação.

Existe um exemplo na pasta contrib\gtwvw\tests\DEMO.PRG que mostra bem o funcionamento da toolbar com a GTWVW, mas gasta-se um certo tempo para "preparar o terreno" e utilizar.

1. Preparar as imagens que você quer utilizar na toolbar. Você pode usar as que você tem aí, ou buscar na internet algum conjunto de ícones que satisfaça seu gosto visual. Mas o importante nisso, é que as imagens devem estar no formato BMP, e eu aconselho uma resolução de 72x72, pois aí dá pra você usar no tamanho menor, sem perder qualidade.

2. No início do módulo, você precisa incluir as #define's que servirão como referência de ação na toolbar, no exemplo DEMO.PRG está assim:
#define IDM_NETCONNECT    401
#define IDM_NETDISCONNECT 402
#define IDM_BACK          403
#define IDM_FORWARD       404
#define IDM_COPY          405
#define IDM_PASTE         406


3. A função que cria a toolbar e acrescenta os botões. Pra isso, usa-se as funções wvw_TbCreate() e wvw_tbAddButton(). Note que no exemplo da DEMO.PRG, a maioria dos botões foram configurados pra utilizar ícones padrão, definidos no arquivo include "commctrl.h". Porém, você pode usar os seus BMPs também, observando onde está comentado "using custom bitmaps":

PROCEDURE CreateToolbar( nWinNum )

   // for toolbar:
   LOCAL nSysBitmap := 1     // como a imagem vai aparecer - 0:não aparece 1:formato pequeno 2:formato grande
   LOCAL lDisplayText := .F. // .T. exibe texto no botão, .F. o texto aparece como hint

   wvw_tbDestroy( nWinNum )   // limpar o buffer para criar a toolbar

  IF Empty( wvw_tbCreate( nWinNum, lDisplayText, , nSysBitmap ) )
      lboxmessage( "FAILED create toolbar" )
      RETURN
   ENDIF

   /* system bitmaps use constants in commctrl.h */

   /* using system view bitmaps */
   wvw_tbAddButton( nWinNum, IDM_NETCONNECT,    9  /*VIEW_NETCONNECT*/, "Connect", 2 )
   wvw_tbAddButton( nWinNum, IDM_NETDISCONNECT, 10 /*VIEW_NETDISCONNECT*/, "Dis", 2 )
   wvw_tbAddButton( nWinNum )  // separator

   /* using system history bitmaps */
   wvw_tbAddButton( nWinNum, IDM_BACK,          0 /*HIST_BACK*/,   "Back", 3 )
   wvw_tbAddButton( nWinNum, IDM_FORWARD,       1 /*HIST_FORWARD*/, "Forward", 3 )
   wvw_tbAddButton( nWinNum )  // separator

   /* using custom bitmaps */
   wvw_tbAddButton( nWinNum, IDM_DEMO_BROWSE, hb_DirBase() + "def2.bmp", "Browse", 0 )
   wvw_tbAddButton( nWinNum, IDM_DEMO_GET,    hb_DirBase() + "vouch1.bmp",  "Get", 0 )
   wvw_tbAddButton( nWinNum )  // separator

   /* using system standard bitmaps */
   wvw_tbAddButton( nWinNum, IDM_COPY,    1 /*STD_COPY*/, "Copy", 1 )
   wvw_tbAddButton( nWinNum, IDM_PASTE,   2 /*STD_PASTE*/, "Paste",  1 )
   wvw_tbAddButton( nWinNum )  // separator

   wvw_tbAddButton( nWinNum, IDM_HELP_INFO, 10 /*STD_PROPERTIES*/, "Info", 1 )
   wvw_tbAddButton( nWinNum, IDM_HELP_HELP, 11 /*STD_HELP*/, "Help", 1 )

   RETURN


A toolbar da GTWVW não oferece opção de alterar a fonte e o tamanho. Apenas temos como escolher exibir ou não o texto dentro dos botões.

4. Precisa de uma função que faz a leitura dos eventos, aguardando o usuário clicar em alguma opção da toolbar. Na DEMO.PRG, a função "nAfterInkey()" faz esse papel. Essa função não existe pronta na GTWVW, tem que ser incluída no seu programa, conforme o exemplo.
STATIC FUNCTION nAfterInkey( nKey )

   // check if nkey is:
   // (1) menu command, or
   // (2) mouse button action
   LOCAL bAction
   LOCAL nKeyStd := hb_keyStd( nKey )

   IF nKey == WVW_DEFAULT_MENUKEYEVENT
      // MenuKeyEvent
      RETURN nMenuChecker( wvw_GetLastMenuEvent() )
      // was: ELSEIF AScan( { K_LBUTTONDOWN, K_LBUTTONUP, K_MOUSEMOVE }, nKeyStd ) > 0
   ELSEIF AScan( { K_LBUTTONDOWN, K_LBUTTONUP, K_MOUSEMOVE, K_MMLEFTDOWN, K_LDBLCLK }, nKeyStd ) > 0
      // MouseEvent
      RETURN wvwm_nMouseChecker( nkey )
   ELSEIF ( bAction := SetKey( nKey ) ) != NIL .OR. ;
          ( bAction := SetKey( nKeyStd ) ) != NIL
      Eval( bAction, ProcName(), ProcLine(), ReadVar() )
      RETURN 0
   ENDIF

   RETURN nKey


5. Enfim, depois de "ler" os eventos, é necessário direcionar o evento para o comando, procedure ou função desejada. No exemplo, a função que faz isso é a "nMenuChecker()". Na DEMO.PRG, essa função faz o direcionamento de tudo, tanto das opções do Menu do sistema, quanto da toolbar.
STATIC FUNCTION nMenuChecker( nMenuEvent )

   LOCAL nkey := 0

   xDisableMenus( 0, 4 )
   // xDisableToolbar( 0 )

   SWITCH nMenuEvent
   CASE IDM_DEMO_GET
      // lboxmessage( "Demo GET" )
      Demo_Get()
      EXIT
   CASE IDM_DEMO_BROWSE
      // lboxmessage( "Demo BROWSE" )
      Demo_Browse()
      EXIT
   CASE IDM_DEMO_CONSOLE
      // lboxmessage( "Demo CONSOLE" )
      Demo_Console()
      EXIT
#if 0
   CASE IDM_DEMO_COLOR
      // lboxmessage( "Demo COLOR" )
      Demo_Color()
      EXIT
#endif
   CASE IDM_DEMO_EXIT
      // lboxmessage( "should EXIT!" )
      nkey := K_ESC
      EXIT

   CASE IDM_WINDOW_SPACING_INCREASE
      wvw_SetLineSpacing( , wvw_SetLineSpacing() + 2 )
      EXIT
   CASE IDM_WINDOW_SPACING_DECREASE
      wvw_SetLineSpacing( , wvw_SetLineSpacing() - 2 )
      EXIT
   CASE IDM_WINDOW_SPACING_DEFAULT
      wvw_SetDefLineSpacing( wvw_SetLineSpacing() )
      EXIT
   CASE IDM_TOOLBAR_ENABLE
      xEnableToolbar( 0 )
      EXIT
   CASE IDM_TOOLBAR_DISABLE
      xDisableToolbar( 0 )
      EXIT
   CASE IDM_TOOLBAR_RESET
      CreateToolbar( 0 )
      EXIT
   CASE IDM_TOOLBAR_DELETE
      wvw_tbDestroy( 0 )
      EXIT
   CASE IDM_HELP_HELP
      xHelp()
      EXIT
   CASE IDM_HELP_INFO
      xDebugInfo()
      EXIT
   OTHERWISE
      lboxmessage( "Sorry, unrecognized menu option: " + hb_ntos( nMenuEvent ) )
   ENDSWITCH

   // xEnableToolbar( 0 )
   xEnableMenus( 0, 4 )

   RETURN nkey


Bom... se você pegar esses trechos de códigos que postei aqui e jogar num PRG, não vai funcionar. Pois vão faltar diversas variáveis criadas para que a estrutura funcione. Mas quis apenas resumir os passos para se trabalhar com uma toolbar na GTWVW, apontando no exemplo DEMO.PRG o que faz a Toolbar funcionar. Caso você venha a utilizar 2 toolbar's no seu programa, por exemplo: uma toolbar na tela principal e outra toolbar para as telas de cadastro, você terá que criar 2 estruturas dessas pra trabalhar em janelas diferentes... porém, aquela toolbar criada para as telas de cadastro pode ser a mesma para todos os cadastros.

Espero ter ajudado, pelo menos a entender um pouquinho, como funcionaria na GTWVW.
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Avatar de usuário

acelconsultoria
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 231
Data de registro: 10 Jan 2006 16:05
Cidade/Estado: Itápolis-SP
Curtiu: 6 vezes
Mens.Curtidas: 6 vezes

DEMO.PRG - Exemplo Simples com GTWVW e GTWVG

Mensagempor paulovirt » 21 Jun 2017 11:47

Muitíssimo obrigado, meu amigo.

Vou estudar bem esse material. Ontem já consegui fazer bastante coisa só com o botão.

Valeu mesmo

Abraços

Paulo
Avatar de usuário

paulovirt
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 69
Data de registro: 29 Jan 2007 09:00
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Anterior



Retornar para Outras Bibliotecas Visuais e IDEs

Quem está online

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