Print Preview com WVW
Moderador: Moderadores
Print Preview com WVW
Olá,
Já faz algum tempo uso um print preview que adaptei de várias idéias que li nos foruns xHarbour. Basicamente usa o HBEdit para criar o preview. Dei uma incrementada para poder imprimir em qualquer impressora instalada, gravar em vários formatos ( TXT, DOC, XLS e PDF ) e movimentação entre as páginas. Ainda falta alguns acertos, mas já dá pra usar sem nenhum problema.
Criei um exemplo completo, que pode ser baixado em :
http://www.4shared.com/file/183564422/a ... eview.html
Espero que seja útil.
M.Angeiras
Já faz algum tempo uso um print preview que adaptei de várias idéias que li nos foruns xHarbour. Basicamente usa o HBEdit para criar o preview. Dei uma incrementada para poder imprimir em qualquer impressora instalada, gravar em vários formatos ( TXT, DOC, XLS e PDF ) e movimentação entre as páginas. Ainda falta alguns acertos, mas já dá pra usar sem nenhum problema.
Criei um exemplo completo, que pode ser baixado em :
http://www.4shared.com/file/183564422/a ... eview.html
Espero que seja útil.
M.Angeiras
Clipper 5.2e + sixcdx + catools + nanfor
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
Re: Print Preview com WVW
Ola lugab,
O exemplo do menu/tela de cadastro esta em
http://www.4shared.com/file/187036322/6 ... menus.html
[]s
M.Angeiras
O exemplo do menu/tela de cadastro esta em
http://www.4shared.com/file/187036322/6 ... menus.html
[]s
M.Angeiras
Clipper 5.2e + sixcdx + catools + nanfor
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
Re: Print Preview com WVW
Angeiras,
Como vc faz para fazer esses box's nos gets??
Janio
Como vc faz para fazer esses box's nos gets??
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Re: Print Preview com WVW
Olá Janio,
Eu fiz uma pequena alteração na função wvw_drawboxget(). Segue abaixo a função com as linhas alteradas ( as linhas comendatas são as originais ).
Lembrando que ainda uso o xHarbour 1.0.0.
[]s
M.Angeiras
Eu fiz uma pequena alteração na função wvw_drawboxget(). Segue abaixo a função com as linhas alteradas ( as linhas comendatas são as originais ).
Código: Selecionar todos
HB_FUNC( WVW_DRAWBOXGET )
{
USHORT usWinNum = WVW_WHICH_WINDOW;
POINT xy = { 0 };
POINT yz = { 0 };
WIN_DATA * pWindowData;
int iTop, iLeft, iBottom, iRight;
int iOffTop, iOffLeft, iOffBottom, iOffRight;
USHORT usRow, usCol, usLen;
pWindowData = s_pWindows[ usWinNum ];
usRow = hb_parni( 2 );
usCol = hb_parni( 3 );
usLen = hb_parni( 4 );
iOffTop = !ISNIL( 5 ) ? hb_parni( 5,1 ) : 0 ;
iOffLeft = !ISNIL( 5 ) ? hb_parni( 5,2 ) : 0 ;
iOffBottom = !ISNIL( 5 ) ? hb_parni( 5,3 ) : 0 ;
iOffRight = !ISNIL( 5 ) ? hb_parni( 5,4 ) : 0;
if (s_bMainCoordMode)
{
hb_wvw_HBFUNCPrologue(usWinNum, &usRow, &usCol, NULL, NULL);
}
xy = hb_wvw_gtGetXYFromColRow( pWindowData, usCol, usRow );
iTop = xy.y - 1 + iOffTop;
iLeft = xy.x - 1 + iOffLeft;
yz = hb_wvw_gtGetXYFromColRow( pWindowData, usCol + usLen, usRow + 1 );
yz.y -= pWindowData->byLineSpacing;
iBottom = yz.y + iOffBottom;
iRight = yz.x + iOffRight;
// SelectObject( pWindowData->hdc, s_sApp.penBlack );
SelectObject( pWindowData->hdc, s_sApp.penDarkGray );
MoveToEx( pWindowData->hdc, iLeft, iTop, NULL );
LineTo( pWindowData->hdc, iRight, iTop );
MoveToEx( pWindowData->hdc, iLeft, iTop, NULL );
LineTo( pWindowData->hdc, iLeft, iBottom );
/* SelectObject( pWindowData->hdc, s_sApp.penDarkGray );
MoveToEx( pWindowData->hdc, iLeft-1, iTop-1, NULL );
LineTo( pWindowData->hdc, iRight+1, iTop-1 );
MoveToEx( pWindowData->hdc, iLeft-1, iTop-1, NULL );
LineTo( pWindowData->hdc, iLeft-1, iBottom+1 );
*/
/* GTWVW also draws right and bottom outer with single white line */
// SelectObject( pWindowData->hdc, s_sApp.penWhite );
SelectObject( pWindowData->hdc, s_sApp.penDarkGray );
/* MoveToEx( pWindowData->hdc, iRight+1, iTop-1, NULL );
LineTo( pWindowData->hdc, iRight+1, iBottom+1+1 );
MoveToEx( pWindowData->hdc, iLeft-1, iBottom+1, NULL );
LineTo( pWindowData->hdc, iRight+1, iBottom+1 );
*/
MoveToEx( pWindowData->hdc, iLeft, iBottom, NULL );
LineTo( pWindowData->hdc, iRight, iBottom );
MoveToEx( pWindowData->hdc, iRight, iTop, NULL );
LineTo( pWindowData->hdc, iRight, iBottom+1 );
hb_retl( TRUE );
}
[]s
M.Angeiras
Clipper 5.2e + sixcdx + catools + nanfor
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
Re: Print Preview com WVW
Tentei incluir esse código no meu PRG acrescentando apenas aquelas linhas para introdução de codigo c em prg, porém, deu uma serie de erros na compilação. Nem compilou.
Janio
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Re: Print Preview com WVW
Olá Janio,
Voce tem que alterar diretamente na gtwvw.c e recompilar a lib.
[]s
M.Angeiras
Voce tem que alterar diretamente na gtwvw.c e recompilar a lib.
[]s
M.Angeiras
Clipper 5.2e + sixcdx + catools + nanfor
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
Re: Print Preview com WVW
Angeiras,
O exemplo que vc disponibilizou "menu", acompanha uma lib de 15.05.2009. A minha que tenho aqui ainda é de 2007. Mesmo compilando o sistema com essa lib sua (mais recente), que veio no pacote 'menu', não funcionou.
Enfim, qual é o pulo do gato?
Janio
O exemplo que vc disponibilizou "menu", acompanha uma lib de 15.05.2009. A minha que tenho aqui ainda é de 2007. Mesmo compilando o sistema com essa lib sua (mais recente), que veio no pacote 'menu', não funcionou.
Enfim, qual é o pulo do gato?
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Re: Print Preview com WVW
Bom dia!
Muito Legal mesmo essa borda em volta do Get, tenho algumas duvidas?
1 - Vcoê utiliza esta função no lugar do comando RED ?
READ_GETS( nCursor, nWin )
Vc poderia disponibilizar o fonte desta funcao?
2 - Onde esta esta função para pegar as cores do Windows?
GetSysColor( 15 )
Obrigado
Frazato
Muito Legal mesmo essa borda em volta do Get, tenho algumas duvidas?
1 - Vcoê utiliza esta função no lugar do comando RED ?
READ_GETS( nCursor, nWin )
Vc poderia disponibilizar o fonte desta funcao?
2 - Onde esta esta função para pegar as cores do Windows?
GetSysColor( 15 )
Obrigado
Frazato
Re: Print Preview com WVW
Olá,
É, tem algumas funções de apoio que uso pra deixar o box do get daquele jeito. Vou separar as funções e postar aqui mais tarde ( agora tô "correndo sem parar" ).
[]s
M.Angeiras
É, tem algumas funções de apoio que uso pra deixar o box do get daquele jeito. Vou separar as funções e postar aqui mais tarde ( agora tô "correndo sem parar" ).
[]s
M.Angeiras
Clipper 5.2e + sixcdx + catools + nanfor
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
-
prow
- Usuário Nível 1

