22 Abr 2010 11:58
//Combobox
aCbb_Tipo := {"Dias","Dias da Semana","Excessão"}
oCbb_Tipo := cCbb_Tipo := cOpc_TipV
nNe+=nSpace
@ nNe,041 COMBOBOX oCbb_Tipo_ VAR cCbb_Tipo;
ITEMS aCbb_Tipo;
SIZE 50,10;
Of oDlg;
PIXEL ;
On Change(FEscolhetipo())
//**************************
Static Func FEscolheTipo()
//**************************
Val(cCbb_Tipo) := aCbb_Tipo
//Teste para ver se quando o combo for igual a dia, os botões da semana ficam inativos;
If cCbb_Tipo == 1
lBut1 := .F.
lBut2 := .F.
lBut3 := .F.
lBut4 := .F.
lBut5 := .F.
EndIf
// Atualizando o combo
//oCbb_Tipo:SetItems(aCbb_Tipo)
//StrZero(cCbb_Tipo) := 1
//oCbb_Tipo:Refresh()
Retu (.F.)
22 Abr 2010 12:19
22 Abr 2010 13:04
//Combobox
aCbb_Tipo := {"Proximidade","Período","Dias","Dias da Semana","Excessão"}
oCbb_Tipo := cCbb_Tipo := cOpc_TipV
// Nem vou passar a tela do calendario, muito grande! =x
// Botões da Semana
lBut1 := .F.
lBut2 := .F.
lBut3 := .F.
lBut4 := .F.
lBut5 := .F.
@ nLin ,100 VBtnBmp oBtn1 Prompt "&Segunda" Size 40,12 Pixel Of oDlg Action(Botao(1)) When(cCbb_Tipo == "Proximidade" .or. cCbb_Tipo == "Dias da Semana")
@ nLin+12,100 VBtnBmp oBtn2 Prompt "&Terça" Size 40,12 Pixel Of oDlg Action(Botao(2)) When(cCbb_Tipo == "Proximidade" .or. cCbb_Tipo == "Dias da Semana")
@ nLin+24,100 VBtnBmp oBtn3 Prompt "&Quarta" Size 40,12 Pixel Of oDlg Action(Botao(3)) When(cCbb_Tipo == "Proximidade" .or. cCbb_Tipo == "Dias da Semana")
@ nLin+36,100 VBtnBmp oBtn4 Prompt "&Quinta" Size 40,12 Pixel Of oDlg Action(Botao(4)) When(cCbb_Tipo == "Proximidade" .or. cCbb_Tipo == "Dias da Semana")
@ nLin+48,100 VBtnBmp oBtn5 Prompt "&Sexta" Size 40,12 Pixel Of oDlg Action(Botao(5)) When(cCbb_Tipo == "Proximidade" .or. cCbb_Tipo == "Dias da Semana")
//Função dos botões
//**************************
Static Func FEscolheTipo()
//**************************
? cCbb_Tipo
If AllTrim(cCbb_Tipo) == aCbb_Tipo[3]
lBut1 := .F.
lBut2 := .F.
lBut3 := .F.
lBut4 := .F.
lBut5 := .F.
EndIf
oBtn1:Refresh()
oBtn2:Refresh()
oBtn3:Refresh()
oBtn4:Refresh()
oBtn5:Refresh()
Retu (.F.)
22 Abr 2010 13:04
22 Abr 2010 13:25
Que bom !krowzinha.26 escreveu:HAHAHAHAHA, Já achei a solução.
Puts... ainda bem que ja foi resolvido, senão corria o risco de ainda ficar mais enrolado nas respostas...anacatacombs escreveu:Só para Constar..
Não é em HWGUI.. e sim FIVEWIN
22 Abr 2010 13:35
22 Abr 2010 13:44
23 Abr 2010 05:03
...
/**** **** **** **** **** **** **** **** **** **** **** **** ****
* FUNCAO: Painel de filtragem avancada de registros
**** **** **** **** **** **** **** **** **** **** **** **** ****/
static function ShowPainel( cDbf, oLbx )
local oIco, oDlgPainel
local oBrush, oBmp1, oBmp2
PUBLIC cCtrl9000 := SPACE(45) ,;
nCtrl9001 := 1 ,;
lCtrl9003 := .F. ,;
cCtrl9004 := "COMERCIO" ,;
lCtrl9005 := .F. ,;
cCtrl9006 := "BLOQUEADO",;
lCtrl9007 := .F. ,;
cCtrl9008 := "CADASTRO" ,;
nCtrl9009 := 3 ,;
nCtrl9012 := 1 ,;
nCtrl9013 := 1 ,;
dCtrl9014 := INIMES( DATE() ),;
dCtrl9015 := FIMMES( DATE() ),;
lCtrl9016 := .F. ,;
lCtrl9017 := .F. ,;
lCtrl9018 := .F. ,;
lCtrl9019 := .F. ,;
oCtrl9101,oCtrl9000,oCtrl9001,oCtrl9003,oCtrl9004,oCtrl9005,oCtrl9006,oCtrl9007,;
oCtrl9008,oCtrl9009,oCtrl9012,oCtrl9013,oCtrl9014,oCtrl9015,oCtrl9016,oCtrl9017,;
oCtrl9018,oCtrl9019,cDTFiltro
aCtrl9004 := {}
aCtrl9006 := { "OTIMO", "BOM", "REGULAR", "RUIM", "PESSIMO" }
aCtrl9008 := { "CADASTRO", "ANIVERSARIO", "PRIMEIRA COMPRA", "ULTIMA COMPRA" }
dbSelectArea( "TIPOCLI" )
dbEval( {|| AADD( aCtrl9004, TIPOCLI->OBS ) } )
//dbEval( {|| AADD( aCtrl9006, TIPOCLI->OBS ) } )
dbSelectArea( "CLIENTES" )
idTheHelp := "SHOWPAINEL"
cBMPFundo := "ballon.bmp"
DEFINE BITMAP oBmp1 FILENAME cBMPFundo
DEFINE BITMAP oBmp2 FILENAME cBMPFundo
DEFINE BRUSH oBrush FILENAME cBMPFundo // STYLE NULL
DEFINE DIALOG oDlgPainel RESOURCE "dlgPainel" BRUSH oBrush //TRANSPARENT // STYLE WS_POPUP
oDlgPainel:lTransparent := .t.
REDEFINE SAY ID 97 OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE SAY ID 98 OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE SAY ID 99 OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE GET oCtrl9000 VAR cCtrl9000 ID 9000 PICTURE "@!" OF oDlgPainel // VALID IIF(!EMPTY(cCtrl9000), oCtrl9101:Enable(), oCtrl9101:Disable() )
REDEFINE RADIO oCtrl9001 VAR nCtrl9001 ID 9001,9002 ON CHANGE oCtrl9101:Enable() OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE CHECKBOX oCtrl9003 VAR lCtrl9003 ID 9003 ON CHANGE oCtrl9101:Enable() OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE COMBOBOX oCtrl9004 VAR cCtrl9004 ID 9004 ITEMS aCtrl9004 OF oDlgPainel WHEN lCtrl9003
REDEFINE CHECKBOX oCtrl9005 VAR lCtrl9005 ID 9005 ON CHANGE oCtrl9101:Enable() OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE COMBOBOX oCtrl9006 VAR cCtrl9006 ID 9006 ITEMS aCtrl9006 OF oDlgPainel WHEN lCtrl9005
REDEFINE CHECKBOX oCtrl9007 VAR lCtrl9007 ID 9007 ON CHANGE oCtrl9101:Enable() OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE COMBOBOX oCtrl9008 VAR cCtrl9008 ID 9008 ITEMS aCtrl9008 WHEN lCtrl9007 OF oDlgPainel
REDEFINE RADIO oCtrl9009 VAR nCtrl9009 ID 9009,9010,9011 WHEN lCtrl9007 ON CHANGE oCtrl9101:Enable() OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE GET oCtrl9012 VAR nCtrl9012 ID 9012 PICTURE "999" WHEN lCtrl9007 OF oDlgPainel ;
VALID nCtrl9012 >= 0 ;
SPINNER ;
ON UP (++nCtrl9012,oCtrl9012:Refresh(),nCtrl9009:=1,oCtrl9009:Refresh(),oCtrl9101:Enable()) ;
ON DOWN (--nCtrl9012,oCtrl9012:Refresh(),nCtrl9009:=1,oCtrl9009:Refresh(),oCtrl9101:Enable()) MIN 1
REDEFINE GET oCtrl9013 VAR nCtrl9013 ID 9013 PICTURE "999" WHEN lCtrl9007 OF oDlgPainel ;
VALID nCtrl9013 >= 0 ;
SPINNER ;
ON UP (++nCtrl9013,oCtrl9013:Refresh(),nCtrl9009:=2,oCtrl9009:Refresh(),oCtrl9101:Enable()) ;
ON DOWN (--nCtrl9013,oCtrl9013:Refresh(),nCtrl9009:=2,oCtrl9009:Refresh(),oCtrl9101:Enable()) MIN 1
REDEFINE BTNGET oCtrl9014 VAR dCtrl9014 ID 9014 WHEN lCtrl9007 ;
RESOURCE "calen" OF oDlgPainel SPINNER ;
ON UP (++dCtrl9014,oCtrl9014:Refresh(),nCtrl9009:=3,oCtrl9009:Refresh(),oCtrl9101:Enable()) ;
ON DOWN (--dCtrl9014,oCtrl9014:Refresh(),nCtrl9009:=3,oCtrl9009:Refresh(),oCtrl9101:Enable()) ;
ACTION (aRect := GetCoors(oCtrl9014:hWnd),;
dCtrl9014 := FwCalendar(dCtrl9014,aRect[1],aRect[4],oDlgPainel),;
oCtrl9014:Refresh())
REDEFINE BTNGET oCtrl9015 VAR dCtrl9015 ID 9015 WHEN lCtrl9007 ;
RESOURCE "calen" OF oDlgPainel SPINNER ;
ON UP (++dCtrl9015,oCtrl9015:Refresh(),nCtrl9009:=3,oCtrl9009:Refresh(),oCtrl9101:Enable()) ;
ON DOWN (--dCtrl9015,oCtrl9015:Refresh(),nCtrl9009:=3,oCtrl9009:Refresh(),oCtrl9101:Enable()) ;
ACTION (aRect := GetCoors(oCtrl9015:hWnd),;
dCtrl9015 := FwCalendar(dCtrl9015,aRect[1],aRect[4],oDlgPainel),;
oCtrl9015:Refresh())
REDEFINE CHECKBOX oCtrl9016 VAR lCtrl9016 ID 9016 ON CHANGE oCtrl9101:Enable() OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE CHECKBOX oCtrl9017 VAR lCtrl9017 ID 9017 ON CHANGE oCtrl9101:Enable() OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE CHECKBOX oCtrl9018 VAR lCtrl9018 ID 9018 ON CHANGE oCtrl9101:Enable() OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE CHECKBOX oCtrl9019 VAR lCtrl9019 ID 9019 ON CHANGE oCtrl9101:Enable() OF oDlgPainel COLOR RGB(000,000,000),RGB(255,255,255)
REDEFINE BUTTON oCtrl9101 ID 9101 OF oDlgPainel ACTION ( oCtrl9101:Disable(), SuperFiltro( cDbf, oLbx, oCtrl9101, ;
cCtrl9000,;
nCtrl9001,;
lCtrl9003,;
cCtrl9004,;
lCtrl9005,;
cCtrl9006,;
lCtrl9007,;
cCtrl9008,;
nCtrl9009,;
nCtrl9012,;
nCtrl9013,;
dCtrl9014,;
dCtrl9015,;
lCtrl9016,;
lCtrl9017,;
lCtrl9018,;
lCtrl9019 ) )
oCtrl9004:Disable()
oCtrl9006:Disable()
oCtrl9008:Disable()
oCtrl9003:lTransparent := .t.
oCtrl9005:lTransparent := .t.
oCtrl9007:lTransparent := .t.
//oCtrl9009:lTransparent := .t.
oCtrl9016:lTransparent := .t.
oCtrl9017:lTransparent := .t.
oCtrl9018:lTransparent := .t.
oCtrl9019:lTransparent := .t.
ACTIVATE DIALOG oDlgPainel CENTERED // NOWAIT
return nil
/*
* FUNCAO: Suporte a funcao acima
*/
static function SuperFiltro( cDbf, oLbx, oBtn, ;
cCtrl9000,;
nCtrl9001,;
lCtrl9003,;
cCtrl9004,;
lCtrl9005,;
cCtrl9006,;
lCtrl9007,;
cCtrl9008,;
nCtrl9009,;
nCtrl9012,;
nCtrl9013,;
dCtrl9014,;
dCtrl9015,;
lCtrl9016,;
lCtrl9017,;
lCtrl9018,;
lCtrl9019, cExFiltro )
local cBRFiltro := ""
if EMPTY( cCtrl9000 )
cBRFiltro := "!EMPTY("+cDbf+"->NOME)"
else
if nCtrl9001 = 1
cBRFiltro := "FDecripta( "+cDbf+"->NOME ) = '" + ALLTRIM( cCtrl9000 ) + "'"
else
cBRFiltro := "'" + ALLTRIM( cCtrl9000 ) + "' $ "+cDbf+"->NOME"
endif
endif
if alias() = "VENDEDOR"
cBRFiltro := cBRFiltro + " .AND. '"+ALLTRIM(M->TI_PO2)+"' $ VENDEDOR->TIPO"
endif
if lCtrl9003
cBRFiltro := cBRFiltro + " .AND. "+cDbf+"->TIPO = '" + alltrim(cCtrl9004) + "'"
endif
if lCtrl9005
cBRFiltro := cBRFiltro + " .AND. "+cDbf+"->AVALIACAO = '" + alltrim(cCtrl9006) + "'"
endif
if lCtrl9007
if cCtrl9008 = "CADASTRO" .OR. EMPTY(cCtrl9008)
cDTFiltro := ""+cDbf+"->DATACAD"
endif
if cCtrl9008 = "ANIVERSARIO"
cDTFiltro := ""+cDbf+"->DTNASC"
endif
if cCtrl9008 = "PRIMEIRA COMPRA"
cDTFiltro := ""+cDbf+"->DTCOMPRA"
endif
if cCtrl9008 = "ULTIMA COMPRA"
cDTFiltro := ""+cDbf+"->DTUCOMPRA"
endif
endif
if lCtrl9007
if nCtrl9009 = 1
nCCFiltro := nCtrl9012 * 30
cBRFiltro := cBRFiltro + " .AND. " + ;
cDTFiltro + " >= DATE()-" + STR( nCCFiltro, 3 ) + " .AND. " + ;
cDTFiltro + " <= DATE()"
endif
if nCtrl9009 = 2
nCCFiltro := nCtrl9013
cBRFiltro := cBRFiltro + " .AND. " + ;
cDTFiltro + " >= DATE()-" + STR( nCCFiltro, 3 ) + " .AND. " + ;
cDTFiltro + " <= DATE()"
endif
if nCtrl9009 = 3
cBRFiltro := cBRFiltro + " .AND. " + ;
cDTFiltro + " >= CTOD('" + DTOC( dCtrl9014 ) + "') .AND. " + ;
cDTFiltro + " <= CTOD('" + DTOC( dCtrl9015 ) + "')"
endif
endif
if lCtrl9016
cBRFiltro := cBRFiltro + " .AND. "+cDbf+"->MALAOK = 'X'"
endif
if lCtrl9017
cBRFiltro := cBRFiltro + " .AND. "+cDbf+"->INATIVO = 'X'"
endif
if lCtrl9018
cBRFiltro := cBRFiltro + " .AND. "+cDbf+"->BLOQUEIO = 'X'"
endif
if lCtrl9019
cBRFiltro := cBRFiltro + " .AND. !EMPTY("+cDbf+"->EMAIL)"
endif
dbSetFilter( {|| &cBRFiltro. }, &cBRFiltro. )
dbGoTop()
oLbx:SetFocus()
oLbx:UpStable()
oLbx:Refresh()
return(.t.)
...
if lCtrl9007 // Se marquei o CheckBox Data
... // Monto o trecho que filtre pelo campo DTNASC
if cCtrl9008 = "ANIVERSARIO"
cDTFiltro := ""+cDbf+"->DTNASC"
endif
...
if lCtrl9007 // Se marquei o CheckBox Data
if nCtrl9009 = 1
nCCFiltro := nCtrl9012 * 30
cBRFiltro := cBRFiltro + " .AND. " + ;
cDTFiltro + " >= DATE()-" + STR( nCCFiltro, 3 ) + " .AND. " + ;
cDTFiltro + " <= DATE()"
endif
if nCtrl9009 = 2
nCCFiltro := nCtrl9013
cBRFiltro := cBRFiltro + " .AND. " + ;
cDTFiltro + " >= DATE()-" + STR( nCCFiltro, 3 ) + " .AND. " + ;
cDTFiltro + " <= DATE()"
endif
if nCtrl9009 = 3
cBRFiltro := cBRFiltro + " .AND. " + ;
cDTFiltro + " >= CTOD('" + DTOC( dCtrl9014 ) + "') .AND. " + ;
cDTFiltro + " <= CTOD('" + DTOC( dCtrl9015 ) + "')"
endif
endif
dlgPainel DIALOG 173, 34, 119, 250
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Painel de Filtragem"
FONT 8, "Helv"
{
LTEXT "", 90, 129, -5, 118, 251, NOT WS_GROUP
EDITTEXT 9000, 4, 12, 110, 12
CONTROL "Iniciando", 9001, "BUTTON", BS_AUTORADIOBUTTON, 4, 27, 42, 12
CONTROL "Contendo", 9002, "BUTTON", BS_AUTORADIOBUTTON, 60, 27, 54, 12
CHECKBOX " Tipo", 9003, 4, 41, 60, 12, BS_AUTOCHECKBOX | WS_TABSTOP
COMBOBOX 9004, 16, 56, 98, 57, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CHECKBOX " Situação", 9005, 4, 74, 60, 12, BS_AUTOCHECKBOX | WS_TABSTOP
COMBOBOX 9006, 16, 89, 98, 57, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CHECKBOX " Data", 9007, 4, 108, 60, 12, BS_AUTOCHECKBOX | WS_TABSTOP
COMBOBOX 9008, 16, 123, 98, 50, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "nos ultimos", 9009, "BUTTON", BS_AUTORADIOBUTTON, 15, 139, 47, 12
EDITTEXT 9012, 63, 139, 25, 12, WS_BORDER | WS_VSCROLL | WS_TABSTOP
CONTROL "nos ultimos", 9010, "BUTTON", BS_AUTORADIOBUTTON, 15, 155, 46, 12
EDITTEXT 9013, 63, 155, 25, 12, WS_BORDER | WS_VSCROLL | WS_TABSTOP
CONTROL "entre", 9011, "BUTTON", BS_AUTORADIOBUTTON, 15, 171, 34, 12
EDITTEXT 9014, 53, 172, 62, 12, WS_BORDER | WS_VSCROLL | WS_TABSTOP
EDITTEXT 9015, 53, 188, 62, 12, WS_BORDER | WS_VSCROLL | WS_TABSTOP
CHECKBOX "Marcados", 9016, 4, 204, 48, 12, BS_AUTOCHECKBOX | WS_TABSTOP
CHECKBOX "Inativos", 9017, 4, 216, 49, 12, BS_AUTOCHECKBOX | WS_TABSTOP
LTEXT "Procurar por nomes", 99, 4, 2, 70, 8
LTEXT "meses", 98, 92, 141, 23, 8
LTEXT "dias", 97, 92, 157, 18, 8
PUSHBUTTON "Executar pesquisa", 9101, 4, 231, 111, 14
CHECKBOX "Bloqueados", 9018, 64, 204, 48, 12, BS_AUTOCHECKBOX | WS_TABSTOP
CHECKBOX "Com Email", 9019, 64, 216, 49, 12, BS_AUTOCHECKBOX | WS_TABSTOP
}