AcessoSoft
Membros-
Posts
36 -
Joined
-
Last visited
Recent Profile Visitors
594 profile views
AcessoSoft's Achievements
Newbie (1/14)
3
Reputation
-
Hoje utilizo a solução do MEX10 com pacote de 5.000 SMS que coloca o custo em 0,04 por SMS. Qual o custo do DISPARO PRO?
- 4 replies
-
- integracao
- envio
-
(and 4 more)
Tagged with:
-
Interessante demais este recurso. Parabéns ao(s) idealizadore(s).
-
/******************************************************************************************* * EXEMPLO DE BUSCA GERAL POR UMA EXPRESSÃO QUALQUER NUM ARQUIVO DBF E RETORNO DE ARRAY * FUNCIONA COM QUALQUER ARQUIVO DBF * by: Acesso Softwares *******************************************************************************************/ #include "fivewin.ch" /******************************************************************************************/ FUNCTION Main() LOCAL cBusca, aFiltrados USE clientes.dbf cBusca := "SÃO PAULO" aFiltrados := CriaArrayFiltrado( cBusca ) XBROWSE( aFiltrados ) RETURN NIL /*******************************************************************************************/ FUNCTION CriaArrayFiltrado( cBusca ) LOCAL nFor, bFiltro, aArray := {}, aCampos, cFiltro := "" cTextoBusca := cBusca //------------------------------ OBTEM CAMPOS DO ARQUIVO ----------------------------------// aCampos := DBSTRUCT() //---- MONTA STRING PARA CONDICAO DO DBEVAL SOMENTE COM OS CAMPOS DO TIPO C, M, D, N ------// FOR nFor = 1 TO LEN( aCampos ) DO CASE // Campo tipo caracter ou memo CASE aCampos[ nFor, 2 ] $ "CM" cFiltro += "UPPER( cTextoBusca ) $ TiraAcento( UPPER( " + aCampos[ nFor, 1 ] + ") ) .OR. " // campo do tipo data CASE aCampos[ nFor, 2 ] == "D" cFiltro += "UPPER( cTextoBusca ) $ DTOC( " + aCampos[ nFor, 1 ] + ") .OR. " // campo do tipo numérico CASE aCampos[ nFor, 2 ] == "N" cFiltro += "UPPER( cTextoBusca ) $ STR( " + aCampos[ nFor, 1 ] + " ) .OR. " ENDCASE NEXT cFiltro := "{||" + SUBSTR( cFiltro, 1, LEN( cFiltro ) - 6 ) + "}" // -6 para retira o último .OR. criado acima //----------------------- MONTA CODEBLOCK DE FILTRO PARA DBEVAL --------------------------// IF EMPTY( cFiltro ) bFiltro := {|| .T. } ELSE bFiltro := &cFiltro ENDIF //------------ ADICIONA NO ARRAY REGISTRO QUE SATISFAÇA A CONDIÇAO ( bFiltro ) ------------// WHILE !EOF() IF EVAL( bFiltro ) AADD( aArray, PegaRegistro( aCampos ) ) ENDIF SKIP ENDDO //----------------------- CRIA ARRAY COM 1 LINHA EM BRANCO PARA O BROWSE -----------------// IF EMPTY( aArray ) aArray := { { LEN( aCampos ) } } AFILL( aArray[1], SPACE(10) ) ENDIF RETURN( aArray ) /********************************************************************************************/ FUNCTION PegaRegistro( aCampos ) LOCAL nFor, aRegistro := {}, cNomeCampo FOR nFor = 1 TO LEN( aCampos ) cNomeCampo := aCampos[ nFor, 1 ] AADD( aRegistro, &cNomeCampo ) NEXT RETURN( aRegistro ) /********************************************************************************************/ FUNCTION TiraAcento( cTexto ) // ESCREVA AQUI CÓDIGO QUE RETIRE DA STRING CARACTERES COMO: Ç, Ã, Ó, É, etc RETURN( cTexto ) /********************************************************************************************/
-
Saudações.... Alguém poderia indicar uma solução prática para converter um arquivo PDF para JPG ou BMP? O objetivo é exibir a imagem no Preview do FW. Pretendo converter a primeira página do PDF para BMP e montar um documento para impressão com essa imagem apenas para que possa ser visualizada no PREVIEW. Agradeço antecipadamente a quem puder ajudar...
-
kapiaba reacted to a post in a topic: Uso de memória
-
Como faço pra alinhar os dados nas linhas do xbrowse? Vejam na imagem que a coluna NOSSO NÚMERO e VALOR estão fora de alinhamento http://www.acessosoft.com.br/img/50.png Estou criando o XBROWSE com o código abaixo: aMainPanelCtrl[ "MAIN_OBRWREM" ] := TXBrowse():New( aMainPanelCtrl[ "MAIN_OFOLDER" ]:aDialogs[ RemRetGetDialog( "REM" ) ] ) aMainPanelCtrl[ "MAIN_OBRWREM" ]:SetArray( aMainPanelCtrl[ "MAIN_ABRWREM" ] ) aMainPanelCtrl[ "MAIN_OBRWREM" ]:oFont := oFontLuc aMainPanelCtrl[ "MAIN_OBRWREM" ]:oDataSelFont := oFontLucB aMainPanelCtrl[ "MAIN_OBRWREM" ]:nMarqueeStyle := MARQSTYLE_HIGHLROW aMainPanelCtrl[ "MAIN_OBRWREM" ]:nColDividerStyle := 2 aMainPanelCtrl[ "MAIN_OBRWREM" ]:nRowDividerStyle := 2 aMainPanelCtrl[ "MAIN_OBRWREM" ]:nHeaderLines := 1 aMainPanelCtrl[ "MAIN_OBRWREM" ]:nDataLines := 4 aMainPanelCtrl[ "MAIN_OBRWREM" ]:nTop := 10 aMainPanelCtrl[ "MAIN_OBRWREM" ]:nLeft := 5 aMainPanelCtrl[ "MAIN_OBRWREM" ]:nBottom := aMainPanelCtrl[ "MAIN_OFOLDER" ]:aDialogs[ RemRetGetDialog( "REM" ) ]:nHeight - 38 aMainPanelCtrl[ "MAIN_OBRWREM" ]:nRight := aMainPanelCtrl[ "MAIN_OFOLDER" ]:nRight - 10 aMainPanelCtrl[ "MAIN_OBRWREM" ]:bClrStd := {|| { CLR_BLACK, IF( MOD( aMainPanelCtrl[ "MAIN_OBRWREM" ]:nArrayAt, 2 ) == 0, _PARM_BRWCLR[1], _PARM_BRWCLR[2] ) } } aMainPanelCtrl[ "MAIN_OBRWREM" ]:bClrSel := {|| { CLR_WHITE, CLR_BLACK } } aMainPanelCtrl[ "MAIN_OBRWREM" ]:nStretchCol := STRETCHCOL_LAST aMainPanelCtrl[ "MAIN_OBRWREM" ]:cFileSaveWidth := _PATH_TRM + "BRW_MAIN_REM.CFG" aMainPanelCtrl[ "MAIN_OBRWREM" ]:lRecordSelector := .F. aMainPanelCtrl[ "MAIN_OBRWREM" ]:cToolTip := "Listagem de Boletos Aguardando Remessa " + CRLF + CRLF + "Clique na primeira coluna para selecionar ou faça duplo clique para VISUALIZAR o boleto." aMainPanelCtrl[ "MAIN_OBRWREM" ]:blDblClick := {|| MainRemRetView( "REM" ) } aMainPanelCtrl[ "MAIN_OBRWREM" ]:bKeyDown := {|nKey| IF( nKey == VK_RETURN, MainRemRetView( "REM" ), NIL ) } aMainPanelCtrl[ "MAIN_OBRWREM" ]:bChange := NIL aMainPanelCtrl[ "MAIN_OBRWREM" ]:SetColor( CLR_BLACK, _PARM_BRWCLR[1] ) aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_SEL ]:cHeader := " " aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_SEL ]:AddResource("Bmp_CheckOn" ) aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_SEL ]:AddResource("Bmp_CheckOff" ) aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_SEL ]:bBmpData := { || RemRetBmpSel( "REM" ) } aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_SEL ]:nDataBmpAlign := AL_CENTER aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_SEL ]:bStrData := NIL aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_SEL ]:bLClickData := {|| RemRetClickSelect( "REM" ) } aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_DAT ]:cHeader := "Datas" aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_BOM ]:lHide := .T. aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_NUM ]:cHeader := "Número" aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_NUM ]:nHeadStrAlign:= AL_CENTER aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_BCO ]:lHide := .T. aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_NNU ]:cHeader := "Nosso Número" aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_NNU ]:nHeadStrAlign:= AL_CENTER aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_VAL ]:cHeader := "Valor R$" aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_VAL ]:nHeadStrAlign:= AL_CENTER aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_MAT ]:lHide := .T. aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_NOM ]:cHeader := "Aluno" aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_NOM ]:nHeadStrAlign:= AL_CENTER aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_USU ]:cHeader := "Usuário" aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_USU ]:nHeadStrAlign:= AL_CENTER aMainPanelCtrl[ "MAIN_OBRWREM" ]:aCols[ REM_COD ]:lHide := .T. aMainPanelCtrl[ "MAIN_OBRWREM" ]:CreateFromCode()
-
Olá, Estou com um problema desconhecido: Após algum tempo de inatividade, os objetos desaparecem da tela. Originalmente a tela é assim: Mas após algum tem de inatividade a tela fica assim: Alguém faz ideia do que possa ser?
-
Se entendi bem você deseja passar um texto de três linhas. 1º - Você quer uma função que identifique qual das três linhas é a maior 2º - Você quer ajustar o tamanho do botão de acordo com o retorno da função acima citada para que caiba todo texto É isso? Uma última pergunta: onde entraria o @ say? você fez uma espécie de botão usando texto ou está usando @ BUTTON?
-
Bem legais essas telas Giovanny. Tenho interesse nestes códigos. Manda pra mim se possível: acessosoft@gmail.com
-
Aproveitar pra listar outras fontes que nos meus testes obtive o mesmo efeito de alinhamento vertical (não importa se é número, letra maiúscula ou minúscula). Agency FB, BatangChe, Consolas, Courier, Courier New, DFKay-SB, DotumChe, FangSong, FixedSys, GulimChe, GungSuhChe, Kaiti, Lucida Console, Lucida Sans Typewriter, Ms Gothic, Ms Mincho, MingLiu, NSimSun, Niagara Engraved, Niagara Solid, OCR A Extended, Simplified Arabic Fixed,
-
Fiz alguns testes aqui e achei uma fonte chamada "Lucida Console".
-
As fontes acima citadas, não possuem as características que necessito. Somente a "Courier New" (que já uso) e a Ms Sans Serif que é uma fonte feia pra caramba. A demais não alinham caracteres verticalmente. Que tem alguma sugestão de fonte que NÃO SEJA a Courier New e tenha tamanhos fixos?
-
Você quer dar um visual de windows 10 no seu sistema rodando em outra versão do windows ? É isso? Não entendi.... Pra mim, o sistema aparece de acordo com a versão do windows que estou rodando o sistema. Se windows XP, visual do sistema XP, se windows 10, visual do sistema 10 ,e por aí vai...
-
Costumo usar COURIER para relatórios. Isso porque essa fonte alinha os caracteres verticalmente independente da largura da letra. Principalmente quando utilizo valores numéricos, a "font" Courier. garante que os números ficarão alinhados verticalmente nas colunas. Entretanto, estou com um probleminha ao gerar PDF e suponho que este problema esteja relacionado ao tipo de "FONT". Quero usar outra "FONT". Alguém poderia indicar uma fonte de aparência profissional que alinhe números e letras verticalmente nas colunas igualmente a Courier faz?
-
Saudações.
Estou com um probleminha: sempre que vou acessar o forum tenho que resetar minha senha.
Na tela de login diz que não existe um usuário relacionado ao meu email mas quando clico em esqueci minha senha, abro o email enviado por vocês, reseto a senha e entra. Etretanto, seu eu sair do forum já não faz login mais.
Pode me ajudar?
-
A vantagem das variáveis do tipo STATIC é que elas funcionam como PUBLIC mas somente dentro do PRG onde ela foi declarada. Após encerrar o PRG onde as STATIC´s foram declaradas, essas variáveis não ficam mais acessíveis. Entretanto, se seu código chamar novamente o PRG onde a variável foi declarada, ela pode novamente ser lida, inclusive contendo o último valor que possuía após encerrar o PRG. Uso pouco as variáveis do tipo STATIC mas são bem úteis quando preciso armazenar um valor pra ser lido posteriormente no PRG onde a variável foi declarada.