Página 1 de 3
SetMode(25,40)
Enviado: 03 Out 2008 10:30
por DLZ
ola Galera !
alguém sabe me dizer pq o SetMode(25,40) que funciona no Clipper não funciona no Xharbour ??
Tenho um sistema de frente de caixa e gostaria de migra-lo para o Xharbour para poder usar as Dlls das impressoras fiscais, mas ai me deparei com esse problema...
Re: SetMode(25,40)
Enviado: 03 Out 2008 10:33
por Maligno
A troca do modo do vídeo é coisa simples. Em baixo nível, digo. Difícil dizer que seja um bug do XHarbour, a não ser que alguém tenha escorregado feio quando implementou a função. Mas isso ocorre na mesma máquina?
Re: SetMode(25,40)
Enviado: 03 Out 2008 11:22
por DLZ
ocorre em qualquer máquina, indiferente do sistema operacional.
A função inclusive retorna erro !!
Pega o mesmo programa, compila em clipper funciona, compila com Xharbour, não funciona !!
OBS: tudo isso em tela cheia..
Re: SetMode(25,40)
Enviado: 03 Out 2008 11:47
por Maligno
A função inclusive retorna erro !!
Isso você não tinha dito. Qual a mensagem de erro?
Re: SetMode(25,40)
Enviado: 03 Out 2008 11:52
por alaminojunior
Nota do help do xHarbour, traduzido pelo google:
Nota: se um aplicativo console é executado em tela cheia em modo texto, há apenas um número limitado de linha / coluna combinações que podem ser exibidas. Este é dependente de hardware. Combinações comuns para o número de linhas e colunas são: 25,80 | 43,80 | 50,80 | 60,80 | 25,132 | 43,132 | 50,132 | 60,132.
Re: SetMode(25,40)
Enviado: 03 Out 2008 11:56
por Maligno
É, se fosse em modo janela, tudo bem. O chato é que ele já tinha isso funcionando em Clipper, e em tela cheia. Realmente não vejo porque o XHarbour não poderia implementar isso, da mesma forma que era em Clipper.
Re: SetMode(25,40)
Enviado: 03 Out 2008 12:04
por alaminojunior
Fiz uns testes aqui, e só consegui alternar, emitindo antes:
Mesmo assim, com 40 colunas não dá, o windows diz que não pode alternar em tela inteira, somente alterna em modo janela.
Re: SetMode(25,40)
Enviado: 03 Out 2008 12:44
por Maligno
O interessante é que no Clipper funciona, conforme relato do colega.
Re: SetMode(25,40)
Enviado: 03 Out 2008 12:47
por DLZ
Será que existe alguma alternativa ?? Alguma função de alguma outra lib que substitua o SETMode() ??
Acho que já está mais do que provado que é um BUG do Xharbour !!
Re: SetMode(25,40)
Enviado: 03 Out 2008 13:04
por alaminojunior
Com a lib GTWVT foi, faça o teste aí.
Código: Selecionar todos
#include "Inkey.ch"
#include "gtinfo.ch"
PROCEDURE Main
LOCAL nMaxRow := MaxRow()
LOCAL nMaxCol := MaxCol()
CLS
! cmd /c mode con cols=40 lines=25
DO WHILE LastKey() <> K_ESC
@ 1,1 SAY "Enter MaxRow:" GET nMaxRow PICTURE "999"
@ 2,1 SAY "Enter MaxCol:" GET nMaxCol PICTURE "999"
READ
CLS
IF SetMode( nMaxRow+1, nMaxCol+1 )
? "New MaxRow()", MaxRow()
? "New MaxCol()", MaxCol()
ELSE
? "Unable to set new screen mode"
ENDIF
WAIT
CLS
ENDDO
RETURN
INIT FUNCTION AppSetup()
REQUEST WVT_SETCODEPAGE
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
HB_LANGSELECT("PT")
HB_SETCODEPAGE( "PT850" )
WVT_Core()
WVT_Utils()
WVT_SetCodePage(850)
Set Date format to "DD/MM/YYYY"
SetCursor(0)
Set Epoch to 1960
Set ScoreBoard Off
Set Deleted On
SET COLOR TO G/W, W+/R,,,N/GR
WVT_ObjList := {}
WVT_Stack := {}
Wvt_SetTitle("teste DLZ 40 colunas")
nWidth := Wvt_GetScreenWidth()
do case
case gtinfo(GTI_DESKTOPWIDTH) >= 1024
gtinfo(GTI_FONTWIDTH, 12)
gtinfo(GTI_FONTSIZE, 20)
Wvt_SetFont("Lucida Console",20,12,2)
case gtinfo(GTI_DESKTOPWIDTH) >= 800
gtinfo(GTI_FONTWIDTH, 10 )
gtinfo(GTI_FONTSIZE, 16 )
Wvt_SetFont("Lucida Console",16,10,2)
otherwise
gtinfo(GTI_FONTWIDTH, 8)
gtinfo(GTI_FONTSIZE, 17)
Wvt_SetFont("Lucida Console",17,8,2)
endcase
SetMode(25,40)
Re: SetMode(25,40)
Enviado: 03 Out 2008 15:43
por DLZ
Agradeço pelo código Alamino, porém fica em modo janela de qualquer forma !!
O que eu preciso é que fique em tela inteira com 40 colunas.., como é no clipper !
Re: SetMode(25,40)
Enviado: 03 Out 2008 20:18
por Maligno
Pelo menos você sabe que, em última instância, pode fazer um programa Clipper para ser executado pelo XHarbour. É gambiarra feia, mas na falta de alternativa...
Re: SetMode(25,40)
Enviado: 04 Out 2008 09:11
por Itamar M. Lins Jr.
Se não estou equivocado, voce define isso nas propriedades da janela. No windows/Linux.
A comandos no [x]harbour fica do jeito do clipper. Se não for usar uma lib visual mais avançada.
Inclusive no Linux eu tenho n formas de tamanho inclusive com imagens no fundo usava na época o aterm. Mais hoje o Konsole do KDE e outros tambem tem esse recurso.
Meu browse usando Linux ou windows eu defino usando MaxCol(), MaxRow(), sempre, no caso do usuário mudar a tela.
Saudações
Itamar M. Lins Jr.
Re: SetMode(25,40)
Enviado: 06 Out 2008 08:52
por DLZ
Itamar ...
Comandos e funções do Clipper DEVERIAM funcionar iguais no Xharbour.. essa é a idéia, porém no caso do SetMode, isso não ocorre..
Inclusive na documentação do Xharbour a função SetMode() faz mensão a diversos tipos de combinação Linha x Coluna, menos da 25,40. Isso me leva a acreditar que esse recurso foi tirado no Xharbour ou foi uma "pisada na bola" !!
Re: SetMode(25,40)
Enviado: 06 Out 2008 10:20
por Itamar M. Lins Jr.
DLZ escreveu:Itamar ...
Comandos e funções do Clipper DEVERIAM funcionar iguais no Xharbour.. essa é a idéia, porém no caso do SetMode, isso não ocorre..
Inclusive na documentação do Xharbour a função SetMode() faz mensão a diversos tipos de combinação Linha x Coluna, menos da 25,40. Isso me leva a acreditar que esse recurso foi tirado no Xharbour ou foi uma "pisada na bola" !!
Creio que entedi, é aquele tipo de letra, um pouco maior.
Mas é porque não é possivel usando o XP/Linux obter, pois neste dois SO que tem diversas fontes de letras e nenhuma delas tem esse formato.
Usando o Clipper no XP é possivel ?
Se não me falha a memoria já li sobre isso uma vez no Changelog do xHarbour o porquê, desse problema.
Saudações,
Itamar M. Lins Jr.