Luiz Arruda (ICO) Posted March 14, 2013 Report Share Posted March 14, 2013 Bom dia Pessoal Como faço uma condição If ser disparada no exemplo abaixo DEFINE MSGITEM oRow OF oWnd:oMsgBar ; PROMPT "Acesso &Acc" SIZE 160 ; ACTION (Listagem(MsgYesNo("Data e Hora em que o Computador foi ligado"+CRLF+CRLF+"Limpar dados ?","..::Dados"))) tentei com IIF mas sem sucesso!! Obrigado... Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 14, 2013 Report Share Posted March 14, 2013 Cole e copie para \samples e teste para ver se te ajuda: // Testing Bitmaps in the MsgBar - \SAMPLES\TESTMBAR.PRG #include "FiveWin.ch" static oWnd //----------------------------------------------------------------------------// function Main() local lMail := .t., oBar local oMsgItem, oMsgItemMail DEFINE WINDOW oWnd TITLE "Testing MsgBar with bitmaps" DEFINE BUTTONBAR oBar OF oWnd _3D @ 10,10 CHECKBOX lMail PROMPT "E-Mail" OF oWnd ; SIZE 200, 35 COLOR CLR_BLACK ; ON CHANGE If( ! lMail, oWnd:oMsgBar:DelItem( oMsgItemMail ), ; oWnd:oMsgBar:InsItem( oMsgItemMail, 2 ) ) SET MESSAGE OF oWnd TO "I may use different bitmaps" DEFINE MSGITEM oMsgItem OF oWnd:oMsgBar ; PROMPT "Lock" ; SIZE 60 ; BITMAPS "..\bitmaps\16x16\lock.bmp", "..\bitmaps\16x16\unlock.bmp" ; ACTION ( oMsgItem:lActive := !oMsgItem:lActive, oMsgItem:Paint() ) DEFINE MSGITEM oMsgItemMail OF oWnd:oMsgBar ; SIZE 24 ; BITMAPS "..\bitmaps\16x16\MAIL.BMP" ; TOOLTIP "Check the email" + CRLF + "Get email" DEFINE MSGITEM OF oWnd:oMsgBar ; BITMAPS "..\bitmaps\16x16\PRINTER.BMP" ; ACTION PrinterSetup() ; TOOLTIP "Setup the printer" oWnd:oMsgBar:DateOn() oWnd:oMsgBar:ClockOn() ACTIVATE WINDOW oWnd return nil //----------------------------------------------------------------------------// Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted March 14, 2013 Author Report Share Posted March 14, 2013 Não é isso baby ..eu quero simular If MsgYesNo() no Action sem disparar para uma FunctionTipo assim ; If MsgYesNo("Deseja Sair") Quit Endif So que executando direto no Action, do mesmo jeito que abre o sim,não DEFINE MSGITEM oRow OF oWnd:oMsgBar ; PROMPT "Acesso &Acc" SIZE 160 ; ACTION (Listagem(MsgYesNo("Data e Hora em que o Computador foi ligado"+CRLF+CRLF+"Limpar dados ?","..::Dados"))) .. será que é possivel ? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 14, 2013 Report Share Posted March 14, 2013 Não vey... eu acho que não, vc. tem que disparar com o: ACTION( FUNCAO_DESLIGA() ) Quote Link to comment Share on other sites More sharing options...
AnaCatacombs Posted March 14, 2013 Report Share Posted March 14, 2013 Ico, seria algo assim? IIF(MsgYesNo("Data e Hora em que o Computador foi ligado"+CRLF+CRLF+"Limpar dados ?"),Sua_Funcao_Que_Limpa_os_dados(),.T.) []'s Ana Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted March 14, 2013 Report Share Posted March 14, 2013 Olá ico, posta seu código se possÃvel. Isso funcionou normalmente aqui, teste se puder: DEFINE MSGITEM ABABA OF oWnd:oMsgBar PROMPT NUMRED SIZE 150 BITMAP "logoff" ACTION IF( MSGYESNO('','') , MSGINFO('YES','ATENÇÃO') , MSGINFO('NO','ATENÇÃO') ) TOOLTIP "TESTE" CENTER Quote Link to comment Share on other sites More sharing options...
AnaCatacombs Posted March 14, 2013 Report Share Posted March 14, 2013 Nossa, Boiei HAeuihaeiuaHEA Li rapidão e entendi outra coisa Desculpe, pessoal Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted March 15, 2013 Author Report Share Posted March 15, 2013 Acho que não vai ter jeito mesmo, vou o que eu não queria, disparar para uma function mesmo da maneira que o Erciley postou, no lugar das MsgInfo() teno que ir para uma function, e é exactamente isso que eu não queria, minha vontade era executar o delete no clickalgo assim ; DEFINE MSGITEM ABABA OF oWnd:oMsgBar PROMPT " Dados" ; SIZE 150 BITMAP "..\lembre\question.bmp" ; ACTION If MsgYesNo("Deseja excluir os dados ?", "..::Dados")) ; Acesso->dbdelete(),.t., ; ToolTip "Dados" Center Mas isso nem passa na compilação Obrigado a quem respondeu... Quote Link to comment Share on other sites More sharing options...
aferra Posted March 15, 2013 Report Share Posted March 15, 2013 Testes desta maneira. ACTION IF( MsgYesNo("Deseja excluir os dados ?", "..::Dados"), msginfo("deleta"), MsgInfo("Não Deleta")) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 15, 2013 Report Share Posted March 15, 2013 Não sei qual éa FRESCURA de não disparar para uma função... Emboyolou de vez?? kkkkkkkkkkkkkkkkkkkkkkkkkkkk Quote Link to comment Share on other sites More sharing options...
AnaCatacombs Posted March 15, 2013 Report Share Posted March 15, 2013 Repicando o repique: Ico, seu erro alà é fechar o ) do IIF antes da condição. Pega esse segundo parenteses, e coloca na linha debaixo: DEFINE MSGITEM ABABA OF oWnd:oMsgBar PROMPT " Dados" ; SIZE 150 BITMAP "..\lembre\question.bmp" ; ACTION If MsgYesNo("Deseja excluir os dados ?", "..::Dados"), Acesso->dbdelete(),.t.) ; ToolTip "Dados" Center Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted March 15, 2013 Author Report Share Posted March 15, 2013 Testes desta maneira. ACTION IF( MsgYesNo("Deseja excluir os dados ?", "..::Dados"), msginfo("deleta"), MsgInfo("Não Deleta")) Mesmo desta maneira no lugar do Msginfo() tenho que disparar pra função.... só com o msg funfa mas não executa o Dbdelete() Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted March 15, 2013 Author Report Share Posted March 15, 2013 Repicando o repique: Ico, seu erro alà é fechar o ) do IIF antes da condição. Pega esse segundo parenteses, e coloca na linha debaixo: DEFINE MSGITEM ABABA OF oWnd:oMsgBar PROMPT " Dados" ; SIZE 150 BITMAP "..\lembre\question.bmp" ; ACTION If MsgYesNo("Deseja excluir os dados ?", "..::Dados"), Acesso->dbdelete(),.t.) ; ToolTip "Dados" Center Nem passou na compilação, com o If mesmo com o endif depois... Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted March 15, 2013 Author Report Share Posted March 15, 2013 Não sei qual éa FRESCURA de não disparar para uma função... Emboyolou de vez?? kkkkkkkkkkkkkkkkkkkkkkkkkkkk Se podemos fazer com uma unica linha o que se faz com 20 é lucro não é bi ... Quote Link to comment Share on other sites More sharing options...
AnaCatacombs Posted March 15, 2013 Report Share Posted March 15, 2013 Tente assim, coração: DEFINE MSGITEM ABABA OF oWnd:oMsgBar PROMPT " Dados" ; SIZE 150 BITMAP "..\lembre\question.bmp" ; ACTION If MsgYesNo("Deseja excluir os dados ?", "..::Dados"), Acesso->(dbdelete()),.t.) ; ToolTip "Dados" Center Note que a diferença está no Acesso->(dbdelete()) Testei aqui e compilou. Quote Link to comment Share on other sites More sharing options...
CIACPD Posted March 16, 2013 Report Share Posted March 16, 2013 Testado. DEFINE MSGITEM ABABA OF oWndEdit:oMsgBar PROMPT " Dados" ; SIZE 150 BITMAP "..\BITMAPS\EXIT.BMP" ; ACTION If( MsgYesNo("Deseja excluir os dados ?", "..::Dados"), msginfo("Acesso->(dbdelete()),.t.","Atenção") , ) ; ToolTip "Dados" Center Troque a função msginfo por sua rotina. Daniel Segura Quote Link to comment Share on other sites More sharing options...
vagner Posted March 16, 2013 Report Share Posted March 16, 2013 Olá, ACTION IF( MsgYesNo("Deseja excluir os dados ?", "..::Dados"), (SeuArquivo->(RLock()),SeuArquivo->(DbDelete()),SeuArquivo->(DbUnlock()), MsgInfo("Não Deleta")) Agora se For mais de um registro : ACTION IF( MsgYesNo("Deseja excluir os dados ?", "..::Dados"), SueArquivo->(DbEval({||(SeuArquivo->(RLock()),SeuArquivo->(DbDelete()),SeuArquivo->(DbUnlock())}), MsgInfo("Não Deleta")) Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted March 18, 2013 Report Share Posted March 18, 2013 LOCAL bBlock:={|| IF( MSGYESNO('Deseja excluir os dados ?','ATENÇÃO') , (ALIAS->(RLOCK()),ALIAS->(DBDELETE())) , .T. ) } E agora para despoluir o código...... ^^ ...ACTION EVAL(bBlock) Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted March 18, 2013 Author Report Share Posted March 18, 2013 LOCAL bBlock:={|| IF( MSGYESNO('Deseja excluir os dados ?','ATENÇÃO') , (ALIAS->(RLOCK()),ALIAS->(DBDELETE())) , .T. ) } E agora para despoluir o código...... ^^ ...ACTION EVAL Bom dia a todos... A dica que mais se aproximou e não deu erro na compilação foi esta, tudo funciona perfeitamente, só que não faz o que deveria fazer.... excluir os dados Obrigado.. Quote Link to comment Share on other sites More sharing options...
Eduardo Bilato Posted March 18, 2013 Report Share Posted March 18, 2013 Lembe-se ICO que, neste exemplo do Erciley, você deve substituir o ALIAS-> pelo alias que está usando. Exemplo: se seu arquivo usa o alias NF, deverá ficar LOCAL bBlock:={|| IF( MSGYESNO('Deseja excluir os dados ?','ATENÇÃO') , (NF->(RLOCK()),NF->(DBDELETE())) , .T. ) } Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted March 18, 2013 Author Report Share Posted March 18, 2013 Bom dia Eduardo... isso foi a primeira coisa que eu fiz Abraços.. Quote Link to comment Share on other sites More sharing options...
CIACPD Posted March 18, 2013 Report Share Posted March 18, 2013 Olá Ico, Verifique "SET DELETED ON" Abaixo um teste com um pouco de cada dica. #include "FiveWin.ch" static oWnd, oWndEdit, oItem, ABABA, ; aCoors, oFont, oMenu, oMenuitem static aColors, aFonts static nColors, nFonts //----------------------------------------------------------------------------// function Main() Local i:=1 LOCAL bBlock :={|| IF( MSGYESNO('Deseja excluir os dados ?','ATENÇÃO' ) , ( Clientes->(RLOCK()),Clientes->(DBDELETE()) ) , .T. ) } LOCAL bBlock2:={|| IF( MSGYESNO('Deseja excluir os dados ?','ATENÇÃO') , Clientes->(DbEval({||(Clientes->(RLock() ), Clientes->(DbDelete()), Clientes->(DbUnlock()) )})) , .T. ) } SET DELETED ON aColors := Array( 5 ) aFonts := Array( 5 ) DEFINE FONT aFonts[ 1 ] NAME "Arial" SIZE 0, 24 BOLD DEFINE FONT aFonts[ 2 ] NAME "Ms Sans Serif" SIZE 0, 8 BOLD DEFINE FONT aFonts[ 3 ] NAME "Ms Serif" SIZE 0, 12 BOLD DEFINE FONT aFonts[ 4 ] NAME "Arial" SIZE 0, 12 ITALIC DEFINE FONT aFonts[ 5 ] NAME "Ms Sans Serif" SIZE 0, 8 aColors[ 1 ] = "w+*/r" aColors[ 2 ] = "r+/w+*" aColors[ 3 ] = "g+/w+*" aColors[ 4 ] = "w+*/b" aColors[ 5 ] = "b+/w" nColors := 1 nFonts := 1 SET _3DLOOK ON if ! File( "clientes.dbf" ) DbCreate( "Clientes.dbf", { { "Nombre", "C", 40, 0 },; { "Direccion", "C", 50, 0 },; { "Telefono", "C", 12, 0 },; { "Edad", "N", 2, 0 },; { "Productos", "C", 10, 0 },; { "Nivel", "N", 2, 0 } } ) endif USE Clientes IF MSGYESNO('Deseja incluir dados para teste ?','ATENÇÃO') for i:=1 to 5 APPEND BLANK Clientes->Nombre := str(i,1) Clientes->Direccion := str(i,1) Clientes->Productos := str(i,1) Clientes->Nivel := i Clientes->Telefono := str(i,1) Clientes->Edad := i next endif go top browse() DEFINE WINDOW oWnd FROM 1, 1 TO 20, 70; TITLE "FiveWin Teste" MDI SET MESSAGE OF oWnd TO "FiveWin" ; FONT oFont DEFINE MSGITEM ABABA OF oWnd:oMsgBar PROMPT " Dados" ; SIZE 150 BITMAP "..\BITMAPS\EXIT.BMP" ; ACTION EVAL(bBlock) ; ToolTip "Dados" Center //ACTION IF( MsgYesNo("Deseja excluir os dados ?", "..::Dados"), exclui_dados() , MsgInfo("Não Deleta") ) ; //ToolTip "Dados" Center ACTIVATE WINDOW oWnd MAXIMIZED AEval( aFonts, { | oFont | oFont:End() } ) return nil //----------------------------------------------------------------------------// static function exclui_dados() Clientes->(RLock()) while ! Clientes->(eof()) Clientes->(DbDelete()) Clientes->(DbSkip()) end Clientes->(DbUnlock()) Clientes->(DbCommit()) return nil Daniel Segura Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted March 18, 2013 Author Report Share Posted March 18, 2013 Ufa!! agora sim Daniel.. LOCAL bBlock:={|| IF( MSGYESNO('Deseja excluir os dados ?','ATENÇÃO') , ; Acesso->(DbEval({||(Acesso->(RLock() ), Acesso->(DbDelete()), Acesso->(DbUnlock()) )})) , .T. ) } Desta Forma del certo... Obrigado... Abraços.. Quote Link to comment Share on other sites More sharing options...
vagner Posted March 18, 2013 Report Share Posted March 18, 2013 KKKK, exatamente igual a minha segunda opção só não coloquei em um codblock pois o valid já faz o codblock Luiz Arruda (ICO) 1 Quote Link to comment Share on other sites More sharing options...
CIACPD Posted March 19, 2013 Report Share Posted March 19, 2013 Vagner, é a sua opção, apenas montei um exemplo com o teste que eu fiz incluindo a sua dica para que fique mais fácil para quem vier depois. A intenção é ajudar. Quando o nosso amigo falou que não estava excluindo inclui sua dica para ver se havia algum possÃvel erro mesmo sabendo que voce é mestre no assunto. Felicidades Vagner. Daniel Segura 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.