******************************************************************************
STATIC FUNCTION DsBldPopUp(fCol,gCol)
聽 聽LOCAL OldPar := {ALIAS(),INDEXORD(),RECNO()}
聽 聽LOCAL cRet 聽 := .F.
聽 聽LOCAL dRet 聽 := .F.
聽 聽DeleteObject(pMenu)
聽 聽MEMORY(-1)
聽 聽TMenuItem():New():nInitId := 20000
聽 聽SYSREFRESH()
聽 聽pMenu := NIL
聽 聽MENU pMenu POPUP
聽 聽 聽 聽 SELECT MENT
聽 聽 聽 聽 SET ORDER TO 5
聽 聽 聽 聽 GO TOP
聽 聽 聽 聽 DO WHILE !EOF()
聽 聽 聽 聽 聽 聽IF MENT->MNPOPUP = ShowArr[ShowLbx:nAt,17,1] .OR. MENT->MNPOPUP = 15
聽 聽 聽 聽 聽 聽 聽 DO CASE
聽 聽 聽 聽 聽 聽 聽 聽 聽CASE MENT->MNSOORT = 1 ; DsMenuVul(dRet) ; dRet := .F. ; MENU
聽 聽 聽 聽 聽 聽 聽 聽 聽CASE MENT->MNSOORT = 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SELECT DOC
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SET ORDER TO 3
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SEEK(VAL(MENT->MNDOC))
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 IF FOUND()
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF (MENT->MNPOPUP = 15 .AND. ShowArr[ShowLbx:nAt,17,1] <> 13) .OR. ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 (MENT->MNPOPUP = ShowArr[ShowLbx:nAt,17,1] .AND. ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽(DOC->DOCMAIL = 11 .OR. ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ((ShowArr[ShowLbx:nAt,17,2] = "1" .AND. (DOC->DOCMAIL = 2 .OR. DOC->DOCMAIL = 5 .OR. DOC->DOCMAIL = 6 .OR. DOC->DOCMAIL = 9)) .OR. ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽(ShowArr[ShowLbx:nAt,17,2] = "2" .AND. (DOC->DOCMAIL = 3 .OR. DOC->DOCMAIL = 5 .OR. DOC->DOCMAIL = 7 .OR. DOC->DOCMAIL = 9)) .OR. ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽(ShowArr[ShowLbx:nAt,17,2] = "3" .AND. (DOC->DOCMAIL = 4 .OR. DOC->DOCMAIL = 5 .OR. DOC->DOCMAIL = 8 .OR. DOC->DOCMAIL = 9)) .OR. ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽(ShowArr[ShowLbx:nAt,17,2] <> "1" .AND.ShowArr[ShowLbx:nAt,17,2] <> "2" .AND.ShowArr[ShowLbx:nAt,17,2] <> "3"))))
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 DsMenuVul(dRet,MENT->MNPOPUP,fCol,gCol) ; dRet := .F.
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SELECT MENT
聽 聽 聽 聽 聽 聽 聽 聽 聽CASE MENT->MNSOORT = 3 ; dRet := .T.
聽 聽 聽 聽 聽 聽 聽 聽 聽CASE MENT->MNSOORT = 4 ; dRet := .F. ; ENDMENU
聽 聽 聽 聽 聽 聽 聽 ENDCASE
聽 聽 聽 聽 聽 聽 聽 cRet := .T.
聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽SKIP
聽 聽 聽 聽 ENDDO
聽 聽 聽 聽
聽 聽ENDMENU
聽 聽SELECT(OldPar[1])
聽 聽SET ORDER TO OldPar[2]
聽 聽GOTO OldPar[3]
RETURN(cRet)
******************************************************************************
STATIC PROCEDURE DsMenuVul(mRet,mTel,hCol,iCol)
聽 聽LOCAL cActie := ""
聽 聽DEFAULT(mTel,0)
聽 聽DEFAULT(hCol,0)
聽 聽DEFAULT(iCol,0)
聽 聽IF mRet ; SEPARATOR ; ENDIF
聽 聽IF !EMPTY(cActie := MENT->MNACTIE)
聽 聽 聽 IF hCol < iCol
聽 聽 聽 聽 聽cActie := ALLTRIM(cActie) + ",OpenBase(.T.),EndSub(.T.,,.T.)}"
聽 聽 聽 ELSE
聽 聽 聽 聽 聽cActie := LEFT(ALLTRIM(cActie),LEN(ALLTRIM(cActie))-1) + ",,,,,,," + IF(mTel=1,".F.",".T.") + ",ShowLbx:nAt),OpenBase(.T.),EndSub(.T.,,.T.)}"
聽 聽 聽 ENDIF
聽 聽 聽 cActie := "{|| ToonWindow(),StartSub(.T.,,.T.)," + ALLTRIM(cActie)
聽 聽 聽 MENUITEM (ALLTRIM(IF(EMPTY(MENT->MNPOPTXT),MENT->MNTEKST,MENT->MNPOPTXT)) + IF(!EMPTY(MENT->MNFKEY),CHR(9)+ALLTRIM(MENT->MNFKEY),"")) BLOCK ({|| TvActie := cActie})
聽 聽ELSE
聽 聽 聽 MENUITEM (ALLTRIM(IF(EMPTY(MENT->MNPOPTXT),MENT->MNTEKST,MENT->MNPOPTXT)))
聽 聽ENDIF
RETURN
******************************************************************************