felisbino 0 Denunciar post Postado Maio 24, 2008 Ai Vai PISCAR LABEL - EFEITO BLINK Coloque um objeto do tipo container em seu form com a propriedade BACKSTYLE = 0 Despeje um objeto LABEL e um TIMER no CONTAINER. Defina a propriedade Interval do objeto TIMER para 300 (este valor você pode alterar conforme sua preferência) e inclua a linha abaixo ao método TIMER : Código: This.Parent.label1.Visible = ! This.Parent.label1.Visible VERIFICAR INSCRIÇÃO ESTADUAL Para verificar a consistência das Inscrições estaduais dos diversos estados, a Secretaria da Receita disponibilizou uma DLL que faz a verificação com base no ESTADO e no NUMERO DE I.E. fornecido. Inicialmente, é preciso se fazer o download da DLL. Para baixá-la, clique no link abaixo. http://www.sintegra.gov.br/DLL3.zip Salve em qualquer pasta, de preferência em ..\WINDOWS\SYSTEM Usá-la é bastante simples : Primeiramente, é preciso "declarar" a DLL Declare Integer ConsisteInscricaoEstadual In DllInscE32.DLL String, String Crie um programa PROINSC.PRG ou adicione o código abaixo em seu arquivo de procedures: *------------------------------------------------------------- * FUNCAO....: PROINSC() * OBJETIVO..: Fazer checagem de INSCRIÇÃO ESTADUAL * RETORNO...: .T. se for correto ou .F. se for errado * PARÂMETROS: INSCRIÇÃO ESTADUAL (caracter) * ESTADO (caracter) *------------------------------------------------------------- FUNCTION PROINSC Parameters IE, UF ** "limpar" a inscrição estadual para a verificação IE = STRTRAN(IE,'.','') IE = STRTRAN(IE,'-','') IE = STRTRAN(IE,'/','') IE = STRTRAN(IE,',','') IE = STRTRAN(IE,'ME','') IE = STRTRAN(IE,' ','') IE = STRTRAN(IE,'P','') IE = ALLTRIM(IE) Return ConsisteInscricaoEstadual(IE, UF)=0 Para verificar o valor digitado pode-se colocar o código abaixo no VALID do Textbox. IF NOT PROINSC(THIS.Value,This.Parent.CmbCli_Estado.Value) = MESSAGEBOX('INSCRIÇÃO ESTADUAL INVÁLIDA !', 48, 'Atenção') RETURN .F. ENDIF RETURN VERIFICAR CNPJ *------------------------------------------------------------ FUNCTION proCNPJ * Parametro : CNPJ a verificar (C14) * Retorna : .T. se confirmado *------------------------------------------------------------ PARAMETERS wcgc wn1 = VAL(SUBS(wcgc,01,1)) wn2 = VAL(SUBS(wcgc,02,1)) wn3 = VAL(SUBS(wcgc,03,1)) wn4 = VAL(SUBS(wcgc,04,1)) wn5 = VAL(SUBS(wcgc,05,1)) wn6 = VAL(SUBS(wcgc,06,1)) wn7 = VAL(SUBS(wcgc,07,1)) wn8 = VAL(SUBS(wcgc,08,1)) wn9 = VAL(SUBS(wcgc,09,1)) wn10 = VAL(SUBS(wcgc,10,1)) wn11 = VAL(SUBS(wcgc,11,1)) wn12 = VAL(SUBS(wcgc,12,1)) wn13 = VAL(SUBS(wcgc,13,1)) wn14 = VAL(SUBS(wcgc,14,1)) * CALCULO DO 13o ALGARISMO * ------------------------ soma1 = wn1*5+wn2*4+wn3*3+wn4*2+wn5*9+wn6*8+wn7*7+wn8*6+wn9*5+wn10*4+wn11*3+wn12*2 dig1 = 11 - MOD(soma1,11) IF dig1 = 10 .OR. dig1 = 11 dig1 = 0 ENDIF IF dig1 <> wn13 RETURN .F. ENDIF * CALCULO DO 14o ALGARISMO * ------------------------ soma2 = wn1*6+wn2*5+wn3*4+wn4*3+wn5*2+wn6*9+wn7*8+wn8*7+wn9*6+wn10*5+wn11*4+wn12*3+ wn13*2 dig2 = 11 - MOD(soma2,11) IF dig2 = 10 .OR. dig2 = 11 dig2 = 0 ENDIF IF dig2 <> wn14 RETURN .F. ENDIF RETURN .T. VERIFICAR CPF *------------------------------------------------------------ FUNCTION proCPF * Parametro : CPF a verificar (C11) * Retorna : .T. se confirmado *------------------------------------------------------------ PARAMETERS wcpf wn1 = VAL(SUBS(wcpf,01,1)) wn2 = VAL(SUBS(wcpf,02,1)) wn3 = VAL(SUBS(wcpf,03,1)) wn4 = VAL(SUBS(wcpf,04,1)) wn5 = VAL(SUBS(wcpf,05,1)) wn6 = VAL(SUBS(wcpf,06,1)) wn7 = VAL(SUBS(wcpf,07,1)) wn8 = VAL(SUBS(wcpf,08,1)) wn9 = VAL(SUBS(wcpf,09,1)) wn10 = VAL(SUBS(wcpf,10,1)) wn11 = VAL(SUBS(wcpf,11,1)) * CALCULO DO 1o digito * -------------------- soma1 = wn1*10+wn2*9+wn3*8+wn4*7+wn5*6+wn6*5+wn7*4+wn8*3+wn9*2 dig1 = 11 - MOD(soma1,11) IF dig1 = 10 .OR. dig1 = 11 dig1 = 0 ENDIF IF dig1 <> wn10 RETURN .F. ENDIF * CALCULO DO 2o digito * -------------------- soma2 = wn1*11+wn2*10+wn3*9+wn4*8+wn5*7+wn6*6+wn7*5+wn8*4+wn9*3+wn10*2 dig2 = 11 - MOD(soma2,11) IF dig2 = 10 .OR. dig2 = 11 dig2 = 0 ENDIF IF dig2 <> wn11 RETURN .F. ENDIF RETURN .T. ENDFUNC SABER SE UMA VARIÁVEL EXISTE Use a função TYPE() : IF TYPE("Var") =MessageBox("Variável Existe",0,"") ENDIF COMO CRIAR UM HYPERLINK Adicione a seu form um objeto "Label" Na propriedade Caption, coloque um endereço da web, ex: www.foxbrasil.com.br Marque a propriedade FontUnderline como .T. No método click, coloque o código : oIE = CREATEOBJECT("InternetExplorer.Application") oIE.Navigate(This.Caption) oIE.Visible = .T. ou então : LOCAL loHyperlink loHyperlink = CREATEOBJECT("Hyperlink") loHyperlink.navigateto(This.Caption) Importar e Exportar Arquivos Crie um Botão ou Em qualquer metodo e coloque assim Importar append from nome_do_arquivo.xls ou txt type xls ou txtExportar copy to nome_do_arquivo.xls ou txt type xls ou txt ENVIO DE FAX USANDO O WINFAX Inicialmente, é preciso ter o WinFax instalado. O programa se encontrava no cd de instalação do Win98 e do Win95, se não me engano. oWinFax = CreateObject("WinFax.SDKSend") oWinFax.SetSubject("Teste de Fax") oWinFax.SetNumber("1234567") oWinFax.SetAreaCode("555") oWinFax.SetCompany("Empresa") oWinFax.AddRecipient() && Destinatário oWinFax.SetPrintFromApp(1) oWinFax.AddAttachmentFile("") && aqui vai o arquivo oWinFax.Send(1) SET PRINTER TO NAME winfax REPORT FORM MyReport TO PRINT NOCONSOLE SET PRINTER TO RELEASE oWinFax ENVIO DE EMAILS USANDO O MENSAGEIRO PADRÃO A maneira mais simplificada: lcRecipient = "destinatario@xyz.com.br" lcSubject = "Assunto" lcSubject = "?subject=" + lcSubject lcCC = "Destinocopia@abc.com.br" lcCC = IIF(EMPTY(lcCC),"","&cc=" + lcCC) lcBCC = "Destinocopiaoculta@abc.com.br" lcBCC = IIF(EMPTY(lcBCC),"","&bcc= " + lcBCC) lcBody = "Este é o texto do corpo da mensagem" lcMail = "mailto:" + lcRecipient + lcSubject + lcCC + lcBCC + lcBody DECLARE INTEGER ShellExecute IN SHELL32.DLL; integer HndWin, string cAction, string cFileName,; STRING cParams, STRING cDir, INTEGER nShowWin shellExecute(0,"OPEN",lcMail,"","",1) Muito simples !!! Ao usuário caberá apenas clicar no botão de enviar do programa padrão de email !!! PS: Por este método não é possível se anexar arquivos CONTROLANDO O VOLUME DO SOM Pode-se chamar o programa SNDVOL32.EXE utilizando-se a API Shellexecute, a partir de uma função, como a abaixo: Código: FUNCTION Shell LPARAMETER lcLink, lcAction, lcParms, lcDir lcAction = IIF(EMPTY(lcAction), "Open", lcAction) lcParms = IIF(EMPTY(lcParms), "", lcParms) lcDir=IIF(empty(lcDir),"",lcDir) DECLARE INTEGER ShellExecute; IN SHELL32.dll; INTEGER nWinHandle,; STRING cOperation,; STRING cFileName,; STRING cParameters,; STRING cDir,; INTEGER nShowWindow DECLARE INTEGER FindWindow; IN WIN32API; STRING cNull,STRING cWinName RETURN ShellExecute(FindWindow(0, _SCREEN.caption),; @lcAction, @lcLink,; @lcParms, @lcDir, 1) Para chamar o controlador de sons, use assim: Código: shell("sndvol32.exe") Outra forma, seria utilizar uma DLL preparada por um colega latino, Denny Infante Juarez, disponibilizada no PortalFox no link abaixo: DLL Preparada COMO SABER SE UM OBJETO TEM OU NÃO UMA PROPRIEDADE / MÉTODO Código: * se existe o método Release, executa IF pemstatus(Thisform, 'RELEASE',5) Thisform.Release ENDIF NÃO DEIXAR QUE SEU EXECUTÁVEL RODE SIMULTANEAMENTE NA MESMA ESTAÇÃO Normalmente, não queremos que um executável seja executado ao mesmo tempo mais de uma vez. Existem vária técnicas para isso, aí vai uma delas. Modo de uso : Coloque no programa inicial do seu sistema nas primeiras linhas: Código: IF NOT validar_sistema() QUIT ENDIF Salve como validar_sistema.PRG ou inclua em seu arquivo de procedures Código: FUNCTION validar_sistema LOCAL lcOldCaption lcOldCaption = _screen.Caption _screen.Caption = SYS(3) LOCAL lnhwnd DECLARE INTEGER FindWindow IN Win32API STRING lpClassName, STRING lpWindowName DECLARE INTEGER BringWindowToTop IN Win32API INTEGER HWND DECLARE INTEGER SendMessage IN Win32API INTEGER HWND, INTEGER Msg, INTEGER WParam, INTEGER LPARAM lnhwnd = findwindow( 0, lcOldCaption) _screen.Caption = lcOldCaption IF lnhwnd > 0 bringwindowtotop(lnhwnd) && Mandar la ventana de la aplicación al frente sendmessage(lnhwnd, 274, 61488, 0) && Maximizar la ventana de la aplicación RETURN .F. ENDIF RETURN .T. REMOVER UMA ABA DE UM PAGEFRAME Código: *-- Esconder a 2a pagina do PageFrame thisform.PageFrame1.RemoveObject("Page2") SABER SE UMA PASTA EXISTE O simples exemplo abaixo cria uma pasta no sistema caso não exista uma com o nome desejado. Código: IF NOT DIRECTORY('c:\TEMP\') MKDIR ('c:\TEMP\') ENDIF COMO FECHAR TODOS OS FORMS Código: FOR i = 1 TO _Screen.formCount _Screen.forms(i).release ENDFORou então Código: LOCAL loForm FOR EACH loForm IN _SCREEN.FORM loForm.RELEASE() NEXT OBTER O IP LOCAL DA MÁQUINA Código: oSocket = CreateObject("MSWinsock.Winsock") ? oSocket.LocalIP SABER SE O DRIVE DE DISKETE A ESTÁ PRONTO OU POSSUI UM DISCO Código: IF DISKSPACE("A:\") = -1 MESSAGEBOX("Não há disco no Drive A",48,"Erro") ENDIF CRIAR UM EXECUTÁVEL RAPIDAMENTE A PARTIR DE UM PRG Código: BUILD PROJECT TempProj FROM myprg BUILD EXE myexe FROM TempProj ERASE TempProj.pj? FINALIZAR TODAS AS TRANSAÇÕES ABERTAS Eventualmente, em situações de erro no programa, precisamos finalizar todas as transações abertas. Código: DO WHILE TXNLEVEL() > 0 ROLLBACK ENDDO MOVER O CURSOR PARA O INICIO DO TEXTBOX Eventualmente alguém pede para que o cursor vá automaticamente para o início do texto qdo um TEXTBOX é clicado. No evento CLICK do Textbox, basta colocar : Código: This.SelStart = 0 DESABILITAR A CAIXA DE TEXTO DE UM SPINNER no Evento KEYPRESS, coloque : Código: NODEFAULT SABER SE PROGRAMA ESTA SENDO EXECUTADO A PARTIR DO EXE OU NO PROJETO Código: IF VERSION(2) = 0 && RunTime MESSAGEBOX("EXECUTÁVEL") ELSE MESSAGEBOX("DESENVOLVIMENTO") ENDIF SINCRONIZAR HORARIO COM O SERVIDOR Há várias maneiras de se fazer isso, aí vai uma delas: Código: tcserver = "\\ServidorNt" _cTextBat = GETENV("TEMP")+"\"+SUBSTR(SYS(2015), 3, 8)+".bat" _cTextShell = "NET TIME "+tcserver+" /SET /Y" STRTOFILE(_cTextShell, _cTextBat) DECLARE LONG WinExec; IN KERNEL32; STRING lpCmdLine, LONG nCmdShow winexec(_cTextBat, 0) =INKEY(.2, "H") CONTROLAR SAÍDA DO BROWSE Algumas pessoas ainda não estão totalmente acostumadas ao uso de Grids, então vai uma dica antiga, para se fechar a tela do BROWSE com a tecla ENTER: Código: ON KEY LABEL ENTER KEYBOARD '{CTRL+W}' USE suaTabela BROWSE ON KEY LABEL ENTER Outro modo interessante, agora usando a função SYS(18), que retorna o campo em que se estava: Código: ON KEY LABEL ENTER do teste USE clientes BROWSE ON KEY LABEL ENTER RETURN PROCEDURE teste MESSAGEBOX("Campo selecionado :" + SYS(18)) KEYBOARD '{CTRL+W}' ENDPROC CONFIRMAÇÃO ANTES DE FECHAR O FORM O evento QueryUnload é disparado ao se clicar no "X" para fechar um form. Para se evitar que ele seja fechado, basta se colocar NODEFAULT, que o Form volta à execução normal. Para testar, coloque no evento QueryUnload do seu form : Código: IF MESSAGEBOX("Deseja encerrar ?",32+4,"Unload") <> 6 && Sim NODEFAULT ENDIF GRAVAR EM CD OBS : Funciona somente no Windows XP Código: oShell = Createobject("wscript.shell") lnRet = oShell.Run(FULLPATH("CreateCD.exe") + " " + lcParam ,1, .T.) IMPRIMIR ARQUIVO DIRETAMETE NA IMPRESSORA DECLARE INTEGER ShellExecute IN SHELL32.DLL; INTEGER nWinHandle,; STRING cOperation,; STRING cFileName,; STRING cParameters,; STRING cDirectory,; INTEGER nShowWindow ShellExecute(0, 'print', [MeuArquivo.xxx], '', '', 1) INTERROMPER PROCESSO O exemplo abaixo mostra uma das possíveis técnicas que pode ser usada para se interromper um processo, que pode estar dentro de um LOOP, SCAN, etc. oForm = CREATEOBJECT([Form1]) oForm.SHOW(1) DEFINE CLASS form1 AS FORM DOCREATE = .T. bcancelloop = .F. NAME = "form1" ADD OBJECT command1 AS COMMANDBUTTON WITH; TOP = 125,; LEFT = 8,; HEIGHT = 27,; WIDTH = 111,; CAPTION = "Start Loop",; NAME = "Command1" ADD OBJECT command2 AS COMMANDBUTTON WITH; TOP = 125,; LEFT = 130,; HEIGHT = 27,; WIDTH = 111,; CAPTION = "Cancel Loop",; NAME = "Command2" ADD OBJECT label1 AS LABEL WITH; AUTOSIZE = .T.,; CAPTION = "Press START",; HEIGHT = 17,; LEFT = 31,; TOP = 45,; WIDTH = 40,; NAME = "Label1" PROCEDURE command1.CLICK THISFORM.bcancelloop = .F. lnCounter = 0 DO WHILE .T. lnCounter = lnCounter + 1 THISFORM.label1.CAPTION = TRANSFORM(lnCounter) DOEVENTS IF THISFORM.bcancelloop THISFORM.label1.CAPTION = [Loop is canceled] EXIT ENDIF ENDDO ENDPROC PROCEDURE command2.CLICK THISFORM.bcancelloop = .T. ENDPROC ENDDEFINE Muito LEGAL NÃO AQUI TEM ALGUNS SITES FoxBrasil The SPS Weblog GOFOXPRO Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 26, 2008 Obrigado pela contribuição! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
felisbino 0 Denunciar post Postado Agosto 6, 2008 De Nada VFP é minha especialidade Compartilhar este post Link para o post Compartilhar em outros sites
Vanilton Braga 0 Denunciar post Postado Setembro 4, 2008 Olá, Gostaria de ajuda para "Sincronizar" uma pasta do PC com uma de 1 Windows Mobile, mais especificamente do Treo-750 (WM5). Alguem tem uma "Rotina Modelo" em Vfox? Grato! Compartilhar este post Link para o post Compartilhar em outros sites