error en Xbrowse SOLUCIONADO
Posted: Sat Apr 22, 2023 11:41 am
Buenas
Tengo estas dos funciones que me buscan una poblacion por el nombre, todo funciona bien, pero hay una cosa que me mosquea, y es que me he dado cuenta que evalúa dos veces la función ponciudad, por lo tanto me mustra dos veces el mensaje "Poblacion ya existía" , en su caso. la primera vez se muestra el mensaje con el xbrowse de fondo, y la segunda vez, solo el mensaje, ya se ha cerrado el browse
Estas funciones son llamadas desde aqui
Tengo estas dos funciones que me buscan una poblacion por el nombre, todo funciona bien, pero hay una cosa que me mosquea, y es que me he dado cuenta que evalúa dos veces la función ponciudad, por lo tanto me mustra dos veces el mensaje "Poblacion ya existía" , en su caso. la primera vez se muestra el mensaje con el xbrowse de fondo, y la segunda vez, solo el mensaje, ya se ha cerrado el browse
Code: Select all | Expand
//----------------------
static Function BuscaPo(oBrw3,nRow,ncol,apoint)
Local oDlgB, oBrw, lOk:= .F.
local ocol,oFont2
DEFINE FONT oFont2 NAME "TAHOMA" SIZE 0,-12 BOLD
DEFINE DIALOG oDlgB SIZE 200,250 PIXEL ; oDlgB:lHelpIcon:=.F.
@ 10,0 xBrowse oBrw Of oDlgB ALIAS "Munici" AUTOSORT SIZE -2,-2 PIXEL
oBrw:lheader:=.f.
oBrw:nMarqueeStyle:=5
oBrw:lHScroll:= .f.
oBrw:lVScroll:= .f.
oBrw:nRowDividerStyle:= 0
oBrw:lRecordSelector := .f.
oBrw:lIncrFilter:= .t.
oBrw:lSeekWild := .t.
oBrw:bLDblClick:={ || ( SysWait(.2),__KeyBoard(Chr(13)) ) }
oCol:=oBrw:AddCol()
oCol:bStrData := { || Munici->cnommun }
// oCol:cSortOrder:="cNommun"
oCol:nWidth:=200
oCol:oDataFont := oFont2
oBrw:CreateFromCode()
@ 1.5,3 SAY oBrw:oSeek PROMPT oBrw:cSeek SIZE 55,8 OF oDlgB PIXEL
oBrw:bKeyDown:= { | nKey | iif(nKey=VK_RETURN,(lOk:=.T.,oBrw:End(),oDlgB:End()), ) }
ACTIVATE DIALOG oDlgB centered ON INIT oDlgB:Move( aPoint[ 1 ], aPoint[ 2 ] );
VALID ( iif( lOk, (Ponciudad(oBrw3,oBrw)), ),.T. )
oDlgB:End()
oFont2:End()
Return Nil
//-------------
Static function ponciudad(oBrw3,oBrw)
local cruta:=Munici->Ruta
local nombreant:=oBrw3:aCols[1]:Value
local nombrenuevo:=oBrw:aCols[1]:value
if !errpobla->(Dbseek(nombreant))
if cruta = Space(2)
msgalert("No puedo agregar una poblacion que no tiene ruta"+chr(13)+;
"Antes de debes asignar una ruta a "+alltrim(nombrenuevo),"ATENCION")
else
While .not. errpobla->(Rlock()); end
errpobla->(Dbappend())
errpobla->Poblaant:=nombreant
errpobla->Poblacion:=nombrenuevo
errpobla->Ruta:=cruta
errpobla->(Dbunlock())
msginfo("Poblacion añadida")
endif
else
msgalert("Poblacion ya existia","Atencion")
endif
return nil
Code: Select all | Expand
DEFINE DIALOG oDlg FROM 5, 100 TO 45, 138; oDlg:lHelpIcon:=.F.
oDlg:cTitle:=titulo
@ 5, 5 Say oSay PROMPT "Poblaciones Para asociar (en Rojo)" OF oDlg PIXEL SIZE 600,15 COLOR nRGb( 251, 151, 71 ) Font Publicas:frosa
@ 12, 5 Say oSay PROMPT "En verde ya estan asociadas" OF oDlg PIXEL SIZE 400,15 COLOR nRGb( 251, 151, 71 ) Font Publicas:frosa
@ 25, 10 xbrowse oBrw3 OF oDlg ;
ALIAS cAlias1;
COLUMNS "Poblacion"," ";
AUTOCOLS LINES CELL NOBORDER SIZE -2,-30 PIXEL
WITH OBJECT oBrw3:aCols[ 1 ]
:cEditPicture := "@!"
:cHeader := "Poblacion"
:nWidth := 230
:AddResource('darrow')
:nBtnBmp := 1
:nEditType := 3
:bEditBlock := { |nRow,nCol,oCol| nRow := ( oBrw3:nRowSel * oBrw3:nRowHeight ) + oBrw3:HeaderHeight( .t. ) - 1,;
aPoint := ClientToScreen( oBrw3:hWnd, { nRow, oBrw3:SelectedCol():nDisplayCol } ),;
(BuscaPo(oBrw3,nRow,nCol,apoint))}
END WITH
WITH OBJECT oBrw3:aCols[ 2 ]
:cDataType := 'F'
:nDataBmpAlign := AL_CENTER
:nWidth := 20
:cHeader := "A"
:AddBitmap("bmpcrcred")
:AddBitmap("bmpcrcgreen")
:bBmpData := { || iif(errpobla->(Dbseek(oBrw3:aCols[1]:Value)),2,1 ) }
END WITH
WITH OBJECT oBrw3
:nColDividerStyle := LINESTYLE_BLACK
:lColDividerComplete := .T.
:l2007 := .T.
:lHscroll:=.F.
:nHeadStrAligns:= AL_CENTER
:lRecordSelector := .F.
:lAllowColHiding := .F.
:lAllowColSwapping := .F.
:nStretchCol := 1
:bClrStd := {|| {CLR_BLACK,If( oBrw3:KeyNo % 2 == 0, nRGB(242,247,252),nRGB(207,222,240) )} }
:nMarqueeStyle := MARQSTYLE_HIGHLROWMS //6
:MakeTotals()
END WITH
oBrw3:CreateFromCode()
@ 280,60 BTNBMP RESOURCE "salirsql" SIZE 20,20 OF oDlg NOBORDER ACTION (oDlg:End())
ACTIVATE DIALOG oDlg ON INIT (oDlg:Move(Publicas:owppal:nHeight()/10,(Publicas:oWPpal:nWidth()/2) - (oDlg:nWidth()/2) ),oBrw3:Setfocus())
Dbcloseall()
ferase(Publicas:cUnidad+Publicas:cSubd+"\Mani1.dbf")
ferase(curdrive()+":\"+curdir()+"\Munici.DBF")
endif
return nil