Necesito de su ayuda.
Tengo un Xbrowse con un Array, el cual posee 2 columnas, Codigo y Nombre del Examen.
Cuando carga el Xbrowse, siempre activa la 1ª Columna Codigo como indice, Necesito que al ingresar, el indice que se active sea la 2ª Columna (Nombre), esto evita que se tenga que Clickear esta columna, ya que la prioridad para buscar es por Nombre.
Segundo, cuando realizo la busqueda, necesito que se filtre y muestre Solo lo que coincide y cuando termine la busque, vuelva el contenido original del Xbrowse, es decir toda la información, listo para una nueva busqueda.
Tercero, cuando Clickee en la cabecera para cambiar el indice, el Array tome el Primer Registro.
Lamento molestarlos, pero tengo esta necesidad urgente.
Muchos Saludos
Antonio
Dejo el Codigo:
- Code: Select all Expand view RUN
Function Buscar_Cod_Nue(Tip_Ate1,Tip_Pag1,aCodigos,Can_Cod1,Val_Tot1)
local oDlg33, oBrw, oFont, oCol,otitu,oFont1,otitu1 ,oFont7,oBrw2,otitu2,oDlg4,oFont2,oBot1,oBot2
Local oSay5,oSay6,otitu6
Sele Aran
DbSetorder(2)
Seek Tip_Ate1+Tip_Pag1
If Eof()
MsgStop( "No Se Encontro Arancel Para Tipo Examen "+Tip_Ate1+" y Tipo Pago "+Tip_Pag1)
Return .f.
Endif
If Tip_Pag1 # Tip_Pag2 .and. Tip_Ate1 # Tip_Ate2
Tip_Pag2:=Tip_Pag1
Tip_Ate2:=Tip_Ate1
Do While (Tip_Ate=Tip_Ate1.and.Tip_Pag=Tip_Pag1).and.!Eof()
Aadd(aArancel, { Aran->Cod_Ara,Aran->Nom_Ara,Aran->Val_Ara})
DbSkip()
EndDo
Endif
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
DEFINE FONT oFont1 NAME 'TAHOMA' SIZE 0,24 BOLD
DEFINE FONT oFont2 NAME "TAHOMA" SIZE 0,-12 BOLD
DEFINE FONT oFont7 NAME "TAHOMA" SIZE 0,-14 BOLD
DEFINE DIALOG oDlg33 RESOURCE "#1005" FONT oFont
REDEFINE SAY otitu PROMPT " MAESTRO DE ARANCEL " ID 4004 OF oDlg33 COLORS RGB(12, 135, 27) FONT oFont1
REDEFINE XBROWSE oBrw OF oDlg33 DATASOURCE aArancel ID 4001;
HEADERS 'Código', 'Nombre de Examen';
COLUMNS 1, 2;
PICTURES "@!","@!" ;
COLSIZES 70, 280;
CELL LINES AUTOSORT NOBORDER;
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLWIN7
oBrw:nColDividerStyle := LINESTYLE_INSET
oBrw:nRowDividerStyle := LINESTYLE_INSET
oBrw:bClrHeader := {|| { nRGB(140, 0, 0), nRGB( 231, 242, 255 ), } }
oBrw:nOpacity := 230
oBrw:nHeaderHeight := 35
oBrw:nFreeze := 2
oBrw:aCols[1]:oHeaderFont:= oFont7
oBrw:aCols[2]:oHeaderFont:= oFont7
oCol := oBrw:aCols[ 2 ]
ocol:cToolTip:="Clique para ordenar por NOMBRE"
oCol := oBrw:aCols[ 1 ]
ocol:cToolTip:="Clique para ordenar por CODIGO"
oBrw:bClrStd := { || If( Eval( oBrw:bKeyNo,,oBrw1) % 2 == 0, { CLR_BLACK, RGB( 198, 255, 198 ) },;
{ CLR_BLACK, RGB( 232, 255, 232 ) } ) } // Efecto Cebra
oBrw:aCols[ 1 ]:oDataFont := oFont7
oBrw:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } }
oBrw:bClrSelFocus := {|| { nRGB( 255, 255, 255), nRGB(102, 178, 255) } }
oBrw:bClrSel := {|| { nRGB( 0, 0,255), nRGB(241,222,088) } } // para barra de linea selecc cuando el control no tiene el foco
oBrw:lAutoSort := .t.
oBrw:lFooter := .f.
oBrw:lHScroll := .f.
oBrw:lIncrFilter := .F.
oBrw:lSeekWild := .F. && .T. Busca Contenido, .F. Que comience con lo que digita
oBrw:SetStyle( 2018)
oBrw:nColorPen := CLR_RED
oBrw:bChange := {|| oBrw:Refresh() }
WITH OBJECT oBrw
:bKeyDown:={|nKey| iif(nKey=32.or.nKey=VK_RETURN, (Agre_Codi(Tip_Ate1,Tip_Pag1,aArancel,aCodigos, oBrw:nArrayAt,@Can_Cod1,@Val_Tot1),oDlg33:End()),oBrw:Refresh())}
:bLDblClick:={||(Agre_Codi(Tip_Ate1,Tip_Pag1,aArancel,aCodigos, oBrw:nArrayAt,@Can_Cod1,@Val_Tot1)), oSay3:Refresh(),oSay4:Refresh(), oSay5:Refresh(),oSay6:Refresh(),oBrw2:Refresh()}
:bChange := { || oBrw2:GoTop(), oSay3:Refresh(),oSay4:Refresh(), oBrw2:Refresh()}
END
REDEFINE SAY PROMPT "Buscar : " ID 4010 OF oDlg33 COLORS RGB(12, 135, 27) FONT oFont2
REDEFINE SAY oBrw:oSeek VAR oBrw:cSeek ID 4011 OF oDlg33 PICTURE "@!" LEFT COLOR CLR_HRED,CLR_YELLOW
REDEFINE BTNBMP ID 4002 PROMPT "SALIR" OF oDlg33 ADJUST 2007 FONT oFont7 NOBORDER ;
ToolTip "VOLVER A LA PANTALLA ANTERIOR";
ACTION (oDlg33:END())
ACTIVATE DIALOG oDlg33 CENTERED
RELEASE FONT oFont,oFont1,oFont7
Return nil