Jump to content
Fivewin Brasil

Pesquisa dinamica (Resolvido!)


Arthur Silvestre

Recommended Posts

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? 

Link to comment
Share on other sites


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.)

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

//--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)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...