Clipper On Line • Ver Tópico - Creacion Menu segun ejemplo de Jose Quintas

Creacion Menu segun ejemplo de Jose Quintas

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

Moderador: Moderadores

 

Creacion Menu segun ejemplo de Jose Quintas

Mensagempor Ruben Dario » 07 Jul 2020 21:53

Saludos al Forum

De acuerdo a este codigo funciona bien, como hago para maximizar o sea full pantalla y no tener que estirar la ventana.
Segun codigo


FUNCTION MainMenu12( lWindows ) 
   LOCAL mOpc    := 1
   LOCAL mTecla
   LOCAL mCont, mLenTot, mDife, mEspEntre, mEspFora, mColIni, aMouseMenu, mMenuOpt
   HarbourInit()
   mMenuOpt := MenuCria()
   HB_GtReload( hb_GTInfo( HB_GTI_VERSION ) )
   HB_GtInfo( HB_GTI_ICONRES, "AppIcon" )
   HB_GtInfo( HB_GTI_WINTITLE, "Samples" ) 
   CLS
   IF lWindows
#ifdef GTWVG
      MenuWvg( mMenuOpt )
      RETURN NIL
#endif
   ENDIF
   // Center options
   mLenTot := 0
   FOR mCont = 1 TO Len( mMenuOpt )
      mLenTot += Len( mMenuOpt[ mCont, 1 ] )
   NEXT
   mDife     := Max( MaxCol() + 1 - mLenTot, 0 )
   IF mDife < (Len( mMenuOpt ) + 1 )
      IF mDife >= ( Len( mMenuOpt ) - 1 )
         mEspEntre := 1
      ELSE
         mEspEntre := 0
      ENDIF
      mEspFora  := 0
   ELSE
      mEspEntre := int( mDife / ( Len( mMenuOpt ) + 1 ) )
      mEspFora  := int( ( mDife - ( mEspEntre * ( Len( mMenuOpt ) + 1 ) ) ) / 2 ) + mEspEntre
   ENDIF
   mColIni   := { mEspFora }
   FOR mCont = 2 TO Len( mMenuOpt )
      AAdd( mColIni, mColIni[ mCont - 1 ] + Len( mMenuOpt[ mCont - 1, 1 ] ) + mEspEntre )
   NEXT

   *---------- Faz o menu ----------*

   aMouseMenu := {}
   FOR mCont = 1 TO Len( mMenuOpt )
      AAdd( aMouseMenu, { 1, mColIni[ mCont ], mColIni[ mCont ] - 1 + Len( mMenuOpt[ mCont, 1 ] ), 48 + mCont + Iif( mCont > 10, 1, 0 ), 0 } )
   NEXT
   Mensagem( "Selecione e tecle <ENTER>, <ESC> Sai" )
   DO WHILE .T.
      SetColor( SetColorNormal() )
      Scroll( 1, 0, 1, MaxCol(), 0 )
      FOR mCont = 1 TO Len( mMenuOpt )
         @ 1, mColIni[ mCont ] SAY mMenuOpt[ mCont, 1 ] COLOR iif( mCont == mOpc, SetColorFocus(), SetColorNormal() )
      NEXT
      BoxMenu( 3, mColIni[ mOpc ] - 20 + Int( Len( mMenuOpt[ mOpc, 1 ] ) / 2 ), mMenuOpt[ mOpc, 2 ], 1,, .T., .T., aMouseMenu, 1 )
      mTecla := Inkey(0)
      DO CASE
      CASE mTecla == K_ESC // ESC
         EXIT
      CASE mTecla == 4 // seta direita
         mOpc := iif( mOpc == Len( mMenuOpt ), 1, mOpc + 1 )
      CASE mTecla == 19 // seta esquerda
         mOpc := iif( mOpc == 1, Len( mMenuOpt ), mOpc - 1 )
      CASE mTecla > 48 .AND. mTecla < 49 + Len( mMenuOpt ) + iif( Len( mMenuOpt ) > 10, 1, 0 )
         mOpc   := Abs( mTecla ) - 48
         mOpc   := Iif( mOpc > 10, mOpc - 1, mOpc )
      ENDCASE
   ENDDO
   Mensagem()
   RETURN NIL
*----------------------------------------------------------------
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Creacion Menu segun ejemplo de Jose Quintas

Mensagempor JoséQuintas » 08 Jul 2020 10:00

Eu prefiro deixar por conta do usuário: do jeito que ele ajustar é como fica
Uso uma chamada pra esta rotina no início e no final do aplicativo.
Ajuste o nome "JPA Tecnologia" para sua preferência, assim como a fonte "Lucida Console".

#include "hbgtinfo.ch"