- Mensagens: 7
- Registrado em: 30 Abr 2008 11:52
- Localização: Belo Horizonte-MG
- Contato:
Re: Print Preview com WVW
A opcao de gerar em Excel esta dando error nao declarado a variavel _acols, declarei ela com _acols:={}, mas nao gera nada no excel.
sera que o arquivo tem que efetuar um append nele primeiro, favor analisar Grato.
sera que o arquivo tem que efetuar um append nele primeiro, favor analisar Grato.
Re: Print Preview com WVW
still waiting!É, tem algumas funções de apoio que uso pra deixar o box do get daquele jeito. Vou separar as funções e postar aqui mais tarde ( agora tô "correndo sem parar" )
Ainda estou aguardando!
por Toledo: O presente tópico foi editado para traduzir a mensagem enviada.
Atenção: estamos no Brasil, evite postar mensagens em inglês.
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Re: Print Preview com WVW
Olá Janio,
Desculpe a demora em responder. Mas vamos ao que interessa :
A GTWVW não tem processo de redesenho automático de alguns elementos gráficos. Sendo assim, para imagens, boxes, labels, etc. precisamos "lembrar" a GTWVW para efetuar o redesenho quando a tela for minimizada/restaurada ou alguma coisa ficar por cima da tela anterior.
Dessa forma, temos que definir algumas funções para informar a GTWVW o quê e quando redesenhar. Eu faço da seguinte maneira :
Defino no início do meu programa uma variável pública que vai guardar todos os elementos gráficos que preciso para redesenhar :
Defino também a taxa para atualização do redesenho automático :
e uma função para iniciar e guardar os elementos gráficos :
Quando preciso de guardar um box, por exemplo, inicializo a posição da janela criada e guardo o box como um code block
A função AbreJanela() é só um jeito diferente de chamar a função wvw_nOpenWindow().
Os gets, são apenas boxes contornando o espaço de edição reservado da variável. Precisamos então definir uma forma de, após montar toda a tela de get, desenhar os boxes e informar a GTWVW que eles tem que ser redesenhados. Dessa forma, criei um define chamado READ_GETS, que voce usa assim :
e o define :
Lembre-se que dessa forma, a variável getlist deve ser, no mínimo, private.
Espero que tenha ficado claro.
Qualquer dúvida, estou a disposição
Desculpe a demora em responder. Mas vamos ao que interessa :
A GTWVW não tem processo de redesenho automático de alguns elementos gráficos. Sendo assim, para imagens, boxes, labels, etc. precisamos "lembrar" a GTWVW para efetuar o redesenho quando a tela for minimizada/restaurada ou alguma coisa ficar por cima da tela anterior.
Dessa forma, temos que definir algumas funções para informar a GTWVW o quê e quando redesenhar. Eu faço da seguinte maneira :
Defino no início do meu programa uma variável pública que vai guardar todos os elementos gráficos que preciso para redesenhar :
Código: Selecionar todos
public _aobjetos := {}Código: Selecionar todos
wvw_SetPaintRefresh(0)
Código: Selecionar todos
*********************************
FUNCTION LIMPAOBJETOS( nWindow )
*********************************
while len( _aObjetos ) < nWindow+1
aadd( _aObjetos, {} )
enddo
_aObjetos[ nWindow+1 ] := {}
RETURN .T.
***************************************
FUNCTION ADDOBJETOS( nWindow, bAction )
***************************************
aadd( _aObjetos[ nWindow+1 ], bAction )
RETURN .T.
Código: Selecionar todos
nWin2 := AbreJanela("Confirmação de Sangria dos Caixas", 06, 01, 30, 96)
LimpaObjetos(nWin2)
AddObjetos( nWin2, {|_win| wvw_drawroundrect( _win, 04,01,21,94, {-6,-2,+4,+2}, 10, 10 ) } )
Os gets, são apenas boxes contornando o espaço de edição reservado da variável. Precisamos então definir uma forma de, após montar toda a tela de get, desenhar os boxes e informar a GTWVW que eles tem que ser redesenhados. Dessa forma, criei um define chamado READ_GETS, que voce usa assim :
Código: Selecionar todos
@ 10, 01 say "Codigo do cliente :" get mcodcli picture "9999"
@ 12, 01 say " Razao Social :" get mrazao picture "@!"
@ 14, 01 say " Nome Fantasia :" get mfantasia picture "@!"
READ_GETS( nCursor, nWin )
nCursor = Estilo do cursor, geralmente lido por setcursor()
nWin = Numero da janela retornado pela wvw_nOpenWindow()
Código: Selecionar todos
#define READ_GETS( c, w ) AddObjetos( w, {|nWindow| x := nWindow, aEval( GetList, {|oGet| WVW_DrawBoxGet( x, oGet:Row, oGet:Col, Len( Transform( oGet:VarGet(), oGet:Picture ) ) ) } ) } ) ;;
setcursor(1); read; setcursor(c)
Espero que tenha ficado claro.
Qualquer dúvida, estou a disposição
Clipper 5.2e + sixcdx + catools + nanfor
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin
xHarbour 1.0.0 + gtwvw / xHarbour 1.2.1 + Fivewin

