Arthur Silvestre Posted May 18, 2013 Report Share Posted May 18, 2013 Pessoal, estou tentando desenvolver uma pesquisa dinâmica no fw, porém não tenho nem ideia de onde começar kkkkk, bom vi alguns exemplos em dicas mas todos em @, gostaria de fazer em Res (Pelles C). Tive duas ideias, primeira é colocar um combobox por de baixo do get para abri-lo a medida que eu for digitando no get, ou deixar um get fixo e um xbrowser fixo para alterar o xbrowser a medida que eu for digitando no get, alguém tem uma ou algumas dicas boas para me dar? Quote Link to comment Share on other sites More sharing options...
Theotokos Posted May 18, 2013 Report Share Posted May 18, 2013 EU FAÇO ASSIM: No resource crio :- Browse - Combo : Cliente Selecionar pelo qual campo deseja procurar - Get : onde vai digitar o que deseja procurar. DEFINE DIALOG oDlg RESOURCE "DLG_CON_MER" TITLE "..:: Manutenção de Dados .::. PRODUTOS ::.." * oDlg:lTransparent := .T. oDlg:lHelpIcon := .F. * oBrwMerca := TxBrowse():New( oDlg ) oBrwMerca:CreateFromResource( 4002 ) oBrwMerca:cAlias := 'BanMerca' * ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_GENERICO TITLE "" SIZE 032 ALIGN LEFT * ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_FAMILIA TITLE "FamÃlia" SIZE 150 ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_CODBAR TITLE "Codigo de Barras" SIZE 150 ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_VENDA TITLE "Pr.Venda" SIZE 100 COLORS CLR_HRED ALIGN RIGHT PICTURE "@E R$99,999.99" ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_QUANTIDA TITLE "Qtde" SIZE 080 COLORS CLR_HRED ALIGN RIGHT PICTURE "@E 9,999.99" ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_DESCRICA TITLE "Descrição" SIZE 450 COLORS CLR_HRED * ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_CODIGO TITLE "Código" SIZE 080 ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_REFERENC TITLE "Cod.Peça" SIZE 100 * ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_DENTRADA TITLE "Dt.Ult.Entrada" SIZE 100 ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_QENTRADA TITLE "Qt.Ult.Entrada" SIZE 100 * ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_DSAIDA TITLE "Dt.Ult.SaÃda" SIZE 100 ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_QSAIDA TITLE "Qt.Ult.SaÃda" SIZE 100 * ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_DATACADA TITLE "Dt.Cadastro" SIZE 100 ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_DALTERA TITLE "Dt.Ult.Alteração" SIZE 100 * ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_CUSTO TITLE "Pr.Custo" SIZE 150 COLORS CLR_HRED ALIGN RIGHT PICTURE "@E R$99,999.99" * ADD COLUMN oCol TO XBROWSE oBrwMerca DATA BanMerca->M_PERMITIR TITLE "Estoque" SIZE 50 * REDEFINE COMBOBOX oCbx VAR cCampo PROMPTS {"Descrição","Código","Code Bar","Cod.Peça","FamÃlia","Aplicação"} UPDATE ID 108 OF oDlg * REDEFINE GET oGet VAR cProcura ID 106 OF oDlg ON CHANGE (BcDdProduto(oGet,cCampo,oBrwMerca), oDlg:Refresh()) * REDEFINE BUTTON ID 107 OF oDlg ACTION (EditProduto(1), oBrwMerca:Refresh(), oDlg:Update(), oDlg:Refresh()) When lS_Cadastro REDEFINE BUTTON ID 105 OF oDlg ACTION (oDlg:End()) REDEFINE BUTTON ID 102 OF oDlg ACTION (EditProduto(2), oBrwMerca:Refresh(), oDlg:Update(), oDlg:Refresh()) When lS_Altera REDEFINE BUTTON ID 103 OF oDlg ACTION (Excluir(), oBrwMerca:Refresh(), oDlg:Update(), oDlg:Refresh()) When lS_Exclui * oBrwMerca:nRowHeight := 35 oBrwMerca:lColDividerComplete := .f. oBrwMerca:nDataLines := 1 // Number of lines of the data rows oBrwMerca:nHeaderLines := 1 // Number of lines of the header oBrwMerca:nFooterLines := 1 // Number of lines of the footer oBrwMerca:nDataType := 0 // Data type to be used: 0->rdd, 1->array, ... (more to come) If navigation codeblocks are not specified then get automatically initialized when adjusting the browse depending on this DATA value oBrwMerca:nHeaderHeight := 25 oBrwMerca:nColDividerStyle := 2 // Column divider style: 0 No lines 1 Black line 2 Dark gray line 3 Raised 4 Inset 5 Fore Color 6 Light gray oBrwMerca:nRowDividerStyle := 2 // Column divider style: 0 No lines 1 Black line 2 Dark gray line 3 Raised 4 Inset 5 Fore Color 6 Light gray oBrwMerca:nMarqueeStyle := 4 // Marquee style (row selected) 0 No Marquee 1 Dotted cell 2 Solid cell 3 Highlight cell 4 Highlight row & Raise Cell 5 Highlight row 6 Highlight row & multiselect oBrwMerca:bSeek := {|c| cProcura := Pad(C,30), oGet:Refresh(), DbSeek(Upper( c )) } oBrwMerca:bClrSelFocus := {|| {cCorFrente, cCorfundo} } oBrwMerca:bClrSel := {|| {cCorFrente, cCorfundo} } oBrwMerca:bClrStd := {|| {cCorFrente, IIF( BANMERCA->( OrdKeyNo() )%2 == 0, CLR_WHITE, nRGB(232,232,232) ) }} oBrwMerca:SetRDD(.F.) * oBrwMerca:lAllowRowSizing := .F. oBrwMerca:lAllowColSwapping := .F. oBrwMerca:lAllowColHiding := .F. * oBrwMerca:aCols[3]:oDataFont := oFont oBrwMerca:aCols[4]:oDataFont := oFont oBrwMerca:aCols[5]:oDataFont := oFont oBrwMerca:aCols[6]:oDataFont := oFont oBrwMerca:aCols[7]:oDataFont := oFont oBrwMerca:aCols[8]:oDataFont := oFont * oBrwMerca:aCols[5]:AddBmpFile( "BMP\Organiza.bmp" ) oBrwMerca:aCols[5]:nHeadBmpNo := 0 oBrwMerca:aCols[5]:nHeadBmpAlign := 1 * oBrwMerca:aCols[7]:AddBmpFile( "BMP\Organiza.bmp" ) oBrwMerca:aCols[7]:nHeadBmpNo := 1 oBrwMerca:aCols[7]:nHeadBmpAlign := 1 * oBrwMerca:aCols[5]:bLClickHeader := {|| Sel("BanMerca",1), oBrwMerca:aCols[5]:nHeadBmpNo := 1, oBrwMerca:aCols[7]:nHeadBmpNo := 0,oBrwMerca:Refresh() } oBrwMerca:aCols[7]:bLClickHeader := {|| Sel("BanMerca",2), oBrwMerca:aCols[5]:nHeadBmpNo := 0, oBrwMerca:aCols[7]:nHeadBmpNo := 1,oBrwMerca:Refresh() } * oBrwMerca:aCols[1]:AddBmpFile( "BMP\UP.Bmp" ) oBrwMerca:aCols[1]:AddBmpFile( "BMP\DOWN1.Bmp" ) oBrwMerca:aCols[1]:bBmpData := { || If(BanMerca->M_PERMITIR,1,If( BanMerca->M_QUANTIDA > M_EMINIMO, 1, 2 )) } oBrwMerca:aCols[1]:bStrData := { || "" } oBrwMerca:aCols[1]:nDataBmpAlign := 3 * If lS_Altera oBrwMerca:aCols[4]:nEditType := EDIT_GET oBrwMerca:aCols[4]:bOnPostEdit := {|o,x| RecLock(),FieldPut( FieldPos("M_VENDA"), x ),UnLockRecord() } oBrwMerca:aCols[4]:cEditPicture := "@E 9,999.99" oBrwMerca:aCols[4]:lEditBorder := .f. oBrwMerca:aCols[4]:bEditValid := {|| !Empty(M_VENDA), oBrwMerca:SetFocus(), .t. } // nPosTmp:= RecNO(), oBrwMerca:Refresh(.t.), DbGoTo(nPosTmp), .t. } * oBrwMerca:aCols[5]:nEditType := EDIT_GET oBrwMerca:aCols[5]:bOnPostEdit := {|o,x| GravaAltQtde(x) } oBrwMerca:aCols[5]:cEditPicture := "@E 9,999.99" oBrwMerca:aCols[5]:lEditBorder := .f. oBrwMerca:aCols[5]:bEditValid := {|| oBrwMerca:SetFocus(), .t. } // nPosTmp:= RecNO(), oBrwMerca:Refresh(.t.), DbGoTo(nPosTmp), .t. } End * oBrwMerca:bLDblClick := {|| If(MsgYesNo("Imprimir Folha MESA?"),PrtMesa(M_CODIGO),) } oBrwMerca:cToolTip := "- Dois Clique no Produto para Imprimir Folha MESA" * oBrwMerca:SetFocus() oBrwMerca:lFastEdit := .t. * ACTIVATE DIALOG odlg CENTER * DbCloseAll() Return * * * Function BcDdProduto(cP,cC,oB) Local cPro := cP:cText() Do Case Case AllTrim(cC) == "Descrição" Sel(DBF(),2) Case AllTrim(cC) == "FamÃlia" // Abre o Arquivo em Ordem Familia Sel(DBF(),4) Case AllTrim(cC) == "Aplicação" // Abre o Arquivo em Ordem Aplicacao Sel(DBF(),3) Case AllTrim(cC) == "Código" // Abre o Arquivo em Ordem Codigo Sel(DBF(),1) Case AllTrim(cC) == "Cod.Peça" // Abre o Arquivo em ordem Cod.Peça Sel(DBF(),5) Case AllTrim(cC) == "Code Bar" // abre o Arquivo em ordem codigo de Barras Sel(DBF(),6) EndCase * dbSetOrder( INDEXORD() ) // define a ordem de filtro ordScope( 0, RTrim(cPRO) ) // TOP (De...) ordScope( 1, RTRim(cPro) ) // BOTTOM (..Até) * dbGoTop() oB:Refresh() * Return(.T.) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted May 20, 2013 Report Share Posted May 20, 2013 na busca, pesquisa por: pesquisa incremental ou busca em get ou busca incremental ou ordwildseek(). Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted May 20, 2013 Author Report Share Posted May 20, 2013 Sel(DBF(),2) Que função é essa sel? precisa de alguma lib ? Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted May 20, 2013 Author Report Share Posted May 20, 2013 Consegui, Retirei a função sel e adaptei a meus métodos bom ficou show de bola, logo mais posto o código de um exemplo pois ainda está no esboço e ta feio kkkkkk bom valeu Rone e Kapiaba. Quote Link to comment Share on other sites More sharing options...
Theotokos Posted May 20, 2013 Report Share Posted May 20, 2013 Consegui, Retirei a função sel e adaptei a meus métodos bom ficou show de bola, logo mais posto o código de um exemplo pois ainda está no esboço e ta feio kkkkkk bom valeu Rone e Kapiaba. Blz! só agora que vi a tua pergunta... esta função SEL é função que criei para abrir os meus arquivos com indice... Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted May 22, 2013 Author Report Share Posted May 22, 2013 //--Testando Pesquisa Dinamina--// Arthur Silvestre cCampo:="Codigo" If Select("cAlias")=0 use 'SuaTabela' shared new alia cAlias if neterr() mendisp() close data retu .f. endif set index to cIndex endif select cAlias set filter to * oBrwMerca:= TxBrowse():New( oDlgIncOrc ) oBrwMerca:CreateFromResource( 361 ) oBrwMerca:cAlias := 'cAlias' oBrwMerca:bGoTop() * oBrwMerca:lHeader := .F. oBrwMerca:lHScroll := .F. oBrwMerca:lVScroll := .F. oBrwMerca:nMarqueeStyle := 5 oBrwMerca:lAdjusted := .T. oBrwMerca:lRecordSelector := .F. oBrwMerca:lUpdate := .T. * nvalor=0 ADD COLUMN oCol TO XBROWSE oBrwMerca DATA cAlias->nomepro TITLE "Nome" SIZE 328.3 REDEFINE GET oNomepro var vnomepro Pict "@!" ID 4020 OF oDlgIncOrc; ON CHANGE (BcDdProduto(oNomepro,cCampo,oBrwMerca), oDlgIncOrc:Refresh() ) valid ValidDoGet(nvalor) oNomepro:bKeyChar := {|nKey| (nvalor:=0,IIF ( nKey == VK_RETURN .or. nKey == VK_TAB , nvalor:=1 , )) } oBrwMerca:bKeyChar := {|nKey| IIF( nKey == VK_RETURN, {vnomepro:=pro->nomepro,onomepro:Refresh(),vcodipro:=pro->codipro,ocodipro:Refresh(),oBrwMerca:Hide(),oBrwMerca:Refresh(),xsetfocus(oquantid)},)} //----------------------------------------------------------------------------// Function BcDdProduto(cP,cC,oB) Local cPro := cP:cText() if empty(cPro) oBrwMerca:Hide() ; oBrwMerca:Refresh() else oBrwMerca:Show() ; oBrwMerca:Refresh() endif set order to 2 dbSetOrder( INDEXORD() ) // define a ordem de filtro ordScope( 0, RTrim(cPRO) ) // TOP (De...) ordScope( 1, RTRim(cPro) ) // BOTTOM (..Até) * dbGoTop() oB:Refresh() Return(.T.) //----------------------------------------------------------------------------// Function ValidDoGet(nvalor) if nvalor=1 oBrwMerca:Hide() oBrwMerca:Refresh() sysrefresh() select cAlias if !eof() vnomepro:=cAlias->nomepro; onomepro:refresh() vcodipro:=cAlias->codipro; ocodipro:Refresh() endif xsetfocus(oquantid) oDlgIncOrc:Refresh() else oDlgIncOrc:Refresh() oBrwMerca:Setfocus() sysrefresh() endif Return .t. Bom pessoal, como prometido está ai o código final. Uma boa adaptada do seu Rone mas funcional 100%, espero que compreendão e que sirva pra quem tiver uma duvida semelhante a minha. Abs OBS: no Resource eu coloca uma ''imagem'', como se fosse adicionar uma foto a tela, mas dai eu redefino na imagem um browser ao em vez de um bmp. (Justificativa: Fica mais bonito rsrsrsrsrsrsrs) Theotokos and btsinfo@com4.com.br 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.