Jump to content
Fivewin Brasil

vagner

Membros
  • Posts

    4,981
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by vagner

  1. Ok Marllon, Eu alterei a minha TDosPrn, para atender as minhas necessidades, mudei alguma coisa e criei um .ch para usar como @ 01,01 PSay "Teste" a TxtPreview é de um amigo Ednaldo Rolim, eu ainda não utilizo, mas qualquer posso entrar em contato com ele ou vc mesmo pode entrar em contato, geralmente ele fica no fórum da fivetech, como eu também. Abraços Vagner Wirts São Paulo-Brasil
  2. Olá Marllon, Se está usando o TPrint é assim : Esse direciona para a impressora, mesmo que não seja a padrão Print oPrn Doc "Emissão de Tabelas" To "HP DeskJet" Ou então : Print oPrn Doc "Emissão de Tabelas" Manda direto para a impressora padrão do windows. Abraços Vagner Wirts São Paulo-Brasil
  3. Olá Marllon, No TSBrowse : Onde aFil_Cid é um array com os fields do arquivo, tipo codigo, nome__ etc.. aCab_cid é um array com os cabeçalhos,e acol_cid um array com o tamanho das colunas. For nX := 1 To Len(aFil_Cid) cFiel := "{||"+aFil_Cid[nX]+"}" ADD Column To oLbxCid Data &cFiel Header aCab_Cid[nX] Size aCol_Cid[nX] Next Funciona muito bem. Abraços Vagner Wirts São Paulo-Brasil
  4. Negativo karinh, Estou na Vila Maria, começo da Dutra Zona Norte. Abraços Vagner Wirts
  5. Olá karinh, Você já tentou inicializar a impressora novamente na linha onde ela para ? ex.: oPrn:Say(nLi...) nLi ++ ... oPrn:Say(nLi,00,Chr(27)+"@") Abraços Vagner Wirts São Paulo-Brasil
  6. Ok Marllon, É exatamente isso que acontece, teriamos que mandar as fotos para um diretório no FW Brasil e puxar de lá, mas a idéia é realmente muito falha, já pensou o espaço em disco que teriam que reservar ? Abraços Vagner Wirts São Paulo-Brasil
  7. Vamos testar \meusdo~1\imagem.jpg[img/]
  8. Olá Gilmer, Tenho algumas classes montadas, como o VFolder, o VMeter e estou acabando o VBox, como posso mandar para que você coloque a disposição de todos ? Abraços Vagner Wirts São Paulo-Brasil Obs.: deveriamos pode colocar imagens de telas, fica mais fácil para que consigamos ver erros e outras coisas (só uma observação)
  9. vagner

    Classe TSBROWSE

    Olá Marllon, Não é direto da função TSBrowse, mas vc pode fazer o seguinte : DbSelectArea("Cidades_") aCab_Cid := {"Código","Nome","Uf","Região","Nome"} //Cabecalho do Browse aFil_Cid := { "Cidades_->Codigo","Cidades_->Nome__","Cidades_->Estado","Cidades_->Regiao","Cidades_->NomReg" } //Variaveis do Browse aCol_Cid := {51,287,30,42,63} //Tamanho das Colunas - Sempre o Tamanho da Variavel * 8 aSel_Cid := {{1,"Cida_Cod"},{2,"Cida_Nom"}} //Ordens de Indexados nSel_Cid := 1 oLbxCid := TSBrowse():New(01,01,288,120,,,,oFld:aDialogs[1],,,,,{|nRow,nCol,nFlag|InclAlte(Iif(lAltInc,"Alt","Con"))},,,,,,,"Cidades_",.T.) oLbxCid:lMChange := .F. nTam := 0 For nX := 1 To Len(aCol_Cid) nTam += aCol_Cid[nX] Next If nTam < 560 aCol_Cid[Len(aCol_Cid)] += (560-nTam) Else nTam -= aCol_Cid[Len(aCol_Cid)] aCol_Cid[Len(aCol_Cid)] := (560-nTam) Endif For nX := 1 To Len(aFil_Cid) cFiel := "{||"+aFil_Cid[nX]+"}" ADD Column To oLbxCid Data &cFiel Header aCab_Cid[nX] Size aCol_Cid[nX] Next
  10. vagner

    Classe TDosPrn

    Olá Marllon, Verifique o tamano da var que está imprimindo, isso ocorre qdo vc manda imprimir em uma coluna cuja já esteja ocupada ex.: cNome := Space(40) oPrn:Say(nLi,01,cNome...) oPrn:Say(nLi,40,"Teste"...) Nesse caso o nome começa na 1 e vai até a 41, aí dá estouro de linha. Abraços Vagner Wirts São Paulo-Brasil
  11. Olá Jorge, Não sei se é o seu caso, você não poderia ao invés de inibir simplesmente não apresentar ?, se puder pode ser posto if antes dos menus, aí tipo o usuário não pode ter acesso a determinado ítem, não apresentaria ex.: MenuItem "Cadastro".... If lPode MenuItem "Alterar Cadastro".... Endif MenuItem "Imprimir" Abraços Vagner Wirts São Paulo-Brasil
  12. Olá Jorge, Provavelmente, o lend não está sendo atualizado, para .t. coloque um msg no valid para verificar se está atualizando. Abraços Vagner Wirts São Paulo-Brasil
  13. vagner

    Imagem JPG

    Marllon, É isso mesmo quando se coloca a Clausula MDI, a window se comporta diferente, então terá que fazer o seguinte : criar uma dialog não modal, para que se possa colocar o JPG de fundo, passo-lhe a função que montei para uma janela filha, funciona também na janela pai. oSayFer := cSayFer := "Ferramentas" Define Font oFonCab Name "CommScriptTT" Size 20 ,40 Define BitMap oBmpRef Name "Fundo" Define Window oWndChil4 From 0,2 To (oWnd:nBottom-67)-(oWnd:oMsgBar:nHeight+20), oWnd:nRight-100 Of oWnd Pixel MDICHILD Style (DS_MODALFRAME) //Font oFontDl nTam := (oWnd:nRight-102)/2 oWndChil4:bGotFocus = { || oDlg4:SetFocus() } DEFINE DIALOG oDlg4 FROM 0,6 To oWndChil4:nBottom, oWndChil4:nRight Pixel STYLE WS_CHILD OF oWndChil4 oDlg4:bPainted = { | hDC | PalBmpDraw( hDC, 32, 0, oBmpRef:hBmpPal,oWndChil4:nRight,oWndChil4:nBottom-(oWnd:oMsgBar:nHeight)-10) } @ 00,16 Say oSayFer Var cSayFer Of oDlg4 Size nTam-16,16 Pixel Font oFonCab Center Color nRgb(0,100,0) @ 00,00 BitMap oBmpFer File "Ferramen.Bmp" Size 16,16 NoBorder Pixel oBmpFer:lTransparent := .T. ACTIVATE DIALOG oDlg4 NOWAIT ; // It has to be NonModal --> NOWAIT clause ON INIT oDlg4:Move( 0, 0 ) Activate Window oWndChil4 Normal Nesse exemplo eu montei com um BMP, você terá que alterar para o TImagem(). Abraços Vagner Wirts São Paulo_Brasil
  14. vagner

    Imagem JPG

    Marllon, Faça um teste retirando a Clausula MDI, eu não trabalho muito com mdi, mas acho que nesse caso não funciona. Aí teria que ser de uma outra forma, vou dar uma olhada em um programa meu antigo acho que fiz algo assim, depois lhe retorno. Abraços Vagner Wirts São Paulo-Brasil
  15. Carlos, se quiser, pode mandar os programas para mim, tentarei compila-lo e ver onde pode estar o problema. Abraços Vagner Wirts São Paulo-Brasil Ps.: como disse o Gilmer, pode ficar tranquilo a respeito dos seus fontes, estou aqui somente para tentar ajudar e ser ajudado é lógico, não tenho interresse nenhum em pegar fontes de outro.
  16. Olá Carlos, o Library, que está no meu lnk, é uma lib minha, você pode retira-la, não terá função para você, agora a respeito do erro, pode ser que esteja fazendo muito acesso a alguma dialog, o programa chega a abrir ou dá erro na linkedição ? Abraços Vagner Wirts São Paulo-Brasil
  17. vagner

    Imagem JPG

    Olá Marllon, O que lhe passei é exatamente para a Window, é a que uso no meus sistemas, pelo que pude ver, você está mandando carregar a foto após o activate window, têm que ser antes ou mandar carregar quando der um paint, ex.: Activate Window oWnd on Paint (CarregaImagem()) Func CarregaImage() oBkgImage:Progress(.F.) oBkgImage:LoadBmp('ORION.JPG') Retu("") Abraços Vagner Wirts São Paulo-Brasil
  18. Olá Jorge, Qdo, você cria um sub-menu, o ítem do menu principal é só direcionador, então terá que desabilitar os ítens do sub-menu, usando When em cada sub-ítem, funciona legal. Abraços Vagner Wirts São Paulo-Brasil
  19. Olá Carlos, Vi no seu lnk, que está usando o BeginArea e o EndArea, por que está construindo overlay interno ?, não há a necessidade, estou postando um lnk que utilizo aqui na empresa são 55 prg + a minha lib dá em torno de uns 80 prgs Fi Transpor Fi Cria_Arq Fi Reorgani Fi TFtp Fi TSockets Fi DialTone // Cadastramentos Fi Cadastro\Cad1_010 Fi Cadastro\Cad1_020 Fi Cadastro\Cad1_030 Fi Cadastro\Cad1_040 Fi Cadastro\Cad1_050 Fi Cadastro\Cad1_060 Fi Cadastro\Cad1_070 Fi Cadastro\Cad1_080 Fi Cadastro\Cad1_090 Fi Cadastro\Cad1_100 // Movimentacoes Fi Moviment\Mov2_010 Fi Moviment\Mov2_011 Fi Moviment\Mov2_020 Fi Moviment\Mov2_030 Fi Moviment\Mov2_040 Fi Moviment\Mov2_050 Fi Moviment\Mov2_060 Fi Moviment\Mov2_061 Fi Moviment\Mov2_070 Fi Moviment\Mov2_080 Fi Moviment\Mov2_081 // Relatorios Fi Relatori\Rel3_010 Fi Relatori\Rel3_020 Fi Relatori\Rel3_030 Fi Relatori\Rel3_040 Fi Relatori\Rel3_050 Fi Relatori\Rel3_051 Fi Relatori\Rel3_060 Fi Relatori\Rel3_070 Fi Relatori\Rel3_080 Fi Relatori\Rel3_090 Fi Relatori\Rel3_100 // Programas Auxiliares Fi Programa\Prg4_021 Fi Programa\Prg4_030 Fi Programa\Prg4_031 Fi Programa\Prg4_032 Fi Programa\Prg4_041 Fi Programa\Prg4_051 Blinker Incremental Off Blinker Executable Compres PackCode PackData // If you use Mr. Debug for Windows product // search c:\mrdebug\lib\mrd4win.lib //Stacksize 29500 DefBegin name Transporte description "Sistema de Transporte - Trans-Well's Expresso Rodoviario Ltda." exetype Windows 3.1 code moveable discardable preload data preload moveable stacksize 22000 //20500 heapsize 3000 //2048 segment 'PLANKTON_TEXT' nondiscardable segment 'EXTEND_TEXT' nondiscardable segment 'OM_TEXT' nondiscardable segment 'OSMEM_TEXT' nondiscardable segment 'SORTOF_TEXT' nondiscardable segment 'STACK_TEXT' nondiscardable DefEnd Blinker Clipper Symbol Off NoBell Lib \Fw20\Lib\Five, \Fw20\Lib\FiveC, \Fw20\Lib\Objects Lib \Fw20\Lib\WinApi, Clipper, Extend, DbfNtx, Terminal,DbfCdx,_DbfCdx Lib \Fw20\Lib\Dbuttons Lib \Wells\LibFiveW\Library Ou Transpor Só uma Obs. separe os prgs em diretórios, fica mais fácil de encontrar. Abraços Vagner Wirts São Paulo-Brasil
  20. vagner

    Imagem JPG

    Aí Marllon, Carregar uma imagem JPG. terá que usar o TImagem, terá que usar o NViewlib.dll *---- Define Fundo de Tela ----* hLib := LoadLib32("\Tr_Wells\NViewLib.Dll") @ 03.1,00 Image oImag Size oWnd:nHorzRes(),oWnd:nVertRes()-104 Of oWnd Adjust oImag:Progress(.F.) // Nao mostra um meter de carregamento da imagem. oImag:LoadBmp(cNova+".Jpg") FreeLib32(hLib) Quanto ao Harbour, pelo que "Ouvi", não há limite para array, mas no FW existe uma classe criada, que transformar arrays para mais de 4069 ítens. Abraços Vagner Wirts São Paulo-Brasil PS.: Não me lembro quem criou o TArray, mas poderá baixa-lo do site do Daniel Andrade www.dbwide.com.ar
  21. Olá Marllon, Com certeza na Versão 2.0 em diante funciona, pois é a que tenho, na de avaliação não tenho ideia. Abraços Vagner Wirts São Paulo-Brasil
  22. Olá Carlos, Bom vamos lá, eu não conheço o MIRO, gosto mesmo de montar eu mesmo meus programas, sei que leva tempo, mas sai do jeito que eu quero, bom a respeito das variáveis, não utilize PRIVATE, prefira usar LOCAL, ocupa menos memória e não fica reservada, já as Static são variáveis que são ocupadas no sistema e não são perdidas, ou seja, digamos que vc tenha um programa de calculadora, onde chama de um determinado local, colocando o valor em uma var statica, vc pode fechar a calculadora e na próxima chamada a calculadora o valor ainda estará lá, é útil para que não perca o que estava fazendo, mas.... a memória vai para o espaço. Então aconselho vc mudar seus private para Local, e raramente usar Public e Static, muitas vars Public no sistema também usa muita memória, onde dá pau para todo lado. Abraços Vagner Wirts São Paulo-Brasil
  23. Ps.: Verifiquei, que vc têm muitos programas e geralmente colocamos muitas funções dentro dos programas, funções estas que podem ser usadas por outros programas no mesmo sistema, então é muito mais fácil criar uma lib dessas funções e linka-la junto com o sistema, se esse for o seu caso, aconselho que faça isso, é muito mais comodo e nos diminui muito o tamanho do Exe.
  24. Olá Carlos, Tomei a liberdade de pegar isso no fórum em espanhol, se não conseguir traduzir, me avise que farei o possivel para lhe ajudar. Con el permiso de Hernán, ya que a mi me fue muy útil. **************************************************************************** ********** Tip sobre VARIABLES por Hernán Diego Ceccarelli Dejo un truco que quizá muchos de ustedes conozcan pero otros quizás no. Se trata de la optimización del sistema. Esto debido a que un amigo de Brasil me preguntaba sobre por que de sus GPF en una gran aplicación ???... y estaba desesperado........y bueno pensé que alguno de ustedes tendría este problema quizá.... El problema estaba en las STATIC. El amigo utilizaba muchas variables STATIC por PRG, cosa que FW soporta en menor cantidad respecto al MSDOS. Igualmente JAMÃS seria necesario escribir mas de 1 variable por modulo PRG, veamos el ejemplo: No es conveniente hacer esto !!!!!!!! STATIC aVar STATIC bVar STATIC cVar STATIC dVar Se debe hacer esto !!!!!!! STATIC aArrayVars:= {Nil,Nil,Nil,Nil} #xtranslate aVar => aArrayVars\[1\] #xtranslate bVar => aArrayVars\[2\] #xtranslate cVar => aArrayVars\[3\] #xtranslate dVar => aArrayVars\[4\] En realidad con esto definimos 1 variable STATIC y consumimos menos los recursos del sistema, y esta solución EVITA modificar el código del PRG,excepto la definición inicial, y lo mas importante EVITA GPF !!! Algunos dirán que es lo mismo poner #define, PERO NO ES LO MISMO !!!!!!!!, dado que estos defines no se resuelven cuando se incorporan en COMANDOS, cosa que si resuelve #xtranslate. :-) Ahora respecto a las PUBLIC. También es conveniente usar 1 (UNA) variable en todo el sistema.......Siiiiiiiiiiii seamos bien amarretes y avaros para el uso de estas también, y evitaremos dolores de cabeza y conflictos !!!!! Supongamos que tenemos las siguientes variables: PUBLIC cSistema:= "Sistema Pepe" PUBLIC cPath:= "\Datos" PUBLIC cCopyright:= "Topo Gigio Sistemas" ....... NO NO Y NO !!!!! NO DEBEMOS HACER ESTO !!!!! Deberiamos hacer esto otro: Function Main() PUBLIC oApp:= TApplication() ....... return nil CLASS TApplication DATA cSistema INIT "Sistema Pepe" DATA cPath INIT "\Datos" DATA cCopyright INIT "Topo Gigio Sistemas" ........... y asi todas las que quisieramos !!!!! :-) ENDCLASS ........... y como es un objeto publico podremos modificar sus variables de instancia cuando se nos de la regalada gana !!!!! y tenemos 1 sola public, o sea oApp en forma de objeto y accederíamos así Alert( oApp:cCopyright ) !!!!!!!!!! es bien fácil !!!!!!!!!!!!!!!!! Llega el turno de las PRIVATE, es conveniente NO USARLAS usemos siempre las LOCAL y paseémoslas por referencia. También podríamos usar una LOCAL objeto TARRAY y esta nos sirve para pasar argumentos cientos de variables en 1 sola. OLVIDÉMONOS que existen las PRIVATE !!!!! CONCLUSIÓN: Si optimizamos el código de una aplicación lograremos: 1.. Mayor rapidez 2.. Mayores disponibilidad de recursos 3.. Menores errores GPF (serán casi imposibles de visualizar) 4.. Un código mas legible Salu2 y espero que les sirva de algo !!! ,Bom como lí em alguma postagem sua, anterior, infelizmente o FW por funcionar no Windows, temos que fazer algumas mudanças nos nossos programas, as vezes nem são muitas mas as vezes.... Abraços Vagner Wirts São Paulo-Brasil
  25. Olá Carlos, O Que vc têm dentro dos folder ?, por um acaso é um listbox ?, coloque uma parte do seu programa para que possamos analizar melhor. Abraços Vagner Wirts São Paulo-Brasil
×
×
  • Create New...