Jump to content
Fivewin Brasil

mkyx

Membros
  • Posts

    887
  • Joined

  • Last visited

  • Days Won

    15

mkyx last won the day on January 10 2019

mkyx had the most liked content!

1 Follower

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

mkyx's Achievements

  1. marcio, como faz pra usar esse modulo do celular, t
  2. para gerar os botoes e as janelas, usei a rotina abaixo. FUNCTION AD_LABEL(LI,CI,LF,CF,cTEXT,nPLCR,nCLRTEXT,nCLRLINE,nCLRFUNDO,oFONT2,odlg2) local hPen,I,nWidth,hOldPen,NP,C,I0 local nHeight := Abs( oFont2:nHeight ) oDlg2:GetDC() nWidth := GetTextWidth( oDlg2:hDC, cText,if(nPLCR="*",oFont1,oFont2) ) if nWidth < 0 nWidth *=-1 endif hPen := CreatePen( 0, 1, nCLRLINE) hOldPen := SelectObject( oDlg2:hDc, hPen ) MoveTo( oDlg2:hDC, CI+5,LI,HPEN ) IF UPPER(nPLCR)="L" LineTo( oDlg2:hDC, CI+8,LI,HPEN ) MoveTo( oDlg2:hDC, CI+8+nWIDTH+1,LI,HPEN ) ELSEIF UPPER(nPLCR)="C" nP:=(CF-CI-nWIDTH)/2 LineTo( oDlg2:hDC, CI+nP,LI,HPEN ) MoveTo( oDlg2:hDC, CI+nP+nWIDTH+1,LI,HPEN ) ELSEIF UPPER(nPLCR)="R" LineTo( oDlg2:hDC, CF-8-nWIDTH-1,LI,HPEN ) MoveTo( oDlg2:hDC, CF-8,LI,HPEN ) ENDIF LineTo( oDlg2:hDC, CF-5,LI,HPEN ) LineTo( oDlg2:hDC, CF-4,LI+1,HPEN ) LineTo( oDlg2:hDC, CF-3,LI+1,HPEN ) LineTo( oDlg2:hDC, CF-2,LI+2,HPEN ) LineTo( oDlg2:hDC, CF-1,LI+3,HPEN ) LineTo( oDlg2:hDC, CF-1,LI+4,HPEN ) LineTo( oDlg2:hDC, CF,LI+5,HPEN ) LineTo( oDlg2:hDC, CF,LF-5,HPEN ) LineTo( oDlg2:hDC, CF-1,LF-4,HPEN ) LineTo( oDlg2:hDC, CF-1,LF-3,HPEN ) LineTo( oDlg2:hDC, CF-2,LF-2,HPEN ) LineTo( oDlg2:hDC, CF-3,LF-1,HPEN ) LineTo( oDlg2:hDC, CF-4,LF-1,HPEN ) LineTo( oDlg2:hDC, CF-5,LF,HPEN ) LineTo( oDlg2:hDC, CI+5,LF,HPEN ) LineTo( oDlg2:hDC, CI+4,LF-1,HPEN ) LineTo( oDlg2:hDC, CI+3,LF-1,HPEN ) LineTo( oDlg2:hDC, CI+2,LF-2,HPEN ) LineTo( oDlg2:hDC, CI+1,LF-3,HPEN ) LineTo( oDlg2:hDC, CI+1,LF-4,HPEN ) LineTo( oDlg2:hDC, CI,LF-5,HPEN ) LineTo( oDlg2:hDC, CI,LI+5,HPEN ) LineTo( oDlg2:hDC, CI+1,LI+4,HPEN ) LineTo( oDlg2:hDC, CI+1,LI+3,HPEN ) LineTo( oDlg2:hDC, CI+2,LI+2,HPEN ) LineTo( oDlg2:hDC, CI+3,LI+1,HPEN ) LineTo( oDlg2:hDC, CI+4,LI+1,HPEN ) LineTo( oDlg2:hDC, CI+5,LI,HPEN ) SelectObject( oDlg2:hDc, hOldPen ) DeleteObject( hPen ) C:=3 I0:=-1 for i=LI+1 TO LF-1 hPen1 := CreatePen( 0, 1, nCLRFUNDO) IF I>=(LF-3) .and. i0<0 C:=1 I0:=1 endif MoveTo( oDlg2:hDC, CI+1+IF(C=0,1,IF(C>0,C,0)),I,HPEN1 ) LineTo( oDlg2:hDC, CF-IF(C=0,1,IF(C>0,C,0)),I,HPEN1 ) C:=C+I0 next IF UPPER(nPLCR)="L" nP:=CI+8 ELSEIF UPPER(nPLCR)="C" nP:=INT((CF-CI-nWIDTH)/2)+CI ELSEIF UPPER(nPLCR)="R" nP:=CF-8-nWIDTH ELSEIF UPPER(nPLCR)="D" nP:=INT((CF-CI-nWIDTH)/2)+CI //+nWIDTH/2 ELSEIF UPPER(nPLCR)="*" nP:=INT((CF-CI-nWIDTH*2.3)/2)+CI ENDIF RText( oDlg2, cTEXT,IF(UPPER(nPLCR)="*",LI,if(UPPER(nPLCR)="D",(((LF-LI)/2)+LI)-(nHeight/2),LI-nHeight/2)), nP, nClrText, oFont2 ) oDlg2:ReleaseDC() RETURN .T. //----------------------------------------------------------------------------// Function RText( oDLG2,cPrompt,Y,X,nClrText2,oFont2) Local hOldFont, nOldMode, nOldClrText,nOldBkMode * oDlg2:GetDC() nOldClrText:=SetTextColor(oDLG2:hDC,nClrText2) nOldBkMode:=SetBkMode(oDLG2:hDC,1) NoldBkMode:=SetbkMode(nrgb(224,226,222),1) hOldFont:=SelectObject(oDLG2:hDC,oFont2:hFont) TextOut(oDLG2:hDC,Y,X,cPrompt,Len(cPrompt)) SelectObject(oDLG2:hDC,hOldFont) SetBkMode(oDLG2:hDC,nOldBkMode) SetTextColor(oDLG2:hDC,nOldClrText) oDlg2:ReleaseDC() Return NIL FUNCTION Textura(oDlgTxt,aCorBar) LOCAL hWnd:=oDlgTxt:hWnd LOCAL aRec:=GetClientRect(hWnd) LOCAL oBrush,nX,nStp:=(aRec[3]-aRec[1])/2 LOCAL nColor1:=aCorBar[1],nColor2:=aCorBar[2] LOCAL nColorR1:=nRgbRed(nColor1),nColorG1:=nRgbGreen(nColor1),nColorB1:=nRgbBlue(nColor1) LOCAL nColorR2:=nRgbRed(nColor2),nColorG2:=nRgbGreen(nColor2),nColorB2:=nRgbBlue(nColor2) LOCAL nSomaR:=ABS(nColorR2-nColorR1),nSomaG:=ABS(nColorG2-nColorG1),nSomaB:=ABS(nColorB2-nColorB1) nSomaR:=IIF(nSomaR<0,0,(nSomaR/((aRec[3])/2))) nSomaG:=IIF(nSomaG<0,0,(nSomaG/((aRec[3])/2))) nSomaB:=IIF(nSomaB<0,0,(nSomaB/((aRec[3])/2))) *oDlgTxt:GetDC() aRec[3]:=0 FOR nX:=1 TO nStp aRec[3]+=2 DEFINE BRUSH oBrush COLOR nRgb(nColorR1,nColorG1,nColorB1) FillRect(oDlgTxt:hDC,aRec,oBrush:hBrush) RELEASE BRUSH oBrush aRec[1]+=2 nColorR1:=IIF(nColorR2>=nColorR1,nColorR1+nSomaR,nColorR1-nSomaR) nColorG1:=IIF(nColorG2>=nColorG1,nColorG1+nSomaG,nColorG1-nSomaG) nColorB1:=IIF(nColorB2>=nColorB1,nColorB1+nSomaB,nColorB1-nSomaB) NEXT oDlgTxt:ReleaseDC() RETURN(NIL)
  3. Bom dia, fivewinners, Alguém poderia indicar alguns comandos que poderia fazer os mesmos efeitos, resultando a tela abaixo, sem precisar usar os comandos gráficos? Porque usando os comandos gráficos, quando abro a tela umas 10 vezes, as figuras e as cores das janelas ficam tudo preto, perde as cores.
  4. Boa tarde, Algum no grupo, ja tem disponivel um módulo pra fazer comanda de restaurante pra celular? Só o módulo de comanda, onde registra a mesa, o numero de pessas, o garcom, e os itens solicitados Obrigado.
  5. mkyx

    NFC-e

    Se for dentro do estado de sao paulo, pode esquecer, não funciona mais. No estado do rio de janeiro, está normal.
  6. Boa noite, Valdir, Como vc disse, seu sistema não tem dado muito trabalho, então, preencha esse espaço de tempo, aprendendo uma nova tecnologia. Para cansaço físico e mental, temos suplementos, que podemos mandar fazer em farmácia de manipulação, como: Vitamina D3 10000 UI, Cloreto de Magnésio treonato 700 mg, Ginseng Panax 100 mg . Metilcobalamina 1 mg, ômega 3, etc. Tudo isso, são comidas de astronautas, são suplementos, que complementam a nossa alimentação, e nos dá mais vigor físico. Parar? Never.
  7. Pessoal, resolvido, usando o comando TTXTFILE():NEW(), acho que eu estava "viajando", (pode ser sobrecarga de serviços a fazer) quando testei esse comando na primeira, pra ter dado errado. Ficou assim: P_DESTINO:="D:\WINSQL" // pasta destino oque_2:="CC.PRG" // nome do prg a ser alterado oque:="LABEL" // comando a ser localizado dentro da linha e alterado para GROUP OQUE_1:="@" // complemento do comando label: @ LI,CI TO LF,CF LABEL "TITULO" OF ODLG PIXEL SS0:=CURDRIVE()+":\"+CURDIR()+"\"+OQUE_2 //arquivo fonte, original ARQ_SPED:=P_DESTINO+"\"+oque_2 // arquivo destino IF !FILE("&ARQ_SPED.") ARQ00=FCREATE("&ARQ_SPED.",0) FCLOSE(ARQ00) ENDIF num:=0 OFILE:=TTXTFILE():NEW("&SS0.") DO WHILE .NOT. OFILE:LEOF() apCode:=OFILE:READLINE() if alltrim(upper(oque))$upper(apcode) .and. OQUE_1="@" .AND. "@"$APCODE .AND. !("GROUP"$upper(apcode)) num:=num+1 SS:="OGRP"+ALLTRIM(STR(NUM))+" " p:=at("TO",UPPER(APCODE)) if p>0 APCODE=STUFF(APCODE,P,0,"GROUP "+SS) endif ENDIF APCODE:=APCODE+chr(13)+chr(10) ARQ00=FOPEN("&ARQ_SPED.",2) FSEEK(ARQ00,0,2) FWRITE(ARQ00,APCODE,LEN(APCODE)) FCLOSE(ARQ00) OFILE:SKIP() ENDDO OFILE:END() USE DBCLOSEALL() ? "FIM" Essa rotina substitue do PRG, o comando: @ LI,CI TO LF,CF LABEL "TITULO" OF ODLG PIXEL por esse: @ LI,CI GROUP OGRP1 TO LF,CF LABEL "TITULO" OF ODLG PIXEL Obrigado a todos, pela contribuição. Até a próxima.
  8. Boa noite rochina, A variável apcode, recebe o resultado da função memoline APCODE:= MemoLine( arq_prg, 500, i, 8, .T. ) Só que memoline, só lê linha de ate 254, e o padrão é 79, se não foi mencionado nenhum valor. e eu preciso de uma função que leia linhas com mais de 254 caracteres. obrigado.
  9. Boa noite, De acordo com o manual do xharbour, a função mlcount, só processa linhas ate 254 caracteres, e o padrão desse comando é 79. Assim, enquanto a rotina pegava linha por linha do prg, só conseguia processar até 254, e eu preciso que precesse a linha inteira. Nos meus prgs, tem linhas até 400 caracteres por linha (linhas com mais de 254 caracteres). Logo, se a função só manipula até 254 caracteres, essas linha ficam truncadas. só B.O. Vou testar essas funçoes: FOpen(), FRead(), FSeek(), FWrite() e FClose()
  10. Boa tarde, fivewinner. Eu sempre usei o comando @ l,c Label, nos meus programas, então, todas as molduras, dentro dos window e dialog, foram feitas com esse comando: @ label Agora, estou precisando alterar todos os comandos @ label, para o @ GROUP, essa rotina de alteração já está ok, mas, o problema está na leitura dos PRGs e regravação, pois, quando uso o comando memoread, mlcount, memoline, e memowrite, não grava a linha inteira, só 79 caracteres, ou só 254 caracteres, e nos meus módulos tem linhas que chega a 500 caracteres por linha como resolver esse problema de ler e regravar linhas com mais de 254 caracteres? como estou fazendo: SS0:=CURDRIVE()+":\"+CURDIR()+"\WINCOM.PRG" arq_prg:=memoread(SS0) NOVO_ARQ:="" QTL := MLCount(arq_prg,500, 8, .T. ) // aqui vc pode alterar para o valor que vc quiser, que não funciona - MLCount(arq_prg) esse comando não funciona tbm FOR I=1 TO QTL APCODE:= MemoLine( arq_prg, 500, i, 8, .T. ) APCODE1:=APCODE if alltrim(upper(oque))$upper(apcode) .and. OQUE_1="@" .AND. "@"$APCODE .AND. !("GROUP"$upper(apcode)) nreg:=nreg+1 SS:="OGRP"+ALLTRIM(STR(NREG))+" " p:=at("TO",UPPER(APCODE)) if p>0 APCODE=STUFF(APCODE,P,0,"GROUP "+SS) endif ENDIF APCODE:=ALLTRIM(APCODE)+chr(13)+chr(10) NOVO_ARQ:=NOVO_ARQ+APCODE NEXT SS1:="D:\WINPRG\WINCOM.PRG" MEMOWRIT(SS1,NOVO_ARQ) ? "O arquivo "+ss0+" foi gravado em "+ss1 Já testei tbm com os camandos, que tbm não funcionam? OFILE:=TTXTFILE():NEW("&SS0.") DO WHILE .NOT. OFILE:LEOF() apCode:=OFILE:READLINE() . . .
  11. corrigindo essa linha: T=T+(VAL(SUBSTR(CODEAN13,I,1))*VAL(SUBSTR(CODEAN13,I,1))) o correto é T=T+(VAL(SUBSTR(CODEAN13,I,1))*VAL(SUBSTR(DIGI,I,1)))
  12. E tenho um software para computador local, onde pelo teclado o funcionário digita o codigo de matricula e uma senha, aceitando até 3 período por dia, manha, tarde, e noite pode registar os dias de feriados do mês (os automáticos não precisa), afastamentos, ferias, etc e emitir o espelho do cartão de ponto, já tudo calculado, horas extras, faltas, atrasos. Mas, o que eu saiba, por lei, só pode usar esses sistemas de computador, para as empresas de até 10 funcionários. Acima de 10 funcionários, tem que comprar o relógio com digital, que sai o ticket na hora de bater o ponto. Isso evita fraude. Para o juiz, o sistema de computador é passivel de fraude, o patrão, pode alterar o horário do funcionário e roubá-lo. Espero ter ajudado.
  13. eu faço assim: // A VARIAVEL CODEAN13 GUARDA O CÓDIGO EAN13 DIGITADO PELO OPERADOR DIGI="131313131313" T=0 FOR I=1 TO 12 T=T+(VAL(SUBSTR(CODEAN13,I,1))*VAL(SUBSTR(CODEAN13,I,1))) NEXT I DIG="0" IF (T/10)>INT(T/10) DIG=STR(((INT(T/10)+1)*10)-T,1) ENDIF IF RIGHT(CODEAN13,1)#DIG MSGINFO("Código de barra inválido!","Favor verificar:") endif
  14. vc pode montar um rotina, para verificar a validade do 13º dígito.
  15. Vixi, quase acertou, não está mais dando erro de ausência da função hb_sha256, agora, só está aparecendo a mensagem que a compilação não pode ser concluida. Deve ser conflito de versão.
×
×
  • Create New...