13 Out 2004 11:36
local aMenuItens := { "Documentos",;
"Siglas",;
"Mensalidades" }
REDEFINE LISTBOX cItem ;
ON CHANGE oPags:SetOption(ascan(aMenuItens,cItem));
ITEMS aMenuItens ;
SetHandleCount(150)
LoadLibrary("bwcc.dll")
USE DOCTO SHARED NEW INDEX DOCTO001,DOCTO002
USE SIGLAS SHARED NEW INDEX SIGLA019
USE MENSAL SHARED NEW INDEX MENSA001
DEFINE DIALOG oDlg RESOURCE "TestBMPLbx"
REDEFINE PAGES oPags ID 11 OF oDlg DIALOGS "dlgAUX", "dlgAUX", "dlgAUX"
// **** Documentos ****
SELE DOCTO
REDEFINE LISTBOX oLbx1 FIELDS ID 600 OF oPags:aDialogs[1]
REDEFINE BTNBMP ID 601 OF oPags:aDialogs[1] RESOURCE "bmp_plus" TOOLTIP "Adiciona registro a tabela atual" ACTION TabEDT( 1, oLbx1, "NOVO" )
REDEFINE BTNBMP ID 602 OF oPags:aDialogs[1] RESOURCE "bmp_minus" TOOLTIP "Exclui o registro da tabela atual" ACTION TabDEL( 1, oLbx1)
REDEFINE BTNBMP ID 603 OF oPags:aDialogs[1] RESOURCE "bmp_editar" TOOLTIP "Altera dados do registro atual" ACTION TabEDT( 1, oLbx1, "MOSTRA" )
REDEFINE BTNBMP ID 604 OF oPags:aDialogs[1] RESOURCE "bmp_printer" TOOLTIP "Imprime o listagem da tabela atual" ACTION TabRPT( 1, oLbx1)
oLbx1:nClrPane := { || IIF( ( oLbx1:cAlias)->(OrdKeyNo()) %2 == 1, CLR_VERDINHO,CLR_CREME)}
oLbx1:lAdjLastCol := .F.
oLbx1:nStyle := 1
oLbx1:nHeaderHeight*= 2
// **** Siglas ****
SELE SIGLAS
REDEFINE LISTBOX oLbx2 FIELDS ID 600 OF oPags:aDialogs[2]
REDEFINE BTNBMP ID 601 OF oPags:aDialogs[2] RESOURCE "bmp_plus" TOOLTIP "Adiciona registro a tabela atual" ACTION TabEDT( 2, oLbx2, "NOVO" )
REDEFINE BTNBMP ID 602 OF oPags:aDialogs[2] RESOURCE "bmp_minus" TOOLTIP "Exclui o registro da tabela atual" ACTION TabDEL( 2, oLbx2)
REDEFINE BTNBMP ID 603 OF oPags:aDialogs[2] RESOURCE "bmp_editar" TOOLTIP "Altera dados do registro atual" ACTION TabEDT( 2, oLbx2, "MOSTRA" )
REDEFINE BTNBMP ID 604 OF oPags:aDialogs[2] RESOURCE "bmp_printer" TOOLTIP "Imprime o listagem da tabela atual" ACTION TabRPT( 2, oLbx2)
oLbx2:nClrPane := { || IIF( ( oLbx2:cAlias)->(OrdKeyNo()) %2 == 1, CLR_VERDINHO,CLR_CREME)}
oLbx2:lAdjLastCol := .F.
oLbx2:nStyle := 1
oLbx2:nHeaderHeight*= 2
static function TabDEL( _num_, _lbx_ )
do case
case _num_ = 1
SELE DOCTO
case _num_ = 2
SELE SIGLAS
case _num_ = 3
SELE MENSAL
endcase
if MsgYesNo( "Tem certeza da exclusao deste registro?" )
RLOCK()
DELETE
COMMIT
_lbx_:UpStable()
_lbx_:Refresh()
endif
return .t.
static function TabRPT( _num_, _lbx_ )
local oRpt
local n
local cAlias := If( _lbx_ != nil, _lbx_:cAlias, Alias() )
do case
case _num_ = 1
case _num_ = 2
REPORT oRpt TITLE "Relatorio: " + cAlias ;
HEADER "Data: " + DToC( Date() ) + ", Hora: " + Time() ;
FOOTER "Pagina: " + Str( oRpt:nPage, 3 ) ;
PREVIEW
if Empty( oRpt ) .or. oRpt:oDevice:hDC == 0
return nil
endif
COLUMN TITLE "UF" DATA SIGLAS->UF
COLUMN TITLE "ESTADO" DATA SIGLAS->ESTADO
COLUMN TITLE "ICMS" DATA SIGLAS->ICMS
COLUMN TITLE "IPI" DATA SIGLAS->IPI
COLUMN TITLE "REDUCAO" DATA SIGLAS->REDUCAO
ENDREPORT
ACTIVATE REPORT oRpt
GO TOP
case _num_ = 3
endcase
return .t.
REDEFINE BTNBMP ID 601 OF oPags:aDialogs[1] RESOURCE "bmp_plus" ... ACTION TabEDT( 1, oLbx1, "NOVO" )
REDEFINE BTNBMP ID 603 OF oPags:aDialogs[1] RESOURCE "bmp_editar" ... ACTION TabEDT( 1, oLbx1, "MOSTRA" )
static function TabEDT( _num_, _lbx_, lAppend )
do case
case _num_ = 1
tblDocto( _num_, _lbx_, lAppend )
case _num_ = 2
tblSiglas( _num_, _lbx_, lAppend )
case _num_ = 3
tblMensal( _num_, _lbx_, lAppend )
endcase
return .t.
local lSave := .f.
if lAppend ="NOVO"
goto bottom
skip
endif
if lAppend ="NOVO"
M->IDMENSAL := psqControle( dbf() )
endif
M->FIXA := IIF(MENSAL->FIXA='S',.t.,.f.)
DEFINE DIALOG oDlg RESOURCE "dlgTAMensal"
REDEFINE COMBOBOX oCbx1 VAR M->TIPO ITEMS { "D-DESPESA", "R-RECEITA" } ...
REDEFINE COMBO oCbx2 VAR M->IDCCUSTO ID 103 OF oDlg ;
RESOURCE "combo.bmp" ;
VALID .T. ;
ALIAS CENTROS ;
ORDER 1 ;
FIELD CENTROS->IDCCUSTO ;
HEADER STR(CENTROS->IDCCUSTO,3),CCUSTO ;
RESULT M->IDCCUSTO ;
UDF fun()
local lSave := .f.
//
// Aqui seleciono a tabela a ser manuseada
//
if lAppend ="NOVO"
goto bottom
skip
endif
//
// Aqui as variáveis serão preenchidas com dados ou zeradas
//
if lAppend ="NOVO"
//
// No caso de inclusão, se alguma variável necessitar de dado padrão.
//
endif
SET 3DLOOK ON
DEFINE DIALOG oDlg ...
//
// Aqui são colocados todos os REDEFINEs de controles para o diálogo
//
REDEFINE BUTTON ID 1 OF oDlg ACTION ( lSave := .t. , oDlg:End() )
REDEFINE BUTTON ID 2 OF oDlg ACTION ( lSave := .f. , oDlg:End() )
ACTIVATE DIALOG oDlg CENTERED
if lSave // Depende do resultado retornado pelo BUTTON acionado
//
// Aqui seleciono a tabela a ser manuseada
//
if lAppend ="NOVO"
APPEND BLANK
else
RLOCK()
endif
//
// Aqui salvo o conteúdo das variáveis em seus respectivos campos
//
COMMIT
_lbx_:UpStable() // Devem existir sempre
_lbx_:Refresh()
endif
return .t.