FUNCTION GtSetupFont( lSave )

   STATIC sFontSize := 0, sFontWidth := 0, sFontWeight := 0
   LOCAL  nFontSize, nFontWidth, nFontWeight, cRootKey

   hb_Default( @lSave, .F. )

   cRootKey := "HKCU\Software\JPA Tecnologia\"

   IF lSave
      nFontSize   := hb_gtInfo( HB_GTI_FONTSIZE )
      nFontWidth  := hb_gtInfo( HB_GTI_FONTWIDTH )
      nFontWeight := hb_gtInfo( HB_GTI_FONTWEIGHT )
      IF nFontSize != sFontSize .OR. nFontWidth != sFontWidth .OR. nFontWeight != sFontWeight
         sFontSize   := nFontSize
         sFontWidth  := nFontWidth
         sFontWeight := nFontweight
         Win_RegWrite( cRootKey + "FontSize",   LTrim( Str( sFontSize ) ) )
         Win_RegWrite( cRootKey + "FontWidth",  LTrim( Str( sFontWidth ) ) )
         Win_RegWrite( cRootKey + "FontWeight", LTrim( Str( sFontWeight ) ) )
      ENDIF
   ELSE
      //AddExtraFonts()
      hb_GtInfo( HB_GTI_FONTNAME, "Lucida Console" )
      IF Win_RegRead( cRootKey + "FontSize" ) != NIL
         sFontSize   := Val( Win_RegRead( cRootKey + "FontSize" ) )
         sFontWidth  := Val( Win_RegRead( cRootKey + "FontWidth" ) )
         sFontWeight := Val( Win_RegRead( cRootKey + "FontWeight" ) )
         IF sFontSize > 0 .AND. sFontWidth > 0 .AND. sFontWeight > 0
            hb_gtInfo( HB_GTI_FONTSIZE,   sFontSize )
            hb_gtInfo( HB_GTI_FONTWIDTH,  sFontWidth )
            hb_gtInfo( HB_GTI_FONTWEIGHT, sFontWeight )
         ENDIF
      ENDIF
   ENDIF

   RETURN NIL


Mas no fórum, muitos maximizam, então eles podem dizer o que usam. wvt_Maximize() talvez, ou hb_gtInfo() - verifique hbgtinfo.ch sobre a constante de maximizar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Creacion Menu segun ejemplo de Jose Quintas

Mensagempor Ruben Dario » 08 Jul 2020 21:45

Gracias Jose.

Que hace cRootKey := "HKCU\Software\JPA Tecnologia\" que contiene
donde se colocaria GtSetupFont( lSave )

FUNCTION BuildMenu( oMenu, acMenu )
LOCAL nCont, oSubMenu
MEMVAR m_Prog
GtSetupFont( lSave )
lSave? Es numerico o caracter
..
..

Gracias y Saludos
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Creacion Menu segun ejemplo de Jose Quintas

Mensagempor JoséQuintas » 09 Jul 2020 09:09

Ruben Dario escreveu:Que hace cRootKey := "HKCU\Software\JPA Tecnologia\" que contiene


É a chave do Windows pra software, cada máquina vai ter sua configuração no registro do Windows.
JPA Tecnologia é o nome da minha empresa.

Ruben Dario escreveu:donde se colocaria GtSetupFont( lSave )


PROCEDURE Main

   SetMode( 40, 100 )
   CLS
   gtSetFont()
...
gtSetupFont(.t.)
RETURN
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Creacion Menu segun ejemplo de Jose Quintas

Mensagempor Ruben Dario » 19 Jul 2020 11:17

Saludos
Para Jose Quintas.

Con el codigo de menu de tu ejemplo ya lo implemente.
solamente hay un problema. cuando coloco una cortina o imagen como fondo, el SaveScreen() y RestScreen no funcionan. para este caso. Pinta cuando navego con el menu pero si me devuelvo al submenu anterior es el problema
creo que el problema esta en wSave()

FUNCTION WSave()
   Aadd( AppSaveScreen, SaveScreen() )
   RETURN NIL

FUNCTION WRestore()
   IF Len( AppSaveScreen ) > 0
      RestScreen( ,,,,ATail( AppSaveScreen ) )
      aSize( AppSaveScreen, Len( AppSaveScreen ) - 1 )
   ENDIF
   RETURN NIL

FUNCTION WOpen( nUp, nLeft, nRight, nDown, cTitle )
   wSave()
   @ nUp, nLeft TO nRight, nDown
   @ nUp+1, nLeft+1 CLEAR TO nRight-1, nDown-1
   @ nUp, nLeft + 1 SAY Pad( cTitle, nRight - nLeft - 1 )
   RETURN NIL



https://www.4shared.com/photo/U9KMTMNsiq/pantax.html
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Creacion Menu segun ejemplo de Jose Quintas

Mensagempor JoséQuintas » 19 Jul 2020 17:12

Já falei sobre isso:
Usando GT, a imagem de fundo é o texto.
Se volta o texto, a imagem de fundo fica só com o texto.

Talvez seja possível criar rotina pra restaurar somente a parte de texto útil, mas acho que vai ser muito trabalho, pra pouca coisa.
E talvez fique lento, porque vai ser ser texto apagando imagem, e imagem apagando texto, o tempo todo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Creacion Menu segun ejemplo de Jose Quintas

Mensagempor Ruben Dario » 20 Jul 2020 23:11

Saludos

Es posible desarrollar una función para desvanecido de colores.
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 12 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro