Tamanho da Janela com wvw. Alguém já conseguiu?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Tamanho da Janela com wvw. Alguém já conseguiu?

Mensagem por carlos_dornelas »

Pessoal,

Alguém já conseguiu uma boa combinação com as funcoes abaixo que permita uma tela cheia (ou quase cheia) e que exiba os caracteres, como por exemplo o chr(16)? Já me bati, fiz vários testes. Com a fonte "terminal" consegui a exibição correta dos caracteres, mas a tela fica bem pequena. E o codepage, além de 255, existem outras configurações?

Já pesquisei em posts anteriores, mas não consegui resolver esse problema. Se alguém puder me dar uma luz, fico muito grato mesmo.

[]s

Antonio Carlos


wvw_setcodepage(,255)
wvw_setfont...
setmode(24,80)
Luiz
Usuário Nível 2
Usuário Nível 2
Mensagens: 61
Registrado em: 05 Set 2006 07:30
Localização: Vila Velha - ES

Mensagem por Luiz »

Para maximizar você pode utilizar esse código (adaptado de maximize.prg)

Código: Selecionar todos

* this dimension will be used when user presses RESTORE button
static s_nNormalMaxrow := 24
static s_nNormalMaxcol := 79

procedure main
  wvw_enablemaximize(0, .t.)
  wvw_maximize(0)
  wait
  
function WVW_SIZE(nWinNum, hWnd, message, wParam, lParam)
* this function is called by gtwvw AFTER the size is changed
* WARNING: screen repainting is not performed completely by gtwvw at this point of call
local cScreen
local lNeedReset := .f., ;
      maxsavedscrrow, maxsavedscrcol
   if !WVW_SIZE_READY()
      * program is not ready to handle window resizing
      * (or this function is currently running)
      return NIL
   endif
   if nWinNum<>0
      * only care about Main Window
      return NIL
   endif

   * avoid reentrance
   WVW_SIZE_READY(.f.)

   do case
      case wParam == 2 //SIZE_MAXIMIZED
         //alert("MAXIMIZE")
         * reset is required only if we are changing size
         lNeedReset := maxcol() <> wvw_maxmaxcol();
                       .or. maxrow() <> wvw_maxmaxrow()

         if lNeedReset
            maxsavedscrrow := min(min(s_nNormalMaxrow, wvw_maxmaxrow()),maxrow())
            maxsavedscrcol := min(min(s_nNormalMaxcol, wvw_maxmaxcol()),maxcol())
            cScreen := savescreen(0,0,maxsavedscrrow, maxsavedscrcol)
            if setmode(wvw_maxmaxrow()+1, wvw_maxmaxcol()+1) //adjust maxrow() & maxcol()
               restscreen(0,0,maxsavedscrrow, maxsavedscrcol, cScreen)
            endif
            //diminfo()  //updatescr()
         endif
      case wParam == 0 //SIZE_RESTORED
         //alert("RESTORE")
         lNeedReset := maxcol() <> s_nNormalMaxcol .or.;
                       maxrow() <> s_nNormalMaxrow
         if lNeedReset
            maxsavedscrrow := min(s_nNormalMaxrow, maxrow())
            maxsavedscrcol := min(s_nNormalMaxcol, maxcol())
            cScreen := savescreen(0,0,maxsavedscrrow, maxsavedscrcol)
            if setmode(s_nNormalMaxrow+1,s_nNormalMaxcol+1)
               restscreen(0,0,maxsavedscrrow, maxsavedscrcol, cScreen)
            endif
            //diminfo()  //updatescr()
         endif
      otherwise
         * do nothing
   endcase

   * allow next call
   WVW_SIZE_READY(.t.)
return NIL  
  
#pragma BEGINDUMP

#include "hbapi.h"

HB_FUNC( WVW_SIZE_READY )
{
   BOOL bIsReady;
   static BOOL s_bIsReady = FALSE;
   bIsReady = s_bIsReady;
   if (ISLOG(1))
   {
      s_bIsReady = hb_parl(1);
   }
   hb_retl(bIsReady);
}
#pragma ENDDUMP
No sistema da empresa eu uso a janela maximizada somente pra vizualizar os relatórios, com ajuste de fonte manual para simular um zoom.
Quanto ao tamanho da fonte você pode deixar uma opção para o usuário da estação escolher (usando wvw_choosefont), porque depende tambem da rezolução da tela.
"Ninguém se engane a si mesmo; se alguém dentre vós se tem por sábio neste mundo, faça-se louco para se tornar sábio." (I Coríntios 3:18)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
xHarbour | Gtwvw | HwGui | DBF+CDX | mySQL | Genesis IDE
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Mensagem por carlos_dornelas »

Luiz, vou testar!


Obrigado mais uma vez


Antonio Carlos
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Amigos , estou com um problema relacionado a funções

Código: Selecionar todos

wvw_size() 
wvw_size_ready() 
Não consigo compilar o sistema com essa funções da mensagem de erro como se elas não existicem o extranho é que estou usando a GTWVW e as demais funções funcionam perfeitamente o que teria que fazer para que essa funções funcionem ???

unresolved external


:f
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Veja que no exemplo acima tem a função WVW_SIZE_READY() para vc compilar junto com o sistema...ela esta em .C e vc deve usar junto no .PRG
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

OK , de certo ! :)Pos
C:\Xharbour\Xdev\Fw\VSX
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Ola amigos , tem uma coisa que não estou entendendo, quando mostro uma mensagem em maxroll() , quando esta maximizado fica um exaço abaixo dessa linha como se houve-se um alinha 25 ou seja , se minha mensagem esta setada para maxrol() pq ela não fica no final "rente a borda"

