Valdir Posted November 14, 2015 Report Share Posted November 14, 2015 Pessoal.. por favor, ajuda ai. Numa Combobox tenho : REDEFINE COMBOBOX oCbx[1] VAR vUF items("ac","al","Am","Ap",Ba",....) ID 100 OF oDlg. Com o ENTER, retorna o valor da variável vUF, porém preciso tratar essa informação antes de sair da combobox. Gostaria que quando clicar com o botão direito do mouse sobre a opção "Ba", fosse retornado o valor 5. Isso é possível ? Obrigado. Ronaldbuch 1 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted November 14, 2015 Report Share Posted November 14, 2015 aVetor := {"ac","al","Am","Ap",Ba"} REDEFINE COMBOBOX oCbx[1] VAR vUF ITEMS aVetor ID 100 OF oDlg Valid ( FcVerItem(vUF) ) Function FcVerItem(cUFTMP) Local lReturn := .T. LOCAL nPosicao := 0 nPosicao := ASCAN(aVetor, {|a| a = cUFTMP }) MsgIngo( nPosicao ) Return(lReturn) Quote Link to comment Share on other sites More sharing options...
vagner Posted November 15, 2015 Report Share Posted November 15, 2015 oSueCombo:nAt Quote Link to comment Share on other sites More sharing options...
Valdir Posted November 15, 2015 Author Report Share Posted November 15, 2015 Amigos... Rone e Vagner. Obrigado pelas respostas. Infelizmente não funfou. Gostaria que fosse retornado o valor de nAt ao ser acionado o evento bLClicked da Combobox. Pelo que andei vendo, a Combobox não possui o Evento bLClicked e portanto, acho que não será possível realizar isso, sem alterar a classe. Infelizmente não entendo nada de Classe para realizar esta alteração. Se um dos amigos estiver disposto a me ensinar, agradeceria. De qualquer forma, agradeço à ambos pela ajuda. Um abraço Quote Link to comment Share on other sites More sharing options...
gilmer Posted November 16, 2015 Report Share Posted November 16, 2015 Inicialize sua variável como numérica, no lugar de vir o elemento escolhido, irá retornar a posição. Quote Link to comment Share on other sites More sharing options...
Edu Posted November 16, 2015 Report Share Posted November 16, 2015 Bom dia! Vc pode executar um ascan no vetor do combobox. Testa assim: REDEFINE COMBOBOX oCbx[1] VAR vUF items("ac","al","Am","Ap",Ba",....) ID 100 OF oDlg UPDATE oCbx[1]:bLClicked:={|| nAt:= ASCAN(oCbx[1]:aItems,,,{|X| X[1] == vUF}) } Quote Link to comment Share on other sites More sharing options...
Valdir Posted November 16, 2015 Author Report Share Posted November 16, 2015 Bom dia Gilmer... Já passo como numérica e quando aciono as teclas "Tab" ou "Enter", retorna o valor de nAt através do valid(). Porém, gostaria que o valor de nAt fosse retornado ao ser selecionado o Elemento da Combobox através do botão direito do mouse e não no valid(). Tens alguma outra sugestão ? Obrigado. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 16, 2015 Report Share Posted November 16, 2015 Veja se ajuda: ::oCmb:setitems(::aCmb[01]) ::oCmb:Refresh() ::oCmb:nAt := 01 ::oDlg:Update() Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 16, 2015 Report Share Posted November 16, 2015 // Passi alla combo un array a una sola dimensione @ 1, 1 COMBOBOX oCombo VAR cVariab ITEMS aMyFunc( aArray, 2 ) // il numero di record lo ricavi così: aArray[ oCombo:nAt , 1 ] @ 3 , 2 BUTTON oButton ACTION MsgInfo( "Numero di record " + STR( aArray[oCombo:nAt,1],2 ) ) STATIC FUNCTION aMyFunc( aArray, nElem ) LOCAL i, aCombo := {} FOR i := 1 TO LEN(aArray) AADD( aCombo, aArray[ i , nElem ] ) NEXT i RETURN aCombo Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 16, 2015 Report Share Posted November 16, 2015 Talvez, http://forums.fivetechsupport.com/viewtopic.php?f=3&t=20101&p=106197&hilit=nat+en+combo#p106197 Quote Link to comment Share on other sites More sharing options...
Valdir Posted November 16, 2015 Author Report Share Posted November 16, 2015 Edu... Bom dia. Obrigado, más também não funcionou. Como a Combobox não tem o evento bLClicked, ao ser acionado o botão direito do mouse, é acionado o Evento bLClicked da Dialog. Preciso que o retorno seja acionado pelo valor do vetor da Combobox. Kapi... Bom dia. Não quero incluir um vetor e sim pegar o seu valor através do botão direito do mouse. Obrigado. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 16, 2015 Report Share Posted November 16, 2015 Valdir, o que voce quer, nao pode ser assim? Porque o click direito do mouse? #include "FiveWin.ch" function Main() local oDlg, oCbx, cDia DEFINE DIALOG oDlg @ 1, 3 COMBOBOX oCbx VAR cDia OF oDlg SIZE 100, 300 ; ITEMS { "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo" } ; STYLE CBS_DROPDOWN ON CHANGE QueDia( cDia ) oCbx:oGet:bKeyChar = { | nKey | If( nKey == VK_RETURN,; ( cDia := oCbx:oGet:GetText(), Eval( oCbx:bChange() ) ),),; oCbx:GetKeyChar( nKey ) } ACTIVATE DIALOG oDlg CENTERED return nil function QueDia(cDia) MsgAlert("Hoy día es: "+cDia) Return nil Quote Link to comment Share on other sites More sharing options...
aferra Posted November 16, 2015 Report Share Posted November 16, 2015 uma boa pergunta...porque tem que ser botão direito? Quote Link to comment Share on other sites More sharing options...
Valdir Posted November 16, 2015 Author Report Share Posted November 16, 2015 Olá meu amigo Alessandro... uma boa pergunta...porque tem que ser botão direito? Não precisa ser necessariamente o Botão Direito. Foi apenas um indicativo para um evento relacionado ao mouse. Um abraço Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 16, 2015 Report Share Posted November 16, 2015 Porque voce não poe uma BITMAP ao lado do COMBO? Ai, você pode controlar a vontade com o mouse direito, faz o que tem que fazer e refresca o combo. Quote Link to comment Share on other sites More sharing options...
Valdir Posted November 16, 2015 Author Report Share Posted November 16, 2015 Pessoal... Para o caso de mais alguém precisar. consegui resolver através da Dica do Kapiaba, do fórum internacional. Foi esse o exemplo: REDEFINE COMBOBOX oCbx1 VAR cItem1 ITEMS { "One", "Two", "Three" } ; ID ID_SIMPLE OF oDlg ; ON CHANGE ( cItem4 := cItem1, oSay:Refresh(), ; IIF( oCbx1:nAt = 1, MsgWait( "Message-Test 1", "Row Position 1", 2 ), NIL ), ; IIF( oCbx1:nAt = 2, MsgWait( "Message-Test 2", "Row Position 2", 2 ), NIL ), ; IIF( oCbx1:nAt = 3, MsgWait( "Message-Test 3", "Row Position 3", 2 ), NIL ) ) ; VALID ( cItem4 := cItem1, oSay:Refresh(), .t. ) À todos o meu Muito Obrigado. Abraços. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 16, 2015 Report Share Posted November 16, 2015 kkkkkkk, fiquei "passado", vou mudar meu <nick> de <kapiaba> para <kapeta>. kkkkkkkkkkkkkkkkkkkkkkkk, desconfiei desde o principio... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.