error en Xbrowse SOLUCIONADO

error en Xbrowse SOLUCIONADO

Postby JoseLuis » 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
Code: Select all  Expand view

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

 


Estas funciones son llamadas desde aqui

Code: Select all  Expand view

       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

--------------------------
Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: error en Xbrowse SOLUCIONADO

Postby JoseLuis » Sat Apr 22, 2023 2:42 pm

Si es un lobo, me come.

me sobraba el valid
Code: Select all  Expand view

        oBrw:bKeyDown:= { | nKey | iif(nKey=VK_RETURN,(Ponciudad(oBrw3,oBrw),oDlgb:End() ), ) }
         
ACTIVATE DIALOG oDlgB centered ON INIT oDlgB:Move( aPoint[ 1 ], aPoint[ 2 ] )//;        VALID ( iif( lOk, (Ponciudad(oBrw3,oBrw)), ),.T. )
 
--------------------------
Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 65 guests