Acessei meu servidor pelo remoto e consegui pegar o código.
Como programo mais por hobby, o código não é muito elaborado mas funciona e acho que é de fácil compreensão.
Se alguém puder melhora-lo, favor postar.
Código: Selecionar todos
/*
Sistema.................: SISCON - Sistema de Consórcios
Módulo..................: Consulta detalhada de consorciados
Data Última alteração...: 19/02/2019
Ultima alteração........: Imcluir busca por nome
*/
#INCLUDE "FiveWin.ch"
#Include "VOGET.ch"
#Define CLR_LGREEN nRGB( 190, 215, 190 )
#Define CLR_LGRAY nRGB( 230, 230, 230 )
#Define CLR_VERMELHO nRGB( 255, 000, 000 ) //--> Vermelho Para a Letra
#Define CLR_AMARELO nRGB( 255, 255, 000 ) //--> Amarelo Para o Fundo
//--------------------------------------- LISTAGEM DETALHADA DE CONSORCIADOS
FUNCTION CODETALH()
//--------------------------------------- FECHAR DBF ABERTOS NA ESTAÇÃO E REABRI-LOS
CLOSE DATABASE
ABRIR()
//--------------------------------------- VERIFICA SE TEM BLOQUEIO
SELECT NIVEL //
BLOCQ := NI20 // Este bloco é
IF BLOCQ = "S" // para a função
USARI := "" // que verifica se
PASOUU := "N" // o módulo está com
PEDESENHA() // acesso restrito e
IF PASOUU = "N" // solicitar usuário
RETURN NIL // e senha e validar usuário
ENDIF
ENDIF
//---------------------------------------
xNOMEC := SPACE(50)
SELECT Consor
ORDSETFOCUS("Consor2")
GO TOP
DEFINE FONT oFontL12 NAME "LUCIDA CONSOLE" SIZE 0,-(12*1.33)
DEFINE DIALOG TELDTA RESOURCE "CLDETALHA" TITLE "...:: LISTAGEM DETALHADA DE CONSORCIADOS ::..." COLOR RGB (000,000,000),RGB (136,211,227)
REDEFINE SAY oSAYDET1 PROMPT "Buscar Nome :" ID 1 COLOR RGB (000,000,000),RGB (136,211,227)
REDEFINE GET oNOME_Busca VAR xNOMEC ID 104 OF TELDTA ON CHANGE(CONTEUDODT(oNOME_Busca,nKey,TELDTA,oLbxs2,xNOMEC,oLbxs1)) FONT oFontL12
//--------------------------------------- LISTA DIREITA
REDEFINE LISTBOX oLbxs2 FIELDS Consor->POSICAO ,; // C 80 - PARCELAS
Consor->CONTEMP ,; // C 02 - CONTEMPLADO
Consor->NUM_NF ,; // C 06 - NOTA FISCAL
Consor->(DTOC(DTASSEM)) ,; // D 10 - ENTREGA
Consor->RAZAO ,; // C 40 - NOME
Consor->ASSEMB ,; // C 02 - PARCELA
Consor->(DTOC(DT_ASSEMB)) ; // D 10 - SORTEIO
HEADERS "123456789#123456789#123456789#123456789#123456789#123456789#123456789#123456789#",;
"CO","N FISC","ENTREGA","CONSORCIADO","PC","SORTEIO" ID 102 FONT oFontL12
oLbxs2:bChange := {|| ATUALIST1()}
oLbxs2:nClrBackHead := CLR_LGREEN // Cor do Fundo do Cabe‡alho
oLbxs2:nClrBackFocus := CLR_HRED // Cor do Cursor Em Cima do Ötem
oLbxs2:nClrForeFocus := CLR_AMARELO // cor da letra da barra ativa
oLbxs2:nClrForeHead := CLR_HRED // Cor nos Headers - Cabe‡alhos
oLbxs2:nClrPane := { || IIF(Consor->(OrdKeyNo()) % 2 == 0, CLR_LGREEN, CLR_LGRAY ) } // cor do fundo
oLbxs2:nLineStyle := 3
oLbxs2:lCellStyle := .F. // .T. So Pinta a celula que o cursor esta
oLbxs2:lMChange := .F. // Desabilita Mousemove
oLbxs2:SetFocus() // Refocus on The Browse
oLbxs2:Refresh() // Estabiliza o Browse/Listbox
//--------------------------------------- LISTA ESQUEDA
REDEFINE LISTBOX oLbxs1 FIELDS Consor->GRUPO ,; // C 005 - GRUPO
Consor->COTA ,; // C 003 - COTA
Consor->CONTRATO ; // C 006 - CONTRATO
HEADERS "GRUPO","COTA","CONTRATO" ID 101 FONT oFontL12 WHEN .F.
oLbxs1:nClrBackHead := CLR_LGREEN // Cor do Fundo do Cabe‡alho
oLbxs1:nClrBackFocus := CLR_HRED // Cor do Cursor Em Cima do Ötem
oLbxs1:nClrForeFocus := CLR_AMARELO // cor da letra da barra ativa
oLbxs1:nClrForeHead := CLR_HRED // Cor nos Headers - Cabe‡alhos
oLbxs1:nClrPane := { || IIF(Consor->(OrdKeyNo()) % 2 == 0, CLR_LGREEN, CLR_LGRAY ) } // cor do fundo
oLbxs1:nLineStyle := 3
oLbxs1:lCellStyle := .F. // .T. So Pinta a celula que o cursor esta
oLbxs1:lMChange := .F. // Desabilita Mousemove
oLbxs1:SetFocus() // Refocus on The Browse
oLbxs1:Refresh() // Estabiliza o Browse/Listbo
//---------------------------------------
REDEFINE BUTTON ID 103 CANCEL ACTION TELDTA:END()
ACTIVATE DIALOG TELDTA CENTERED ON INIT xFocus(oLbxs2)
CLOSE DATABASE
oFontL12:END()
RETURN .T.
//---------------------------------------
FUNCTION ATUALIST1()
ll := oLbxs2:nRowPos()
oLbxs1:nRowPos(ll)
oLbxs1:SetFocus()
oLbxs1:Refresh()
oLbxs2:SetFocus()
Return .T.
//--------------------------------------- BUSCAR CONTEUDO CONTRATO
STATIC FUNCTION CONTEUDODT( oGetBusca, cKey, TELAINC, oLbxINC, XNOMEC,oLbxINC1)
LOCAL RetornaBusca := ""
MEMVAR oNome_Busca
SELECT Consor
GO TOP
ORDSETFOCUS("Consor3")
MontaChaveBuscaArquivo( oGetBusca, cKey, TELAINC, @RetornaBusca, oLbxINC )
Consor->(DBSEEK( ALLTRIM( RetornaBusca ) ) )
IF EOF()
DBGOTOP()
ENDIF
ORDSETFOCUS("Consor2")
oLbxINC1:Refresh()
oLbxINC:Refresh()
RETURN .T.
////////////////////////////////////////////////////////////////////////////////
///////// Este bloco de código fica em outro módulo com funções de uso geral
//--------------------------------------- MONTA CHAVE DE BUSCA
FUNCTION MontaChaveBuscaArquivo( oGetBusca, cKey, TELAINC, RetornaBusca )
Local cChaveBusca := ( oGetBusca:oGet:Buffer ), nPosAnt := Recno()
IF ( cKey != 7 .And. cKey != 8 )
cChaveBusca := Stuff( cChaveBusca, oGetBusca:nPos, ;
If( Set(_SET_INSERT), 0, 1 ), Chr( cKey ) )
ENDIF
RetornaBusca := Upper ( cChaveBusca) // cChaveBusca
RETURN( RetornaBusca )
////////////////////////////////////////////////////////////////////////////////
///////// Na indexação
USE DBCONS\Consor
If Neterr()
ELSE
IF lPack = .T.
PACK
ENDIF
INDEX ON GRUPO TAG GRUPOCO TO DBCONS\INDICE\BASE4CDX
INDEX ON COTA TAG COTACON TO DBCONS\INDICE\BASE4CDX
INDEX ON CONTRATO TAG CONTRCO TO DBCONS\INDICE\BASE4CDX // ERA - Consor5
INDEX ON DTOC(DT_INICIO) TAG DTAINCO TO DBCONS\INDICE\BASE4CDX
INDEX ON Grupo+Cota+Contrato TAG Consor2 TO DBCONS\INDICE\BASE4CDX
INDEX ON Razao TAG Consor3 TO DBCONS\INDICE\BASE4CDX
INDEX ON Grupo+Contrato TAG Consor4 TO DBCONS\INDICE\BASE4CDX
INDEX ON Grupo+Cota TAG Consor5 TO DBCONS\INDICE\BASE4CDX
INDEX ON Cidader TAG Consor6 TO DBCONS\INDICE\BASE4CDX // ERA - Consor4
INDEX ON DTVECON TAG Consor7 TO DBCONS\INDICE\BASE4CDX // DATA DA VENDA
INDEX ON CODVEND TAG Consor8 TO DBCONS\INDICE\BASE4CDX // VENDEDOR
ENDIF
////////////////////////////////////////////////////////////////////////////////
//--------------------------------------- RC
CLDETALHA DIALOG 6, 15, 764, 386
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "DIALOG_5"
FONT 8, "MS Sans Serif"
{
LTEXT "", -1, 5, 5, 754, 350, WS_BORDER | WS_GROUP
LISTBOX IDC_LISTBOX21, 10, 10, 120, 350, LBS_STANDARD
LISTBOX IDC_LISTBOX22, 119, 10, 632, 350, LBS_STANDARD
PUSHBUTTON "Fechar Janela", IDC_PUSHBUTTON139, 684, 360, 70, 18
RTEXT "Buscar Nome :", 1, 124, 365, 55, 8
CONTROL "104", IDC_EDIT214, "EDIT", ES_UPPERCASE | WS_BORDER | WS_TABSTOP, 181, 363, 350, 12
}
As linhas de 18 a 28 é para validação se o módulo é protegido e se o usuário tem permissão para acessa-lo pode desconsiderar.
Quanto a inscrição no canal, só posto algum vídeo quando tenho de mostra algo a alguém e deixo como conteúdo privado.