seria por acaso o expaço para uma barra de status ?? Pois bem se for , como colocar esta barra ?? :)Pos
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, vc esta usando tudo na mesma Janela ou esta usando Multijanela ? se estiver usando tudo nas mesma janela, de um olhada se vc esta usando algum SETMODE() para limitar o tamanho da tela....
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

sygecom escreveu:Tche, vc esta usando tudo na mesma Janela ou esta usando Multijanela ? se estiver usando tudo nas mesma janela, de um olhada se vc esta usando algum SETMODE() para limitar o tamanho da tela....

Leo , o problema esta na maximização da tela , eu estou usando o exemplo do SAMPLE que aconpanha no c:\XHarbour\contrib\maximize

que no caso acabei de verificar e esta dando o mesmo problema , veja que a maximizando a ultima linha não vai até o rodapé "rente a borda" penso que aquele espaço não possa ser preenchido pois não seria nele que uma barra "visual" com mensagens de "status", deveria ser inserida ????

:)Pos
C:\Xharbour\Xdev\Fw\VSX
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

ha , quanto ao setmode(24,79) ...
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

e se colocar SETMODE(25,80) ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Leo creio que não tenha nada haver com o setmode() , pois , o sample ta com o mesmo problema , apenas verifique e vera que tenho razão !


c:\xharbour\contrib\gtwvw\sample\maximize
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Então não faço ideia do que seja, eu uso na GTWVW como lhe passei no ultimo exemplo...

Boa Sorte !!!
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
prodasys
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 21 Ago 2007 18:28
Localização: Itapetininga-SP

Mensagem por prodasys »

Ederxc, esqueça o setmode(25,80).Na gtwvw não funciona.De uma olha no fonte abaixo.É o mais proximo que eu consegui para o meu sistema funcionar parecido com a tela do DOS na janela da GTWVW.
Paulo Penalva
prodasys
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 21 Ago 2007 18:28
Localização: Itapetininga-SP

Mensagem por prodasys »

Código: Selecionar todos

       /************************************
        * PROGRAMA : GT.PRG
        ************************************/

        # INCLUDE "GTINFO.CH"

        static s_nNormalMaxrow := 25
        static s_nNormalMaxcol := 84

        FUNCTION GT()
        WVW_SIZE_READY(.T.)
        WVW_SETMAINCOORD(.T.)
        IF GTINFO(GTI_DESKTOPWIDTH) = 1024
                WVW_SETFONT(,"LUCIDA CONSOLE",25,12, 400)
                SETCOLOR('G+/N')
                @ WVW_MAXMAXROW(), 0 TO 25,WVW_MAXMAXCOL()
                WVW_SBCREATE()
        ELSEIF GTINFO(GTI_DESKTOPWIDTH) = 800
                WVW_SETFONT(,"LUCIDA CONSOLE", 18, 10, 400)
                SETCOLOR('G+/N')
                @ 25, 0 TO 25,WVW_MAXMAXCOL()+1
                WVW_SBCREATE()
        END IF        
        WVW_SETCODEPAGE(,255)
        SETMODE(WVW_MAXMAXROW()+1,WVW_MAXMAXCOL()+1)
        wvw_enablemaximize(0, .f.)
        wvw_maximize(0)
	
        Function WVW_SIZE(nWinNum, hWnd, message, wParam, lParam)
        local cScreen
        local lNeedReset := .f., ;
        maxsavedscrrow, maxsavedscrcol
        if !WVW_SIZE_READY()
                return NIL
        endif
        if nWinNum<>0
                return NIL
        endif
        WVW_SIZE_READY(.f.)
        do case
                case wParam == 2 
                lNeedReset := maxcol() <> wvw_maxmaxcol();
                       .or. maxrow() <> wvw_maxmaxrow()
                if lNeedReset
                        maxsavedscrrow := min(min(s_nNormalMaxrow, wvw_maxmaxrow()),maxrow())
                        maxsavedscrcol := min(min(s_nNormalMaxcol, wvw_maxmaxcol()),maxcol())
                        cScreen := savescreen(0,0,maxsavedscrrow, maxsavedscrcol)
                        if setmode(wvw_maxmaxrow()+1, wvw_maxmaxcol()+1) //adjust maxrow() & maxcol()
                                restscreen(0,0,maxsavedscrrow, maxsavedscrcol, cScreen)
                        endif
                endif
                case wParam == 0 
                lNeedReset := maxcol() <> s_nNormalMaxcol .or.;
                       maxrow() <> s_nNormalMaxrow
                if lNeedReset
                        maxsavedscrrow := min(s_nNormalMaxrow, maxrow())
                        maxsavedscrcol := min(s_nNormalMaxcol, maxcol())
                        cScreen := savescreen(0,0,maxsavedscrrow, maxsavedscrcol)
                        if setmode(s_nNormalMaxrow+1,s_nNormalMaxcol+1)
                                restscreen(0,0,maxsavedscrrow, maxsavedscrcol, cScreen)
                        endif
                endif
                otherwise
        endcase
        WVW_SIZE_READY(.t.)
        return NIL

        #pragma BEGINDUMP
        #include "hbapi.h"
        HB_FUNC( WVW_SIZE_READY )
        {
                BOOL bIsReady;
                static BOOL s_bIsReady = FALSE;
                bIsReady = s_bIsReady;
                if (ISLOG(1))
                {
                        s_bIsReady = hb_parl(1);
                }
                hb_retl(bIsReady);
        }
        #pragma ENDDUMP
Editado pela última vez por Pablo César em 24 Mai 2012 20:14, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Paulo Penalva
Responder