Jump to content
Fivewin Brasil

AcessoSoft

Membros
  • Posts

    36
  • Joined

  • Last visited

Recent Profile Visitors

594 profile views

AcessoSoft's Achievements

Newbie

Newbie (1/14)

3

Reputation

  1. 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?
  2. Interessante demais este recurso. Parabéns ao(s) idealizadore(s).
  3. /******************************************************************************************* * 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 ) /********************************************************************************************/
  4. 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...
  5. 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()
  6. 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?
  7. 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?
  8. Bem legais essas telas Giovanny. Tenho interesse nestes códigos. Manda pra mim se possível: acessosoft@gmail.com
  9. 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,
  10. Fiz alguns testes aqui e achei uma fonte chamada "Lucida Console".
  11. 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?
  12. 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...
  13. 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?
  14. 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?

  15. 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.
×
×
  • Create New...