y por que no creas tu propio buscador, creando debajo de un get un dialogo y un xbrowse... te dejo una idea.
Code: Select all
****************************************
*DIBUJAMOS EL DIALOGO PARA LAS BUSQUEDAS
****************************************
METHOD dibujaDialogo(oDlg,oGet) CLASS cBusc
Local vGbus := space(100)
local nTopR, nLeftR, nAltura
local aPoint,nWidth:=0
nTopR := oGet:nTop
nLeftR := oGet:nLeft
nAltura := oGet:nHeight
aPoint := { nTopR+nAltura, nLeftR }
aPoint = ClientToScreen( oDlg:hWnd, aPoint )
Define Font oFont Name "Calibri" Size 0,-12 Bold
Define Font oFont1 Name "Calibri" Size 0,-13
DEFINE DIALOG oDlgBar RESOURCE "ORFACT3" OF oDlg
REDEFINE GET oGbus VAR vGbus ID 4002 OF oDlgBar UPDATE VALID (::hacefiltro(cBrw,vGbus),.T.)
cBrw := TXBrowse():New( oDlgBar )
cBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW
cBrw:nRowDividerStyle := LINESTYLE_LIGHTGRAY
cBrw:nColDividerStyle := LINESTYLE_LIGHTGRAY
cBrw:nHeaderLines := 1
cBrw:lColDividerComplete := .t.
cBrw:lRecordSelector := .t.
cBrw:nStretchCol := STRETCHCOL_LAST
cBrw:l2007 := .f.
cBrw:oFont := oFont1
cBrw:bKeyDown := {|nKey|iif(nKey == 13,oDlgBar:end(),)}
cBrw:blDblClick := {|| oDlgBar:end()}
oCol = cBrw:AddCol()
oCol:bStrData = { || If( ::oRsBar:Eof, Space( nWidth ), ::oRsBar:Fields( ::hCampos["codigo"] ):Value ) }
oCol:cHeader = ::hCabecera["codigo"]
oCol:nWidth = 90
oCol:nHeadStrAlign = AL_LEFT
oCol:nDataStrAlign = AL_LEFT
oCol:oHeaderFont = oFont
oCol:bLClickHeader := {|r,c,f,o| ::organiza(::hCampos["codigo"]) }
oCol = cBrw:AddCol()
oCol:bStrData = { || If( ::oRsBar:Eof, Space( nWidth ), alltrim( ::oRsBar:Fields( ::hCampos["nombre"] ):Value ) ) }
oCol:cHeader = ::hCabecera["nombre"]
oCol:nWidth = 250
oCol:nHeadStrAlign = AL_LEFT
oCol:nDataStrAlign = AL_LEFT
oCol:oHeaderFont = oFont
oCol:bLClickHeader := {|r,c,f,o| ::organiza(::hCampos["nombre"]) }
cBrw:SetADO( ::oRsBar )
cBrw:CreateFromResource( 102 )
oDlgBar:cTitle := "Buscar Artículo"
oDlgBar:bPostEnd := { || ::oRsBar:Close() }
oDlgBar:nOpacity := 240
oDlgBar:bStart := { || SetCapture( oDlgBar:hWnd ) }
ACTIVATE DIALOG oDlgBar ON INIT (oDlgBar:SetPos( aPoint[ 1 ], aPoint[ 2 ] ) )
//AL CERRAR EL DIALOGO HACEMOS EL RETORNO DE LA INFORMACION
::retorna()
return nil