Página 1 de 3

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 01:21
por cjp
Pessoal, estou iniciando em HwGui, estou com dificuldade na exibição de uma imagem de fundo. Podem me ajudar?

Ao tentar colocar uma imagem como fundo de tela, os botões não aparecem inicialmente; só passando o mouse em cima do lugar onde o botão está é que ele aparece.

Curioso é que, na tela de login, que estou fazendo exatamente da mesma forma, funciona. Mas na tela principal não.

Podem me ajudar?

Meu código para conferência:

Código: Selecionar todos

#include "hwgui.ch"

MEMVAR cnSQL

FUNCTION Main
         Local cRet, oSay1, oFont := HFont():Add( "MS Sans Serif",0,-13 )
		 private oDlg, cnSQL, us, nmus
		 private cSair :="N"

         PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
         PREPARE FONT oFontSay NAME "MS Sans Serif" WIDTH 0 HEIGHT -13 WEIGHT 700

 
		 do while .t.
		    if us=NIL
		       cRet=login()
			endif
			
            INIT DIALOG oDlg TITLE "Processos" AT 100, 100 SIZE 540, 500 FONT oFont
			
         @ 0,0  BITMAP        Bitmap1 ;
          SHOW          "WALLPAPER.JPG" ; 
          STRETCH       0 ;
          SIZE          700,700 //nWidth, nHeight - 65
		 
			if cRet="N" .or. cSair="S"
			   return .f.
				   
			elseif cRet="S"
               @ 20,10 SAY oSAY2 CAPTION "Olá, "+nmus SIZE 100, 100
			   
               @ 20,50 BUTTON "Consultar" SIZE 200,60 ;
                 ON CLICK {||consulta()}

               @ 300,50 BUTTON "Cadastrar" SIZE 200,60 ;
                 ON CLICK {||cadastro()}
     
               @ 20,200 BUTTON "Manutenção" SIZE 200,60 ;
                 ON CLICK {||manutencao()}

               @ 300,200 BUTTON "Recados" SIZE 200,60 ;
                 ON CLICK {||recados()}
     
               @ 20,450 BUTTON "Fechar" SIZE 80,50 ON CLICK {||ConfirmarFechar()}
			   
			endif

            ACTIVATE DIALOG oDlg

			if lastkey()=27
			   if confirmarfechar()="S"
			      return .f.
			   else
			      loop
			   endif
			endif

		 enddo

         hwg_SetColorinFocus( oDlg,, 13172680 )

Return		 



FUNCTION ConfirmarFechar()
   LOCAL lConfirmado
   lConfirmado := hwg_MsgYesNo("Tem certeza que deseja sair?", "Confirmação")
   IF lConfirmado
      oDlg:Close()
	  cSair="S"
	  return "S"
   ENDIF
RETURN "N"

function consulta

return

function cadastro

return

function manutencao

return

function recados

return

function login		 
         Local oFont := HFont():Add( "MS Sans Serif",0,-13 ), oTimer, oSAY1, oSAY5
         Local snh := space(20)
		 Local cSenhaErrada :="N"
         Local oE5, cProc
		 private cSair :="N"

		 do while .t.
		    if cSair="S"
			   return "N"
			endif
			
         INIT DIALOG oDlg TITLE "Processos" AT 100, 100 SIZE 540, 500 FONT oFont
		 
         @ 0,0  BITMAP        Bitmap1 ;
          SHOW          "WALLPAPER.JPG" ; 
          STRETCH       0 ;
          SIZE          700,700 //nWidth, nHeight - 65
		 
		 if cSenhaErrada="S"
		    snh=space(20)
            @ 20,30 SAY oSAY1 CAPTION "Senha errada; digite novamente a sua senha:" SIZE 275, 20
		 else
            @ 20,30 SAY oSAY1 CAPTION "Digite a sua senha:" SIZE 120, 20
		 endif
   
         @ 20,100 GET oE5 VAR snh PASSWORD SIZE 150, 26 //Precisa do objeto GET oE5

         @ 20,200  BUTTON "Entrar" SIZE 180,50 ON CLICK {||oDlg:lResult:=.T.,hwg_EndDialog()}

         @ 250,200 BUTTON "Abandonar" SIZE 180,50 ON CLICK {||ConfirmarFechar()}

		 
         ACTIVATE DIALOG oDlg
       
         if lastkey()=27
            if confirmarfechar()="N"
			   loop
			endif
         else
            cnSQL := ConexaoMySQL()
            cProc=cnSQL:Open()
       
            cProc=cnSQL:execute("SELECT usuario,nomeusuar FROM usuario WHERE senha='"+snh+"'")
            if cProc:recordcount()=0
			   cProc:Close()
               cnSQL:Close()
			   cSenhaErrada="S"
               loop
            else
               us=cProc:Fields("usuario"):Value
			   nmus=cProc:Fields("nomeusuar"):Value
               cnSQL:Close()
			   oDlg:Close()
			   return "S"
            endif
         endif
		 enddo
