pesquisei aqui no fórum, e, encontrei 9 páginas falando da GTWVW, isso é ótimo!
Em nenhum dos tópicos me senti à vontade em descrever meu problema, pois até tem algo semelhante,
mas, para não misturar, resolvi criar um novo tópico!
Estou testando (já disse anteriormente essa GT) e já até fiz alguma coisa (pequena).
Agora, estou criando um novo módulo dentro do meu aplicativo (sistema com mais de 100.000 linhas)...
Aà peguei uma janela que já funcionava normalmente. Esta vejam:
Aà - apenas para teste e se der certo, coloquei antes do código que faz essa tela (estilo msdos - console), um código que retirei da pasta \contrib\gtwvw\tests\DEMO.PRG e no lugar de aprsentar botões, combobox, e etc e tal, apareceu apenas os @say. Vejam, por favor:
O código - adptado, já eliminei um montão de coisas pra ver se era algum erro, mas, não apresenta um simples botão. O código, separei por partes para melhor explicação.
- 1º - antes do FUNC PCI10010() - nome deste módulo:
#require "gtwvw" // aciona a lib gr fica
#include "error.ch"
#INCLUDE "COMMON.CH"
#include "inkey.ch"
#include "setcurs.ch"
#include "hbgtinfo.ch"
#include "hbver.ch"
// #include "dbstruct.ch"
#define WVW_MAXWINDOWS 20 // ! must match with hbgtwvw.h
#define WVW_DEFAULT_MENUKEYEVENT 1024 // ! must match with hbgtwvw.h
// for Button Types: // 2004-03-03
#define _BUTTON_NORMAL 0 // normal button
#define _BUTTON_FLAT 1 // 'transparent', raised when mouseover
#define _BUTTON_NONE 2 // no sign even when mouseover or clicked
#define _BUTTON_HARD 3 // no recessed when pressed
// menu actions
#define IDM_DEMO_GET 101
#define IDM_DEMO_BROWSE 102
#define IDM_DEMO_CONSOLE 103
// #define IDM_DEMO_COLOR 104
#define IDM_DEMO_EXIT 199
#define IDM_TOOLBAR_RESET 501
#define IDM_TOOLBAR_DELETE 502
#define IDM_TOOLBAR_ENABLE 503
#define IDM_TOOLBAR_DISABLE 504
#define IDM_WINDOW_SPACING_INCREASE 201
#define IDM_WINDOW_SPACING_DECREASE 202
#define IDM_WINDOW_SPACING_DEFAULT 203
#define IDM_HELP_HELP 301
#define IDM_HELP_INFO 302
// menu action from toolbar only:
#define IDM_NETCONNECT 401
#define IDM_NETDISCONNECT 402
#define IDM_BACK 403
#define IDM_FORWARD 404
#define IDM_COPY 405
#define IDM_PASTE 406
STATIC s_amiscobjlist := {} // misc object list (actually: list of codeblocks)
STATIC s_afontinfo := {} // current font info
//
STATIC s_amouseobjlist := {}
STATIC s_ncurkey := 0
STATIC s_nkeyrepeater
STATIC s_nrepeatrate := 0.1
STATIC s_nrepeatdelay := 0.5
- 2º - Agora, dentro da função principal (quase uma main), coloquei as variáveis LOCALs:
local SALVA_COR := setcolor (),;
SALVA_TELA := savescreen (0,0,maxrow (),maxcol ()),;
SALVA_CURSOR := set (_SET_CURSOR),;
SALVA_DELIMITERS := set (_SET_DELIMITERS),;
SALVA_INTENSITY := set (_SET_INTENSITY)
LOCAL nCurWindow
LOCAL hMenu, hPopupmenu
// LOCAL hMenu, hPopupmenu, hSubMenu
LOCAL cLabel
LOCAL nCursor
LOCAL kF1, kF2 // , kF3
// LOCAL kF7, kF8
LOCAL kF9, kF10, kF11
LOCAL oMouse
LOCAL nKeyStd
... // meu código normal
- 3º - Depois da declaração de variáveis locais, seguem as minhas outras variáveis que já eram do sistema. Agora, o restante do código (a maioria está comentado) onde deveria construir o MENU e criar alguns botões. Mas, só imprime na tela o @SAY. Please, eyes:
cLabel := "Orçamento FDL"
// ErrorBlock( {| e | MyErrorEXVD( e ) } )
// ? hb_IsPinter("LPT1")
// ? hb_IsPrinter()
// ? hb_IsPinter("LPT1:")
// inkey(0)
// wait 'hb_isprint'
#if defined( __HBSCRIPT__HBSHELL ) .AND. defined( __PLATFORM__WINDOWS )
hbshell_gtSelect( "GTWVW" )
#endif
hb_gtInfo( HB_GTI_ICONRES , "AppIcon" ) // mostrar Ãcone do SiCCA no lugar do Ãcone do harbour/gtwvg 15/12/15w.
HB_GTINFO( HB_GTI_WINTITLE , DESC_SIST ) // mostrar o nome do SISTEMA (SiCCA) no topo do aplicativo, não importando o nome do .EXE 21/12/15w.
// Set( _SET_EVENTMASK, INKEY_ALL )
// Set( _SET_DATEFORMAT, "yyyy-mm-dd" )
// Set( _SET_DATEFORMAT, "dd/mm/yyyy" )
// Set( _SET_SCOREBOARD, .F. )
// set date to brit
// wvw_SetPaintRefresh( 0 )
wvw_SetVertCaret( .T. )
wvw_pbSetFont( , "Tahoma", 14 )
nCursor := SetCursor( SC_NONE )
IF SetDefaultWindowSize()
// ldebug( "Tamanho da Tela Definido Automaticamente!" )
ELSE
// ldebug( "N"o foi Poss¡vel Definir Automaticamente o Tamanho da Tela" )
ENDIF
*********** cria barra de status (rodap,) 13/2/16w
// IF ! Empty( wvw_sbCreate() ) .AND. wvw_sbAddPart( , "99:99:99" ) > 0
IF ! Empty( wvw_sbCreate() ) // .AND. wvw_sbAddPart( , space(1) ) > 0
wvw_sbSetText( , 0 , "MVinfo Sistemas & Automação - www.mvinfo.wmx.net.br - microvolution@hotmail.com (31) 3824.1556 | 99711.1556(vivo)" )
wvw_sbAddPart( , "99:99:99")
wvw_SetTimer( , 1000 )
ENDIF
*********** cria barra de status (rodap,) 13/2/16w
// ABERTURA()
s_afontinfo := wvw_GetFontInfo()
hb_gtInfo( HB_GTI_INKEYFILTER, {| nkey | nAfterInkey( nkey ) } )
wvw_SetMouseMove( , .T. ) // required by wvwmouse
kF1 := SetKey( K_F1, {|| xHelp() } )
kF2 := SetKey( K_F2, {|| xDebugInfo() } )
// kF3 := SetKey( K_F3, {|| fALTERA_DIRETORIO() } )
// kF7 := SetKey( K_F7, {|| pDEL_PREST() } )
// kF8 := SetKey( K_F8, {|| pDEL_VENDA() } )
kF9 := SetKey( K_F9, {|| wvw_SetLineSpacing( , wvw_SetLineSpacing() - 2 ) } )
kF10 := SetKey( K_F10, {|| wvw_SetLineSpacing( , wvw_SetLineSpacing() + 2 ) } )
kF11 := SetKey( K_F11, {|| wvw_SetDefLineSpacing( wvw_SetLineSpacing() ) } )
// start menu definitions
/*
hMenu := wvw_CreateMenu()
hPopupMenu := wvw_CreateMenu()
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_DEMO_GET, "~Excluir Prestaões Antigas (F7)" )
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_DEMO_BROWSE, "Excluir ~Orçamentos Antigos (F8)" )
// wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_DEMO_CONSOLE, "~CONSOLE demo (F3)" )
// #if 0
// wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_DEMO_COLOR, "~COLOR demo" )
// #endif
wvw_AppendMenu( hPopupMenu )
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_DEMO_EXIT, "~Sair" )
wvw_AppendMenu( hMenu, WIN_MF_ENABLED, hPopupMenu, "~Opções", )
// hSubMenu := wvw_CreateMenu()
// wvw_AppendMenu( hSubMenu, WIN_MF_ENABLED, 900, "Sub~1" )
// wvw_AppendMenu( hSubMenu, WIN_MF_ENABLED, 901, "Sub~2" )
hPopupMenu := wvw_CreateMenu()
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_TOOLBAR_ENABLE, "~Habilitar Barra de Ferramentas" )
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_TOOLBAR_DISABLE, "~Desabilitar Barra de Ferramentas" )
wvw_AppendMenu( hPopupMenu )
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_TOOLBAR_RESET, "~Reiniciar Barra de Ferramentas" )
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_TOOLBAR_DELETE, "~Excluir Barra de Ferramentas" )
wvw_AppendMenu( hPopupMenu )
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_TOOLBAR_RESET, "~Alterar Local de Trabalho (Unidade de Disco[HDD]/Pasta[Diret¢rio]) (F3)" )
// wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, hSubMenu, "~Submenus" )
wvw_AppendMenu( hMenu, WIN_MF_ENABLED, hPopupMenu, "~Configurações", )
hPopupMenu := wvw_CreateMenu()
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_WINDOW_SPACING_DECREASE, "~Eliminar os Espaços Entre as Linhas (F9)" )
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_WINDOW_SPACING_INCREASE, "~Aumentar os Espaços Entre as Linhas (F10)" )
wvw_AppendMenu( hPopupMenu )
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_WINDOW_SPACING_DEFAULT, "~Selecionar o Atual Espaçamento Como Padrão (F11)" )
wvw_AppendMenu( hMenu, WIN_MF_ENABLED, hPopupMenu, "~Janela", )
hPopupMenu := wvw_CreateMenu()
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_HELP_HELP, "~Sobre o EXVD (F1)" )
wvw_AppendMenu( hPopupMenu )
wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_HELP_INFO, "~Informações da Tela (F2)" )
wvw_AppendMenu( hMenu, WIN_MF_ENABLED, hPopupMenu, "~Ajuda", )
wvw_SetMenu( , hMenu )
// end menu definitions
*/
// SetColor( "N/W,N/GR*,,,N/W*" )
// CLS
nCurWindow := wvw_nNumWindows() // == 0 // == 0, Main Window
// nCurWindow := wvw_nNumWindows() == 0 // , Main Window
// nCurWindow := wvw_nNumWindows() - 1 // == 0, Main Window
? nCurWindow // isso não aparece na tela
wait 'ncurwin' // isso também não apárece na tela
// CreateToolbar( nCurWindow ) // substituÃda pela linha abaixo 23/2/16w
CreateToolbarIni( nCurWindow ) // aqui deveria criar uma barra de ferramentas, mas não cria.
ResetMiscObjects( nCurWindow )
AddMiscObjects( nCurWindow, {| nWindow | wvw_DrawLabel( nWindow, 1, 40, cLabel, 6,, WIN_RGB( 255, 255, 255 ), WIN_RGB( 198, 198, 198 ), "Arial", s_afontinfo[ 2 ], , , , , .T., .T. ) } ) // aqui deveria criar um @say diferente e bem GRANDE.
wvwm_ResetMouseObjects( nCurWindow )
wvwm_AddMouseObjects( nCurWindow, WVWMouseButton():New( "Info!", MaxRow() - 2, 67, , , {|| xDebugInfo() } ) ) // apesar de estar começando como WVWM, já era assim no demo.prg (original - não mudei nada).
// oMouse := WVWMouseButton():New( "Flat", MaxRow() - 2, 67 - 11, , , {|| lboxmessage( "flat" ) }, 1 )
// oMouse:cImage := hb_DirBase() + "vouch1.gif"
// oMouse:cImage := AppIcon
// oMouse:cCaption := ""
// wvwm_AddMouseObjects( nCurWindow, oMouse )
// oMouse := WVWMouseButton():New( "None", MaxRow() - 2, 67 - 11 - 11, , , {|| lboxmessage( "none" ) }, 2 )
// oMouse:Enable( .T. )
// wvwm_AddMouseObjects( nCurWindow, oMouse )
// oMouse := WVWMouseButton():New( "Tight", MaxRow() - 2, 67 - 11 - 11 - 11 - 11 - 11, , , {|| lboxmessage( "tight" ) } )
// wvwm_AddMouseObjects( nCurWindow, WVWMouseButton():New( "Excluir(F7)", MaxRow() / 2 - 2 , MaxCol() / 2 - ( len ( "Excluir(F7)" ) / 2 ) , , , {|| pDEL_PREST() } ) )
wvwm_AddMouseObjects( nCurWindow, WVWMouseButton():New( "Excluir(F7)", MaxRow() / 2 - 2 , MaxCol() / 2 - ( len ( "Excluir(F7)" ) / 2 ) , , , ) )
/*
oMouse := WVWMouseButton():New( "Excluir(F7)", MaxRow() / 2 - 2 , MaxCol() / 2 - ( len ( "Excluir(F7)" ) / 2 ), , , )
oMouse:lTight := .T.
wvwm_AddMouseObjects( nCurWindow, oMouse )
*/
// wvwm_AddMouseObjects( nCurWindow, WVWMouseButton():New( "Excluir(F8)", MaxRow() / 2 + 2 , MaxCol() / 2 - ( len ( "Excluir(F8)" ) / 2 ), , , {|| pDEL_VENDA() }, 3 ) )
wvwm_AddMouseObjects( nCurWindow, WVWMouseButton():New( "Excluir(F8)", MaxRow() / 2 + 2 , MaxCol() / 2 - ( len ( "Excluir(F8)" ) / 2 ), , , , 3 ) )
// wvwm_AddMouseObjects( nCurWindow, WVWMouseButton():New( "Excluir(F8)", MaxRow() / 2 + 2 , MaxCol() / 2 - ( len ( "Excluir(F8)" ) / 2 ), , , , 3 ) )
// oMouse := WVWMouseButton():New( "Disabled", MaxRow() - 2, 67 - 11 - 11 - 11 - 11, , , {|| xDebugInfo() } )
// oMouse:Enable( .F. )
wvwm_AddMouseObjects( nCurWindow, oMouse )
// 2007-05-25 the real pushbutton, easier and better looking. Nothing to do with wvwmouse.prg.
wvw_pbCreate( nCurWindow, MaxRow() - 4, 67 - 11 - 11 - 11 - 11 - 11, MaxRow() - 4, 67 + 9 - 11 - 11 - 11 - 11 - 11, "native", , {|| lboxmessage( "native pushbutton" ) } )
wvw_cbCreate( , 10, 10, 40, , , , , 0 , )
///////////////////////// só daqui para baixo que está aparecendo na tela ///////////////////////
SetColor( "N/W,N/GR*,,,N/W*" )
CLS
? nCurWindow // agora sim, isso apareceu na tela
wait 'ncurwin' // agora sim, isso apareceu na tela
@ 3, 79 - len ( "MVinfo Sistemas - " ) SAY "MVinfo Sistemas - "
@ 4, 79 - len ( "by W de Paula" ) SAY "by W de Paula"
@ 5, 79 - len ( "v3.0 13/02/2016" ) SAY "v3.0 13/02/2016"
///////////////////////// só daqui para cima que está aparecendo na tela ///////////////////////
...
Então, prezados professores, o que estou fazendo de errado?
Algum dos senhores pode nos ajudar?
:%