-
Posts
4,981 -
Joined
-
Last visited
-
Days Won
9
Posts posted by vagner
-
-
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
-
Negativo karinh,
Estou na Vila Maria, começo da Dutra Zona Norte.
Abraços
Vagner Wirts
-
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
-
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
-
Vamos testar
\meusdo~1\imagem.jpg[img/]
-
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)
-
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
-
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
-
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
-
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
-
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
-
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
-
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.
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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.
-
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
-
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
-
Olá João, se que abrir um combo com todos os registros do arquivo, fica mais fácil utilizar o dbcombobox.
Abraços
Vagner
Como imprimir em uma impressora...
in Programação
Posted
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