RETURN "D"

FUNCTION ConexaoMySQL()
   LOCAL cnSQL := win_OleCreateObject("ADODB.Connection")
   LOCAL cServer :="xxx"
   LOCAL cDatabase :="xxx"
   LOCAL cUser :=""
   LOCAL cPassword :="xxx"
   Local cPorta :="1039"
   Local cDriver :="SQL Server"

   cnSQL:ConnectionString := "DRIVER=" + cDriver +";SERVER=" + cServer + ";Database=" + cDatabase + ";UID=" + cUser + ";PWD=" + cPassword + ";PORT=" + cPorta

   cnSQL:CursorLocation   := 3

RETURN cnSQL
   
Tem coisas que ainda não fiz. Perdoem o código rudimentar, ainda estou começando.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 05:32
por alxsts
Olá!
cjp escreveu:Perdoem o código rudimentar, ainda estou começando.
Pesquisando no fórum, é possível encontrar suas postagens antigas relativas a HwGUI. Como sempre, tópicos longos, cansativos, com informações fornecidas a conta-gotas. Olhando o código agora postado, percebo que o processo tende a se repetir...

Sugiro que antes de prosseguir na codificação, estude um pouco sobre programação orientada a eventos. Estude também a ferramenta que pretende usar. Leia a documentação da LIB. Não é didática mas dá uma ideia a respeito da ferramenta. Na instalação da HwGUI, tem um programa chamado Tutor.Exe. Abra ele, execute e estude cada exemplo.

Não se cria um formulário dentro de um Do...While, pelo menos em condições normais. Em programação GUI não se usa testar teclas com a função LastKey(). Não se usa misturar códigos de processamento no meio da definição de um formulário (Dialog). São apenas pequenos detalhes que se vê no teu código...

Procure estudar cada componente que se usa na composição de um formulário. Cada um deles é um objeto e possue propriedades, métodos e eventos próprios. Sem entender estes conceitos, mais uma vez será complicado e desgastante auxiliar.

Não tenho dúvidas de que o objetivo do falecido Toledo, ao criar este fórum, sempre foi ajudar a todos que precisarem. É perpetuando este sentimento que escrevo estas linhas, em tom de crítica construtiva. Espero que me entenda e que possa te ajudar.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 08:12
por JoséQuintas
GUI não é console.
Não é pra ficar redesenhando nada.

Código: Selecionar todos

lContinua := .F.
INIT DIALOG oDlg TITLE "Processos" AT 100, 100 SIZE 540, 500 FONT oFont
   @ 0,0  BITMAP        Bitmap1 ;
      SHOW          "WALLPAPER.JPG" ; 
      STRETCH       0 ;
      SIZE          700,700 /
   @ 20,30 SAY oSAY1 CAPTION "Digite a sua senha:" SIZE 120, 20
      @ 20,100 GET oE5 VAR snh PASSWORD SIZE 150, 26 //Precisa do objeto GET oE5
   @ 20,200  BUTTON "Entrar" SIZE 180,50 ON CLICK { || Entrar_Click( oDlg, @lContinua ) }
   @ 250,200 BUTTON "Abandonar" SIZE 180,50 ON CLICK { || Abandonar_Click( oDlg ) }
   ACTIVATE DIALOG oDlg
   IF ! lContinua
      QUIT
   ENDIF
   // ok, prossegue o aplicativo
   RETURN Nil
   
