emotta Posted February 4, 2010 Author Report Share Posted February 4, 2010 Nao, o problema nao era esse. mas obrigado Eduardo Motta citação: citação:Pessoal, consegui uma solução para este caso que creio eu ser a mais coerente. Se o valid do GET estiver .f. e o usuario clicar para mudar o FOLDER eu executo o metodo UNDO da classe TGET para retornar o valor. Veja o exemplo abaixo: Obrigado a todos que ajudaram, #include "fivewin.ch" function Main() local oDlg, oFld Local cCodigo := Space(06) Local cEnde := Space(30) Local cNome := Space(40) Local cBairro := Space(20) DEFINE DIALOG oDlg TITLE "FiveWin Dynamic folders" FROM 5, 5 TO 20, 49 @ 0.5, 1 FOLDER oFld PROMPT "FOLDER1", "FOLDER2", "FOLDER3" OF oDlg SIZE 160, 90 oFld:bChange := {|x,y| VldChange(oFld,x,y) } @ 05,05 Get cCodigo Of oFld:aDialogs[1] PICTURE "@!" VALID ( VAL(cCodigo)>=1 .AND. VAL(cCodigo)<=10) Pixel CENTER @ 20,05 Get cNome PICTURE "@!" Of oFld:aDialogs[1] Pixel @ 05,05 Get cEnde PICTURE "@!" Of oFld:aDialogs[2] Pixel @ 20,05 Get cBairro PICTURE "@!" Of oFld:aDialogs[2] Pixel @ 5.5, 11 BUTTON "Ok" OF oDlg ACTION ( oDlg:End() ) ACTIVATE DIALOG oDlg CENTERED MsgStop(cCodigo) return nil Static Function VldChange(oFolder,nOption, nOldOption) Local nI Local nJ Local oObj Local lSai := .F. For nI := 1 to Len(oFolder:aDialogs) aControls := oFolder:aDialogs[nI]:aControls For nJ := 1 to Len(oFolder:aDialogs[nI]:aControls) If GetFocus()==oFolder:aDialogs[nI]:aControls[nJ]:hWnd oObj := aControls[nI] Try If !oObj:lValid() oObj:Undo() EndIf Catch End lSai := .T. Exit EndIf Next If lSai Exit EndIf Next Return .T. EMotta Sistemas Eduardo Motta emotta@gmail.com.br FWH 9.09 - xHARBOUR 1.2.1 id=quote>id=quote>Creio eu que o problema desde o inicio é apenas uma confusão entre variavel objeto e variavel valor. O get que voce esta criando tem a variavel objeto cNome e depois esta variavel se torna uma variavel conteudo de valor. O certo seria assim: @ 05,05 Get oBjetoCodigo var cCodigo Pict "@!" Valid (Val(cCodigo)>=1 .and. Val(cCodigo)<=10) Of oFld:aDialogs[1] Pixel Giovany Vecchi - Jales - SP FWH 8.6 / Harbour RC1 V 1.0.0 / Code Gear 6 Bcc 5.6 /Bcc 5.9 / Ads 8.1 /PellesC id=quote>id=quote>EMotta Sistemas Eduardo Motta emotta@gmail.com.br FWH 9.09 - xHARBOUR 1.2.1 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 13, 2013 Report Share Posted September 13, 2013 Pessoal, Estou com esse mesmo problema. Li todo o post acima e não entendi como foi resolvido. Por favor, me ajude a enteder. Obrigado, Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 13, 2013 Report Share Posted September 13, 2013 Estou com um problema sério no ButtonBmp. Tenho um Get numa Folder para a digitação do número do cliente e na frente um botão com ButtonBmp que abre uma tela de seleção do cliente. Se eu clicar sobre o botão ele anula o VALID do campo Get e depois disso, qualquer informação que eu digitar no Get ele passa sem validação. Como posso corrigir isso? Aguardo, Quote Link to comment Share on other sites More sharing options...
vagner Posted September 13, 2013 Report Share Posted September 13, 2013 Olá, Após seu o action do button, coloque :oSeuGet:bValid := {|| SuaRotinaDeValidação() } Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 13, 2013 Report Share Posted September 13, 2013 Ou talvez: oBotao:bWhen := {|| !Empty(cVariavel) } Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 13, 2013 Report Share Posted September 13, 2013 O problema está com a versão do meu Fivewin Fhw0808 + xHarbour 1.0.0. Nas versões mais recentes esse problema do ButtonBmp foi corrigido. Quote Link to comment Share on other sites More sharing options...
emotta Posted September 13, 2013 Author Report Share Posted September 13, 2013 Pior que nem eu lembro como resolvi o caso... rs... Quote Link to comment Share on other sites More sharing options...
emotta Posted September 13, 2013 Author Report Share Posted September 13, 2013 Oscar, a solução para o meu caso na época vou utilizar o evento bChange do Folder e tratar isso, dessa maneira abaixo: (caso nao resolva sugiro criar um novo post mas este já está marcado como RESOLVIDO) // coloque isso logo depois de criar o Folder oFld:bChange := {|x,y| VldChange(oFld,x,y) }// esta é a função de tratamento que deve ficar no fonte ou vc criar um nome genérico e tirar o STATIC dela deixando disponivel para todos os fontes: Static Function VldChange(oFolder,nOption, nOldOption)Local nILocal nJLocal oObjLocal lSai := .F.For nI := 1 to Len(oFolder:aDialogs) aControls := oFolder:aDialogs[nI]:aControls For nJ := 1 to Len(oFolder:aDialogs[nI]:aControls) If GetFocus()==oFolder:aDialogs[nI]:aControls[nJ]:hWnd oObj := aControls[nI] Try If !oObj:lValid() oObj:Undo() EndIf Catch End lSai := .T. Exit EndIf Next If lSai Exit EndIfNextReturn .T. Pior que nem eu lembro como resolvi o caso... rs... Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 15, 2013 Report Share Posted September 15, 2013 As versões recentes do Fwh + xharbour resolvem isso. Muito obrigado. 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.