Porque meus browse não podem ser mais bonitos que os outros?
Porque é necessários garimpar entre os métodos e propriedades das classes de 5Win para descobrir alguns segredinhos.
E Nesta aula irei reforçar a aula anterior melhorando em muito o aspecto do browse de nossa aplicação.
O resultado deverã ser igual ao da figura abaixo:

Figura 08
Digite o código abaixo em um arquivo e de-lhe o nome de AULA08.PRG e compiLe utilizando o BUILD.BAT:
C:\>BUILD AULA08
Código: Selecionar todos
#include "fivewin.ch"
function main()
local oWnd
DEFINE WINDOW oWnd TITLE "Janela principal" ;
FROM 5, 5 TO 24, 64 ;
MENU Menu() ;
MDI
DEFINE BUTTONBAR oBar OF oWnd
DEFINE BUTTON OF oBar FILE "exit.bmp" ;
ACTION oWnd:end() ;
MESSAGE "Fecha este aplicativo..." ;
TOOLTIP "Fecha este aplicativo."
DEFINE BUTTON OF oBar GROUP FILE "Open.bmp" ;
ACTION MDIChild( oWnd ) ;
MESSAGE "Abre um browse normal..." ;
TOOLTIP "Abre um browse normal."
DEFINE BUTTON OF oBar FILE "cut.bmp" ;
ACTION MDIChild2( oWnd ) ;
MESSAGE "Abre um browse com botões..." ;
TOOLTIP "Abre um browse com botões."
SET MESSAGE OF oWnd TO "Forum Clipper-On-Line" KEYBOARD DATE CLOCK
ACTIVATE WINDOW oWnd
return nil
FUNCTION Menu()
local oMenu, oMenu1, oMenu2
local oSub1,oSub2,oSub3
MENU oMenu
MENUITEM oMenu1 PROMPT "Opcao &1"
MENU
MENUITEM "&Clientes"
MENU
MENUITEM "Incluir" ACTION MDIChild()
MENUITEM "Excluir" ACTION MDIChild()
SEPARATOR
MENUITEM "Consultar" ACTION MDIChild()
ENDMENU
MENUITEM "&Fornecedores"
MENU
MENUITEM "Incluir" ACTION MDIChild2()
MENUITEM "Excluir" ACTION MDIChild2()
SEPARATOR
MENUITEM "Consultar" ACTION MDIChild2()
ENDMENU
ENDMENU
MENUITEM oMenu2 PROMPT "Opcao &2" DISABLED
MENU
MENUITEM "Item 1" DISABLED ACTION MDIChild()
MENUITEM "Item 2" DISABLED ACTION MDIChild()
ENDMENU
ENDMENU
return oMenu
function MDIChild()
local oWnd1, oBrw
USE AULA07 NEW SHARED
DEFINE WINDOW oWnd1 TITLE "Janela Normal" MDICHILD ;
FROM 1, 1 TO 10, 30
@ 0,0 LISTBOX oBrw FIELDS OF oWnd1 SIZE 225,115
ACTIVATE WINDOW oWnd1
return nil
function MDIChild2( oWnd )
local oWnd1, oBrw
USE AULA07 NEW SHARED ALIAS AULA072
DEFINE WINDOW oWnd1 TITLE "Janela MDI" MDICHILD ;
FROM 1, 1 TO 10, 30
DEFINE BUTTONBAR oBar1 OF oWnd1
DEFINE BUTTON OF oBar1 FILE "exit.bmp" ;
ACTION MsgInfo( "Coloque uma chamada a uma rotina" ) ;
MESSAGE "Coloque aqui uma mensagem..." ;
TOOLTIP "Sou uma dica rapida para este controle."
DEFINE BUTTON OF oBar1 FILE "Open.bmp" ;
ACTION MsgInfo( "Coloque uma chamada a uma rotina" ) ;
MESSAGE "Coloque aqui uma mensagem..." ;
TOOLTIP "Sou uma dica rapida para este controle."
@ 2,0 LISTBOX oBrw FIELDS OF oWnd1 SIZE oWnd:nWidth()-5,oWnd:nHeight()-125
oBrw:nLineHeight*= 1
oBrw:nHeaderHeight*= 1.5
oBrw:bRClicked := { | nRow, nCol | PopupReg( nRow, nCol, oBrw, oWnd1 ) }
oBrw:bLdblClicked := {|| oBrw:disable(), MsgStop("Duplo Clique - Abrir um Dialog ou executar uma rotina"), oBrw:enable() }
oBrw:bBKColor := { |nRow,nCol,nStyle| if( nStyle==0 .and. nCol==5, nRGB(255,255,255), ) }
oBrw:nFreeze := 2
oBrw:nClrPane := { || IIF( ( oBrw:cAlias)->(Recno()) %2 == 1, nRGB(187,254,138),nRGB(226,255,196))}
oBrw:lAdjLastCol := .F.
oBrw:nLineStyle := 2
ACTIVATE WINDOW oWnd1 MAXIMIZED
return nil
static function PopupReg( nRow, nCol, oLbx, oWnd )
local oPopup
MENU oPopup POPUP
MENUITEM "&Inserir registro " ACTION MsgStop( "Abrir um Dialog, efetuar uma operacao ou rotina" )
MENUITEM "E&xcluir registro " ACTION MsgStop( "Abrir um Dialog, efetuar uma operacao ou rotina" )
MENUITEM "&Alterar registro " ACTION MsgStop( "Abrir um Dialog, efetuar uma operacao ou rotina" )
SEPARATOR
MENUITEM "&Desbloquear registro" ACTION MsgStop( "Abrir um Dialog, efetuar uma operacao ou rotina" )
SEPARATOR
MENUITEM "&Sair" ACTION oLbx:oWnd:End()
ENDMENU
ACTIVATE POPUP oPopup AT nRow, nCol OF oLbx
return nil
Aula07.dbf.zip (renomeie e retire o .zip)
Explicando o que foi modificado:
A função MDIChild já inicia recebendo como parâmetro o objeto oWnd, que é nossa janela principal, a que irá nos fornecer suas medidas.
Código: Selecionar todos
function MDIChild2( oWnd )Código: Selecionar todos
@ 2,0 LISTBOX oBrw FIELDS OF oWnd1 SIZE oWnd:nWidth()-5,oWnd:nHeight()-125Quanto as propriedades de nosso objeto LISTBOX que foram alteradas vejam:
Altura de cada linha do browse, neste caso 1 linha.
Código: Selecionar todos
oBrw:nLineHeight*= 1Código: Selecionar todos
oBrw:nHeaderHeight*= 1.5Código: Selecionar todos
oBrw:bRClicked := { | nRow, nCol | PopupReg( nRow, nCol, oBrw, oWnd1 ) }Código: Selecionar todos
oBrw:bLdblClicked := {|| oBrw:disable(), MsgStop("Duplo Clique - Abrir um Dialog ou executar uma rotina"), oBrw:enable() }Código: Selecionar todos
oBrw:bBKColor := { |nRow,nCol,nStyle| if( nStyle==0 .and. nCol==5, nRGB(255,255,255), ) }Código: Selecionar todos
oBrw:nFreeze := 2Código: Selecionar todos
oBrw:nClrPane := { || IIF( ( oBrw:cAlias)->(Recno()) %2 == 1, nRGB(187,254,138),nRGB(226,255,196))}Código: Selecionar todos
oBrw:lAdjLastCol := .F.Até a próxima.