STATIC FUNCTION Entrar_Click( oDlg, lContinua ); RETURN Nil
STATIC FUNCTION Abandonar_Click( oDlg ); RETURN Nil
Isso acima é sua tela de login.

O que o usuário pode fazer nessa tela é:
- digitar senha
- clicar no entrar
- clicar no abandonar

Ela não fecha sozinha ao preencher senha, não precisa DO WHILE.

Resta só colocar o que será feito ao clicar nos botões.
Pra isso as funções Entrar_Click() e Abandonar_Click()

Abandonar mais fácil, só fechar a dialog, mas quer colocar a pergunta.

Código: Selecionar todos

STATIC FUNCTION Abandonar_Click( oDlg )
   IF hwg_MsgYesNo( "Tá abandonando?" )
      oDlg:Close()
   ENDIF
   RETURN Nil
Tá feito, ou encerra ou continua como está, essa será a ação caso seja clicado em abandonar.


Agora a entrar, é onde vai testar senha

Código: Selecionar todos

STATIC FUNCTION Entrar_Click( oDlg, lContinua )
// confere senha
// se tudo ok, lContinua vai ser .T. e fecha dialog
// senão, nada a fazer
RETURN Nil
Teste várias vezes até entender, tente incluir/remover opções.
Vai ser sempre assim, quanto melhor entender isso, melhor pra depois.
Daí pra frente, serão dialogs com cada vez mais opções, mas sempre do mesmo jeito.
Se fizer rotinas de merd. pra coisas simples, em telas com mais coisa vai ter muita merd..
Comece a definir/organizar seu modo de trabalho pra isso.

Acho o esquema do Visual Basic 6 legalzinho, é nessa base de botão_Click(), isso pode ajudar a deixar o fonte mais organizado, dividindo em blocos que são facilmente identificados.
Entrar_Click() - alguma dúvida que a rotina é pra quando clicar no entrar ?
abandonar_Click() - alguma dúvida que a rotina é pra quando clicar no abandonar ?
Ou se preferir: btnEntrar_Click(), btn_AbandonarClick(), pra identificar que é button.
Melhor do que inventar nomes que não tem nada a ver, e depois ter que ficar procurando no fonte pra lembrar pra que serve aquilo.

Por último:
Perguntar por um defeito, como fez neste post, usando tudo totalmente errado....
O que mais tem no fonte é defeito, com certeza nada vai funcionar direito, um defeito a mais ou a menos não vai fazer diferença.
Entenda direito como usar GUI, senão vai complicar cada vez mais.
Fonte assim não tem ajuda que resolva.
Volte à tela de login, porque foi sua primeira tela e está errada.
Só depois vá pra outra.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 08:27
por JoséQuintas
No Visual Basic não é diferente
vb1.png
Ele apenas acaba usando botão_Click() como nome padrão do evento click.
vb2.png
Nesse caso fecha outras janelas antes de fechar o login, e fecha a conexão SQL também.
Não existe um "lugar bonitinho" da rotina de click, apenas o editor dá uma ajuda posicionando nela.
Ela vai ficar em qualquer posição do fonte, da mesma forma que vai ser na hwgui.
Apenas o nome facilita identificar pra que serve, e o VB6 usa esse nome padrão.
Podemos fazer igual na hwgui, porque não ?

Nota: naquela época eu usava cmdBotao, hoje usaria btnBotao, acho que o nome do controle era command button, e era normal usar cmd.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 11:03
por Itamar M. Lins Jr.
Olá!
estou com dificuldade na exibição de uma imagem de fundo. Podem me ajudar?

Código: Selecionar todos

 @ 0,0  BITMAP        Bitmap1 ;
	          SHOW          "WALLPAPER.JPG" ;
	          STRETCH       0 ;
	          SIZE          700,700 //nWidth, nHeight - 65
Use o formato BMP, o Windows não trabalha "nativamente" com JPG, precisa de freeimage(a Hwgui) para exibir outros formatos que não são suportados internamente pelo OS.

