Criando um janela de multiplas opções para retornar o resultado em um campo
Trazendo opções de um ARRAY:
Na função que criei, passo como parâmetro o titulo e as opções. As opções serão incluídas dentro de um array.
A quantidade de opções incluindo direto como parâmetro irá depender do espaço disponível no campo XB_CONTEM, para poucas opções não é necessário incluí-las no fonte, com isso fica mais dinâmico.
Note na imagem acima que o quadro “Máx.Elem.p/Seleção” está com 1, neste caso, determinei que apenas 1 registro será selecionado.
O parâmetro responsável para isso é o l1Elem, se ele estiver como verdadeiro (.T.), apenas um registro será selecionado por vez.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
//U_FSELARRA("Tipo de CT-e",x3CboxToArray("F1_TPCTE")[1]) //A função x3CboxToArray irá buscar o conteudo do campo X3_CBOX do campo F1_TPCTE e converterá em um array //OU //U_FSELARRA("Opções",{"1 - Opcao 1","2 - Opcao 2","3 - Opcao 3"}) User Function FSELARRA(cTitulo,aOpcoes,l1Elem,lTipoRet) /* cTitulo = Titulo da Janela aOpcoes = Opções que irão aparecer para serem selecionados l1Elem = Definie se a seleção será de apenas de 1 elemento lTipoRet= Define o tipo de retorno */ Local MvParDef:="" Local MvPar := "" Local i Private aCat:=aOpcoes Default cTitulo :="" Default lTipoRet := .T. l1Elem := If (l1Elem = Nil , .F. , .T.) //Definie se a seleção será de apenas de 1 elemento, .F. mais de um elemento cAlias := Alias() // Salva Alias Anterior if Len(aOpcoes)==0 Help('',1,'FSELARRA',,'As opções não foram inseridas!',1,0) Return Endif IF lTipoRet MvPar:=&(Alltrim(ReadVar())) // Carrega Nome da Variavel do Get em Questao mvRet:=Alltrim(ReadVar()) // Iguala Nome da Variavel ao Nome variavel de Retorno EndIF For i := 1 To Len(aCat) MvParDef+=Left(aCat[i],1) Next IF f_Opcoes(@MvPar,cTitulo,aCat,MvParDef,12,49,l1Elem) // Chama funcao f_Opcoes &MvRet := mvpar EndIF dbSelectArea(cAlias) // Retorna Alias Return( IF( lTipoRet , .T. , MvParDef ) ) |
Continua página 3