Saudações,
Itamar M. Lins Jr.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 12:40
por cjp
Está sim compilando e executando sem mensagem de erro.
Se o problema é o do while, posso retirar (embora ainda ache que ele é necessário). Mas já testei sem o do while, e também não funcionou a imagem no plano de fundo desta tela principal.
Dizer que o fonte está uma M**** não ajuda muito!
Poderia por favor dizer o que mais está errado, afora o do while?

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 12:49
por sygecom
Não compilei seu código, mas pelo que vi a imagem está sobre-posta em cima dos botões, tenta diminuir o SIZE da imagem

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 12:56
por JoséQuintas
cjp escreveu:Ao tentar colocar uma imagem como fundo de tela, os botões não aparecem inicialmente; só passando o mouse em cima do lugar onde o botão está é que ele aparece.
Deixei passar, tá iniciando variável aqui:

Código: Selecionar todos

if us=NIL
   cRet=login()
endif
O que diz aqui, pra poder mostrar button, que cRet precisa ser "S":

Código: Selecionar todos

  elseif cRet="S"
    @ 20,10 SAY oSAY2 CAPTION "
    ...
E o que o login retorna? "D"

Código: Selecionar todos

RETURN "D"
Mas se passar o mouse o button aparece...
Aí ferrou.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 13:09
por Itamar M. Lins Jr.
Olá!
estou com dificuldade na exibição de uma imagem de fundo.
Não Itamar, ele não menciona sobre não ter imagem,


Desaprendi a ler... Só pode.
Hwgui não exibe JPG por padrão.

Saudações,
Itamar M. Lins Jr.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 13:12
por cjp
Não compilei seu código, mas pelo que vi a imagem está sobre-posta em cima dos botões, tenta diminuir o SIZE da imagem
Realmente está sobreposta mesmo. Diminuindo o tamanho, a imagem continua sobreposta, mas só numa parte.
Mas o que realmente não entendo é que isso acontece apenas na janela principal, sendo que, na tela de login, está exatamente da mesma forma, e isso não acontece.
A imagem não deveria ser plano de fundo?

Deixei passar, tá iniciando variável aqui:
Não sei se te entendi, mas as variáveis us e cRet estão corretamente inicializadas na função Main.
O que diz aqui, pra poder mostrar button, que cRet precisa ser "S":
Sim, e é.
A função login(), quando o usuário digita a senha correta, retorna "S". Portanto, cRet é "S" (desde que digitada a senha correta).

E o que o login retorna? "D"
Só no final ela retorna "D". Esta parte ainda não fiz: vou depois tratar a hipótese de retornar "D". Mas não estou usando isso ainda.

Mas se passar o mouse o button aparece...
Aí ferrou.
Por isso eu acho que a questão é realmente o fato de a imagem estar sobrepondo toda a tela, quando na verdade deveria ser plano de fundo.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 13:16
por cjp
Use o formato BMP, o Windows não trabalha "nativamente" com JPG, precisa de freeimage(a Hwgui) para exibir outros formatos que não são suportados internamente pelo OS.
Testei com .bmp, acontece exatamente a mesma coisa.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 13:27
por Itamar M. Lins Jr.
Olá!
Testei com .bmp, acontece exatamente a mesma coisa.
Então faz o favor de escrever direito pq vc disse que não aparecia...( no caso não aparece os controles) a imagem(jpg) com @ SAY está ok.
Então, use BACKGROUD...
INIT WINDOW ... BACKGROUND BITMAP "c:\imagens\fundo.bmp" ... etc
Que vai desenhar a imagem antes de colocar os controles.

Saudações,
Itamar M. Lins Jr.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 13:31
por Itamar M. Lins Jr.
Olá!
A propósito seu código rodou no Linux, só desliguei o acesso a base... e

Código: Selecionar todos

   //LOCAL cnSQL := win_OleCreateObject("ADODB.Connection")
Screenshot_20240213_135057.png
INIT DIALOG oDlg TITLE "Processos" AT 100, 100 SIZE 540, 500 FONT oFont
/*
@ 0,0 BITMAP Bitmap1 ;
SHOW "WALLPAPER.JPG" ;
STRETCH 0 ;
SIZE 700,700 //nWidth, nHeight - 65
*/
Saudações,
Itamar M. Lins Jr.

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 13:47
por JoséQuintas
É engraçado, refiz aqui e não funcionam buttons.

Código: Selecionar todos

#include "hwgui.ch"

MEMVAR cnSQL, cUsuario, lLogin

PROCEDURE Main

   PRIVATE cnSQL, cUsuario := "", lLogin := .F.

   DlgLogin( @lLogin )
   IF ! lLogin
      RETURN
   ENDIF
   DlgTela()

   RETURN

FUNCTION DlgLogin( lLogin )

   Local oFont := HFont():Add( "MS Sans Serif",0,-13 )
   Local snh := space(20)
   Local oE5, cProc

   INIT DIALOG oDlg TITLE "Processos" AT 100, 100 SIZE 540, 500 FONT oFont

   @ 0,0  BITMAP        Bitmap1 ;
       SHOW          "WALLPAPER.JPG" ;
       STRETCH       0 ;
       SIZE          700,700 //nWidth, nHeight - 65

   @ 20,30 SAY oSAY1 CAPTION "Digite a sua senha:" SIZE 120, 20

   @ 20,100 GET oE5 VAR snh PASSWORD SIZE 150, 26 //Precisa do objeto GET oE5

   @ 20,200  BUTTON "Entrar" SIZE 180,50 ON CLICK { || btnEntrar_Click(oDlg,@lLogin) }

   @ 250,200 BUTTON "Abandonar" SIZE 180,50 ON CLICK { || btnAbandonar_Click(oDlg) }

   ACTIVATE DIALOG oDlg

   RETURN .F.

STATIC FUNCTION btnEntrar_Click(oDlg,lLogin)
   //cnSQL := ConexaoMySQL()
   //cnSQL:Open()
   //cProc=cnSQL:execute("SELECT usuario,nomeusuar FROM usuario WHERE senha='"+snh+"'")
   //if cProc:recordcount()=0
   //   cProc:Close()
   //   cnSQL:Close()
   //   RETURN Nil
   //ENDIF
   //cUsuario=cProc:Fields("usuario"):Value
   //cNomeUsuario=cProc:Fields("nomeusuar"):Value
   //cnSQL:Close()
   lLogin := .T.
   oDlg:Close()
   return .T.

STATIC FUNCTION btnAbandonar_Click(oDlg)

   IF hwg_MsgYesNo( "Sair" )
      oDlg:Close()
   ENDIF

   RETURN Nil

FUNCTION DlgTela()

   Local cRet, oSay1, oFont := HFont():Add( "MS Sans Serif",0,-13 )
   private oDlg, cnSQL, us, nmus
   private cSair :="N"

   PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
   PREPARE FONT oFontSay NAME "MS Sans Serif" WIDTH 0 HEIGHT -13 WEIGHT 700

   INIT DIALOG oDlg TITLE "Processos" AT 100, 100 SIZE 540, 500 FONT oFont

   @ 0,0  BITMAP        Bitmap1 ;
      SHOW          "WALLPAPER.JPG" ;
      STRETCH       0 ;
      SIZE          700,700 //nWidth, nHeight - 65

   @ 20,10 SAY oSAY2 CAPTION "Ol , "+nmus SIZE 100, 100

   @ 20,50 BUTTON "Consultar" SIZE 200,60 ;
                 ON CLICK {||btnConsulta_Click()}

   @ 300,50 BUTTON "Cadastrar" SIZE 200,60 ;
                 ON CLICK {||btnInclui_Click()}

   @ 20,200 BUTTON "Manuten‡Æo" SIZE 200,60 ;
                 ON CLICK {||btnAltera_Click()}

   @ 300,200 BUTTON "Recados" SIZE 200,60 ;
                 ON CLICK {||btnRecados_Click()}

   @ 20,450 BUTTON "Fechar" SIZE 80,50 ON CLICK {||Fechar_Click(oDlg)}

   ACTIVATE DIALOG oDlg
   Return Nil

STATIC FUNCTION Fechar_Click(oDlg)
   IF ! hwg_MsgYesNo("Tem certeza que deseja sair?", "Confirmação")
      RETURN Nil
   ENDIF
   oDlg:Close()
   RETURN Nil

STATIC FUNCTION btnConsulta_Click(); RETURN Nil

STATIC FUNCTION btnInclui_Click(); RETURN Nil

STATIC FUNCTION btnAltera_Click(); RETURN Nil

STATIC FUNCTION btnRecados_Click(); RETURN Nil

return


FUNCTION ConexaoMySQL()
   LOCAL cnSQL := win_OleCreateObject("ADODB.Connection")
   LOCAL cServer :="xxx"
   LOCAL cDatabase :="xxx"
   LOCAL cUser :=""
   LOCAL cPassword :="xxx"
   Local cPorta :="1039"
   Local cDriver :="SQL Server"

   cnSQL:ConnectionString := "DRIVER=" + cDriver +";SERVER=" + cServer + ";Database=" + cDatabase + ";UID=" + cUser + ";PWD=" + cPassword + ";PORT=" + cPorta

   cnSQL:CursorLocation   := 3

RETURN cnSQL

Iniciante em HwGui com problema em exibição de imagem

Enviado: 13 Fev 2024 13:56
por Itamar M. Lins Jr.
Olá!
A imagem não deveria ser plano de fundo?
Não fica como plano de fundo usando -> "@ say/bitmap"
Plano de FUNDO é BACKGROUD.
Pode até usar desse recurso, vai depender da ordem que é desenhado os CONTROLES.

Código: Selecionar todos

#xcommand INIT WINDOW <oWnd>                ;
             [ MAIN ]                       ;
             [<lMdi: MDI>]                  ;
             [ APPNAME <appname> ]          ;
             [ TITLE <cTitle> ]             ;
             [ AT <x>, <y> ]                ;
             [ SIZE <width>, <height> ]     ;
             [ ICON <ico> ]                 ;
             [ SYSCOLOR <clr> ]             ;
             [ <bclr: BACKCOLOR, COLOR> <bcolor> ] ;
             [ BACKGROUND BITMAP <oBmp> ]   ;
             [ STYLE <nStyle> ]             ;
             [ EXCLUDE <nExclude> ]         ;
             [ FONT <oFont> ]               ;
             [ MENU <cMenu> ]               ;
             [ MENUPOS <nPos> ]             ;
             [ ON INIT <bInit> ]            ;
             [ ON SIZE <bSize> ]            ;
             [ ON PAINT <bPaint> ]          ;
             [ ON GETFOCUS <bGfocus> ]      ;
             [ ON LOSTFOCUS <bLfocus> ]     ;
             [ ON OTHER MESSAGES <bOther> ] ;
             [ ON EXIT <bExit> ]            ;
             [ HELP <cHelp> ]               ;
             [ HELPID <nHelpId> ]           ;
Na dialog pode ser que ele desenhou primeiro a imagem e depois colocou os controles.(objetos)
Mas o padrão é esse: => [ BACKGROUND BITMAP <oBmp> ] ;

Código: Selecionar todos

#xcommand INIT DIALOG <oDlg>                ;
             [<res: FROM RESOURCE> <Resid> ]         ;
             [ TITLE <cTitle> ]             ;
             [ AT <x>, <y> ]                ;
             [ SIZE <width>, <height> ]     ;
             [ ICON <ico> ]                 ;
             [ BACKGROUND BITMAP <oBmp> ]   ;
             [ STYLE <nStyle> ]             ;
             [ FONT <oFont> ]               ;
             [ <bclr: BACKCOLOR, COLOR> <bColor> ] ;
             [<lClipper: CLIPPER>]          ;
             [<lExitOnEnter: NOEXIT>]       ; //Modified By Sandro
             [<lExitOnEsc: NOEXITESC>]      ; //Modified By Sandro
             [ <lnoClosable: NOCLOSABLE> ]  ;
             [ ON INIT <bInit> ]            ;
             [ ON SIZE <bSize> ]            ;
             [ ON PAINT <bPaint> ]          ;
             [ ON GETFOCUS <bGfocus> ]      ;
             [ ON LOSTFOCUS <bLfocus> ]     ;
             [ ON OTHER MESSAGES <bOther> ] ;
             [ ON EXIT <bExit> ]            ;
             [ HELPID <nHelpId> ]           ; 
Saudações,
Itamar M. Lins Jr.