Consulta de dialogos para Antonio

Consulta de dialogos para Antonio

Postby lubin » Sat Oct 01, 2011 7:37 pm

Antonio
Disculpa la consulta directa, pero no he recibido respuesta ni muchas luces a la siguiente pregunta:

He diseñado una aplicacion bastante grande, pero el Cliente al verla se encontro con un problema, El tamaño de la Letra esa muy chica , son dialogos hechos en Workshop (fuentes San Seriaf de 8pts ) y me ha pedido que le agrande las Letras:

Eso me significaria que debo de cambiar todos mis Dialogos quizas a un tamaño de 10 o 20 pts. pero obviamente se distorsionan los campos , asi como tambien los gets deberia de cambiarlo.. es decir casi rehacer el diseño...

Aqui la consulta : No hay forma de cambiar el tipo de letra y/o tamaño de letra sin que se deforme los dialogos o ventanas.. ???

encontre unas notas en viewtopic.php?f=6&t=21941 pero la verdad no lo comprendi

Podras decirme si es posible ello o debo resignarme a rejustar todo a mano ??

Gracias por tu respuesta
Lubin
User avatar
lubin
 
Posts: 439
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: Consulta de dialogos para Antonio

Postby Antonio Linares » Sat Oct 01, 2011 8:50 pm

Lubin,

Usando el editor de PellesC, por ejemplo, he diseñado una caja de diálogo sencilla que usa Tahoma 8, por defecto:

Image

Si ahora modifico el font, desde el propio editor de recursos, a Tahoma 12, se ve asi:

Image

Como se aprecia, las proporciones se mantienen correctamente. Puedes mostrar un ejemplo de como te aparece a ti ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41406
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Consulta de dialogos para Antonio

Postby lubin » Sat Oct 01, 2011 10:56 pm

Antonio, gracias atenderme

Efectivamente, con el workshop tambien es posible cambiar la fuente y tamaño de letra, realizando el efecto en todo el dialogo en forma proporcional como Tu lo muestras en tu ejemplo, pero habria que hacerlo en cada dialogo por esta via manualmente.

La idea es cambiar su tamaño o tipo de letra dentro de la misma "aplicacion" , para evitar estar hacendolo dialogo por dialogo en cada recurso "a mano"

Algo asi como tener una opcion de "configuracion de tamaño de letra : Chica, mediana, grande" por ejemplo, sera posible ??

te agradesco tu respuesta
Lubin
User avatar
lubin
 
Posts: 439
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: Consulta de dialogos para Antonio

Postby Bayron » Sun Oct 02, 2011 1:32 am

Lubin,

Solamente tienes que editar el archivo .RC con un editor de texto, y usar la opcion de Busqueda y Reemplazo, y puedes cambiar todos los fuentes en un segundo.....
=====>

Bayron Landaverry
(215)2226600 Philadelphia,PA, USA
+(502)46727275 Guatemala
MayaBuilders@gMail.com

FWH12.04||Harbour 3.2.0 (18754)||BCC6.5||UEstudio 10.10||
Windows 7 Ultimate

FiveWin, One line of code and it's done...
User avatar
Bayron
 
Posts: 815
Joined: Thu Dec 24, 2009 12:46 am
Location: Philadelphia, PA

Re: Consulta de dialogos para Antonio

Postby carlos vargas » Sun Oct 02, 2011 1:44 am

con el editor de tu gusto:
edit->searh and replace

yo lo hago a cada rato :-)
no te ahoges en un vasito de agua :-)


salu2
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1691
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Consulta de dialogos para Antonio

Postby lubin » Sun Oct 02, 2011 3:44 am

Hola Carlos y Bayron

Efectivamente Yo se que es posible hacer un Replace en el RC, facil y simple, pero me gustaria que ello se ajustara directamente desde dentro de la aplicacion como una opcion de "Configuracion" asi queda a la orden del Usuario.

Yo por el momento estoy por crear una variable oFont disponible a travez de una clase donde cargo todos los valores default de mi sistema y esta disponible en toda la aplicacion algo asi ..

En MiClase ..>>>
::SYS_cFuente:= "MS Sans Serif" && Variable del nombre de fuente
::SYS_nPci := -10 && Variable del Tamaño en PCI

DEFINE FONT ::SYS_OFont NAME ::SYS_cFuente SIZE 0,::SYS_nPci BOLD


y al definir los dialogos :
DEFINE DIALOG oDlg RESOURCE "ventana" TITLE "{ "+ PROCNAME()+" } "+s_cCaption+ " <"+ALLTRIM(SS_EMPRESA)+">)" FONT oSYS_DAT:SYS_oFONT

En algo logro cambiar la letra pero el problema es la redistribucion si el tamaño es muy grande...

Pero tendre que ponerla en todas las ventanas del usuario, Yo le preguntaba a Antonio la posibilidad de un Seteo global.

Gracrias por sus comentarios

Lubin
User avatar
lubin
 
Posts: 439
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: Consulta de dialogos para Antonio

Postby Antonio Linares » Sun Oct 02, 2011 8:47 am

Lubin,

Ok, entiendo lo que quieres decir y es muy interesante :-)

Efectivamente al especificar DEFINE DIALOG ... RESOURCE ... FONT ... no se esta cambiando el fuente que hay definido en el RC y creo que sí, que se puede hacer! :-)

La idea seria usar FindResource() para verificar que el recurso existe y luego llamar a LoadResource(). Vamos a hacer unas pruebas y te cuento...
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41406
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Consulta de dialogos para Antonio

Postby FiveWiDi » Sun Oct 02, 2011 7:08 pm

Antonio Linares wrote:Lubin,

Ok, entiendo lo que quieres decir y es muy interesante :-)

Efectivamente al especificar DEFINE DIALOG ... RESOURCE ... FONT ... no se esta cambiando el fuente que hay definido en el RC y creo que sí, que se puede hacer! :-)

La idea seria usar FindResource() para verificar que el recurso existe y luego llamar a LoadResource(). Vamos a hacer unas pruebas y te cuento...


Hola Antonio,

Y si la solución pasase por un nuevo METHOD de la clase TWINDOW?
Me Explico. Tanto si són recursos de una DLL como si són de los diseñados desde código, se podría crear un METHOD InitVisual (el nombre es un ejemplo) en el cual realizar los ajustes visuales, mover controles, ocultar, cambiar tamaño, cambiar tipos de letra, cambiar el color, etc.
Si alguién lo utiliza con otras finalidades (acceder a BB.DD., asignar valor a variables, etc.) sería por su cuenta y riesgo.

Ahí lo dejo.
Un saludo.

Nota: aunque no me logono habitualmente, os sigo casi cada día. Enhorabuena por vuestro trabajo.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1083
Joined: Mon Oct 10, 2005 2:38 pm

Re: Consulta de dialogos para Antonio

Postby lucasdebeltran » Sun Oct 02, 2011 7:16 pm

Hola,

Sería muy interesante que en nuestra aplicación podamos cambiar el tamaño de la fuente usada en el .dll o el .rc.

Tengo esto en el archivo para un diálogo:

Code: Select all  Expand view
activate dialog oDlg centered on init (  display( odlg, 1, .t.  ) )


Code: Select all  Expand view
#include "FiveWin.ch"
#include "common.ch"
#include "xbrowse.ch"

*********************************************************************
* NOME......: DISPLAY(oWnd,nResolution)
*
* VERSAO....: 3.0 - Julho de 2010
*
* AUTOR.....: William de Brito Adami e FiveWidi, que iniciou este projeto
*             no Forum Espanhol de Fivewin .
*
* DESCRICAO.: Funcao para exibir a tela sempre igual em qualquer
*             resolucao, independente da fonte ou controle utilizado.
*
* PARAMETROS: oWnd: Window ou Dialog a ser redimensionado
*             nResolution: Numero correspondente a resolucao
*                             que se desenhou inicialmente a tela.
*
*********************************************************************
function display(  oWnd, nResolution )
  local lAutoresize:=.t. , nWhatSize:=0, lRepaint:=.t.
 
 * atencao: nResolution identifica em que resolucao foram inicialmente
 *          desenhadas as telas, e DEVE ter um dos seguintes valores:
 *
 *  1 =  640 X 480
 *  2 =  800 X 600
 *  3 = 1024 X 768
 *  4 = 1152 X 864
 *  5 = 1280 X 800
 *  6 = 1280 X 1024
 *  7 = 1600 X 1200
 *  8 =  768 X 1024
 *  9 = 1440 X 900
 * 10 = 1280 X 768
 * 11 = 1280 X 720

 AutResiz( lAutoresize, nWhatSize, oWnd, nResolution, lRepaint )

return nil



/*
(20/08/2009) Inicio do REdesenvolvimento da funcao.
Parametros recebidos :

lAutoresize: ativa / desativa redimensionamento automatico

nWhatSize:   permite for‡ar o redimensionamento a valores concretos;
             permitindo desta maneira que a aplica‡ao possa ter um valor
             ao qual redimensionar as telas.

oWnd:        Objeto/janela/dialogo/controle a ser redimensionado.

nResolution: Numero que identifica que resolucao tinha a tela na qual
             se desenhou o objeto.

lRepaint:    Indicador se deve repintar o objeto uma vez redimensionado.

Esta funcao deve ser utilizada no evento ON INIT do ACTIVATE das WINDOWs
           e DIALOGs .

Exemplo:

ACTIVATE DIALOG oDlg ON INIT display(oDlg,2) //desenhada em 800 X 600


-* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -*
*/




FUNCTION AutResiz( lAutoresize, nWhatSize, oWnd, nResolution, lRepaint )

// Resolucao da tela no momento de definir os controles.
Local nOriWidth, nOriHeight

// o normal seria que fosse a resolucao atual da tela (nWhatSize=0).
// Se permite forcar esta resolucao mediante o valor de nWhatSize=1,2,3,4,5,6,7,....
Local nWidth, nHeight

// Sao as relacoes entre a resolucao de tela e a resolucao de desenho.
Local nFactorWitdh, nFactorHeight

Local nContador,ofonttmp

DEFAULT lRepaint := .T.

nOriWidth := 0
nOriHeight := 0
nWidth := 0
nHeight := 0
nContador := 0

If ABS(nResolution) = 1
   nOriWidth := 640
   nOriHeight := 480
ElseIf ABS(nResolution) = 2
   nOriWidth := 800
   nOriHeight := 600
ElseIf ABS(nResolution) = 3
   nOriWidth := 1024
   nOriHeight := 768
ElseIf ABS(nResolution) = 4
   nOriWidth := 1152
   nOriHeight := 864
ElseIf ABS(nResolution) = 5
   nOriWidth := 1280
   nOriHeight := 800
ElseIf ABS(nResolution) = 6
   nOriWidth := 1280
   nOriHeight := 1024
ElseIf ABS(nResolution) = 7
   nOriWidth := 1600
   nOriHeight := 1200
ElseIf ABS(nResolution) = 8
   nOriWidth := 768
   nOriHeight := 1024
ElseIf ABS(nResolution) = 9
   nOriWidth := 1440
   nOriHeight := 900
ElseIf ABS(nResolution) = 10
   nOriWidth := 1280
   nOriHeight := 768
ElseIf ABS(nResolution) = 11
   nOriWidth := 1280
   nOriHeight := 720

Else
   ScrResolution( @nOriWidth, @nOriHeight )
Endif


If nWhatSize = 1
   nWidth := 640
   nHeight := 480
ElseIf nWhatSize = 2
   nWidth := 800
   nHeight := 600
ElseIf nWhatSize = 3
   nWidth := 1024
   nHeight := 768
ElseIf nWhatSize = 4
   nWidth := 1152
   nHeight := 864
ElseIf nWhatSize = 5
   nWidth := 1280
   nHeight := 800
ElseIf nWhatSize = 6
   nWidth := 1280
   nHeight := 1024
ElseIf nWhatSize = 7
   nWidth := 1600
   nHeight := 1200
ElseIf nWhatSize = 8
   nWidth := 768
   nHeight := 1024
ElseIf nWhatSize = 9
   nWidth := 1440
   nHeight := 900
ElseIf nWhatSize = 10
   nWidth := 1280
   nHeight := 768
ElseIf nWhatSize = 11
   nWidth := 1280
   nHeight := 720

Else

   ScrResolution( @nWidth, @nHeight )

Endif


If lAutoresize .and. nOriHeight != nHeight

   /* Este sera o caso habitual, ao qual se pretende redimensionar
   os controles na resolucao da tela na qual estao viendo. */


   If nResolution > 0

     nFactorWitdh := nWidth / nOriWidth
     nFactorHeight := nHeight / nOriHeight

   ElseIf nResolution < 0

     nFactorWitdh := nOriWidth / nWidth
     nFactorHeight := nOriHeight / nHeight

   EndIf

   If lRepaint
      oWnd:Hide()
   EndIf


   * se aumentou a altura
   If nFactorHeight > 1

     *****************************
     * se tiver barbutton * NOVO *
     *****************************
     if ownd:obar <> NIL
         ownd:obar:nwidth:=ownd:obar:nwidth* nfactorwitdh
         ownd:obar:nHeight:=ownd:obar:nHeight*nfactorheight
         ownd:obar:nbtnwidth:=ownd:obar:nbtnwidth*nfactorwitdh
         ownd:obar:nbtnHeight:=ownd:obar:nbtnHeight*nfactorheight
         for i= 1 to len(ownd:obar:acontrols)
             ownd:obar:acontrols[i]:Move( ownd:obar:acontrols[i]:nTop * nFactorHeight , ;
             ownd:obar:acontrols[i]:nLeft * nFactorWitdh, ;
             ownd:obar:acontrols[i]:nWidth * nFactorWitdh, ;
             ownd:obar:acontrols[i]:nHeight * nFactorHeight , ;
             .F. )
         next
         ownd:obar:refresh()
     endif


     If oWnd:ClassName()$"/TIMAGE/"

        ad:=getcoors(ownd:hWnd)
        oWnd:Move( oWnd:nTop * nFactorHeight , ;
        oWnd:nLeft * nFactorWitdh, ;
        ((ad[4]-ad[2])) * nFactorWitdh, ;
        ((ad[3]-ad[1])) * nFactorHeight , ;
        .F. )

     Else

         oWnd:Move( oWnd:nTop * nFactorHeight , ;
         oWnd:nLeft * nFactorWitdh, ;
         oWnd:nWidth * nFactorWitdh, ;
         oWnd:nHeight * nFactorHeight , ;
         .F. )

     EndIf
   EndIf



   if oWnd:ClassName()$"/TFOLDER/TPAGES/"

      If ValType( oWnd:aDialogs ) = "A"
        For nContador := 1 To Len( oWnd:aDialogs )
         AutResiz( lAutoresize, nWhatSize, oWnd:aDialogs[nContador], nResolution, .F. )
        EndFor
      EndIf

   elseif oWnd:ClassName()$"/TCOMBOBOX/TDBCOMBO/"


   Else
      If ValType( oWnd:aControls ) = "A"
        For nContador := 1 To Len( oWnd:aControls )

            AutResiz( lAutoresize, nWhatSize, oWnd:aControls[nContador], nResolution, .F. )

            * ajuste de fontess
            * controle TSAY
            if ownd:acontrols[nContador]:classname$"/TSAY/TSAYREF/"
               ajustaalt(ownd:acontrols[nContador],nfactorheight)
               ajustalarg(ownd:acontrols[nContador],ownd,nfactorwitdh)

            ELSEif ownd:acontrols[nContador]:classname$"/TGET/TSSAY/TDSAY/"
               ajustaalt(ownd:acontrols[nContador],nfactorheight)
               aj_get(ownd:acontrols[nContador],nFactorWitdh)

            ELSEif ownd:acontrols[nContador]:classname$"/TFOLDER/TPAGES/TCOMBOBOX/TGROUP/TTREE/TCHECKBOX/TBTNBMP/TTOOLBAR/TRADIO/TDBCOMBO/TTABS/"
               aja_FLD(ownd:acontrols[nContador],nFactorHeight)
               ajl_FLD(ownd:acontrols[nContador],nFactorWitdh)
            ELSEif ownd:acontrols[nContador]:classname$"/TXBROWSE/"
               aja_XBRW(ownd:acontrols[nContador],nFactorHeight)
               ajl_XBRW(ownd:acontrols[nContador],nFactorWitdh)
            ELSEif ownd:acontrols[nContador]:classname$"/TSBROWSE/"
               aja_TSB(ownd:acontrols[nContador],nFactorHeight)
               ajl_TSB(ownd:acontrols[nContador],nFactorWitdh)
            ELSEif ownd:acontrols[nContador]:classname$"/TWBROWSE/"
               aja_OLBX(ownd:acontrols[nContador],nFactorHeight)
               ajl_OLBX(ownd:acontrols[nContador],nFactorWitdh)
            endif

        EndFor
      EndIf
   EndIf

   * se diminuiu a altura
   If nFactorHeight < 1

      * AINDA NAO TESTADO, PODE HAVER ERROS !!!  

     *****************************
     * se tiver barbutton * NOVO *
     *****************************
     if ownd:obar <> NIL
         ownd:obar:nwidth:=ownd:obar:nwidth* nfactorwitdh
         ownd:obar:nHeight:=ownd:obar:nHeight*nfactorheight
         ownd:obar:nbtnwidth:=ownd:obar:nbtnwidth*nfactorwitdh
         ownd:obar:nbtnHeight:=ownd:obar:nbtnHeight*nfactorheight
         for i= 1 to len(ownd:obar:acontrols)
             ownd:obar:acontrols[i]:Move( ownd:obar:acontrols[i]:nTop * nFactorHeight , ;
             ownd:obar:acontrols[i]:nLeft * nFactorWitdh, ;
             ownd:obar:acontrols[i]:nWidth * nFactorWitdh, ;
             ownd:obar:acontrols[i]:nHeight * nFactorHeight , ;
             .F. )

             * redimensiona o BMP da BARBUTTON
             o:=ownd:obar:acontrols[i]:hbitmap1
             if o<>0
                hbmp:=ownd:obar:acontrols[i]:hbitmap1
                nbmpwidth := nbmpwidth(hbmp)
                nbmpheight:= nbmpheight(hbmp)  
                larg:=nbmpwidth*nfactorwitdh
                alt:=nbmpheight*nfactorheight
                o:=resizebmp(o,larg ,alt )
                ownd:obar:acontrols[i]:hbitmap1:=o
             endif  
         next
         ownd:obar:refresh()
     endif
     ***************************************

      if oWnd:ClassName()$"/TIMAGE/"

        ad:=getcoors(ownd:hWnd)
        oWnd:Move( oWnd:nTop * nFactorHeight , ;
        oWnd:nLeft * nFactorWitdh, ;
        ((ad[4]-ad[2])) * nFactorWitdh, ;
        ((ad[3]-ad[1])) * nFactorHeight , ;
        .F. )

      Elseif oWnd:ClassName()$"/TBTNBMP/"

         oWnd:Move( oWnd:nTop * nFactorHeight , ;
         oWnd:nLeft * nFactorWitdh, ;
         oWnd:nWidth * nFactorWitdh, ;
         oWnd:nHeight * nFactorHeight , ;
         .F. )

         *********************************
         * redimensiona o BMP do BTNBMP
         o:=oWnd:hbitmap1
         if o<>0
            hbmp:=ownd:hbitmap1
            nbmpwidth := nbmpwidth(hbmp)
            nbmpheight:= nbmpheight(hbmp)  
            larg:=nbmpwidth*nfactorwitdh
            alt:=nbmpheight*nfactorheight
            o:=resizebmp(o,larg ,alt )
            oWnd:hbitmap1:=o
         endif
         *********************************


      Else


         oWnd:Move( oWnd:nTop * nFactorHeight , ;
         oWnd:nLeft * nFactorWitdh, ;
         oWnd:nWidth * nFactorWitdh, ;
         oWnd:nHeight * nFactorHeight , ;
         .F. )

      endif

            if ownd:classname$"/TSAY/TSAYREF/"
               ajustaalt(ownd,nfactorheight)
               ajustalarg(ownd,ownd,nfactorwitdh)
           
            ELSEif ownd:classname$"/TGET/TSSAY/TDSAY/"
               ajustaalt(ownd,nfactorheight)
               aj_get(ownd,nFactorWitdh)
            ELSEif ownd:classname$"/TFOLDER/TPAGES/TCOMBOBOX/TGROUP/TTREE/TCHECKBOX/TBTNBMP/TTOOLBAR/TRADIO/TDBCOMBO/TTABS/"
               aja_FLD(ownd,nFactorHeight)
               ajl_FLD(ownd,nFactorWitdh)
*            ELSEif ownd:classname$"/TXBROWSE/"
*               aja_XBRW(ownd,nFactorHeight)
*               ajl_XBRW(ownd,nFactorWitdh)
*            ELSEif ownd:classname$"/TSBROWSE/"
*               aja_TSB(ownd,nFactorHeight)
*               ajl_TSB(ownd,nFactorWitdh)

            ELSEif ownd:classname$"/TWBROWSE/"
               aja_OLBX(ownd,nFactorHeight)
               ajl_OLBX(ownd,nFactorWitdh)


            endif


      **endif

   EndIf

   If lRepaint

      if oWnd:lCentered   // *** AAA ***//
         oWnd:Center()    // *** AAA ***//
      endif               // *** AAA ***//

      oWnd:Show()

   EndIf

    ***************************************
    * se for resolucao igual a que desenhou
    ***************************************
elseif lAutoresize .and. nOriHeight = nHeight

   If nResolution > 0
      nFactorWitdh := nWidth / nOriWidth
      nFactorHeight := nHeight / nOriHeight
   ElseIf nResolution < 0
      nFactorWitdh := nOriWidth / nWidth
      nFactorHeight := nOriHeight / nHeight
   EndIf

   If oWnd:ClassName()$"/TFOLDER/TPAGES/"
      If ValType( oWnd:aDialogs ) = "A"
        For nContador := 1 To Len( oWnd:aDialogs )
         AutResiz( lAutoresize, nWhatSize, oWnd:aDialogs[nContador], nResolution, .F. )
        EndFor
      EndIf
   elseif oWnd:ClassName()$"/TIMAGE/"    //TBITMAP/TLISTBOX/TWBROWSE/TSSAY/TDSAY/TSAYREF/"    
       ad:=getcoors(ownd:hWnd)
       oWnd:Move( oWnd:nTop * nFactorHeight , ;
       oWnd:nLeft * nFactorWitdh, ;
       ((ad[4]-ad[2])) * nFactorWitdh, ;
       ((ad[3]-ad[1])) * nFactorHeight , ;
       .F. )

   elseif oWnd:ClassName()$"/TCOMBOBOX/TDBCOMBO/"


   Else
      If ValType( oWnd:aControls ) = "A"
        For nContador := 1 To Len( oWnd:aControls )

            AutResiz( lAutoresize, nWhatSize, oWnd:aControls[nContador], nResolution, .F. )

            * ajuste de fontes
            * controle TSAY
            if ownd:acontrols[nContador]:classname$"/TSAY/TSAYREF/"
               ajustaalt(ownd:acontrols[nContador],nfactorheight)
               ajustalarg(ownd:acontrols[nContador],ownd,nfactorwitdh)
            ELSEif ownd:acontrols[nContador]:classname$"/TGET/TSSAY/TDSAY/"
               ajustaalt(ownd:acontrols[nContador],nfactorheight)
               aj_get(ownd:acontrols[nContador],nFactorWitdh)
            ELSEif ownd:acontrols[nContador]:classname$"/TFOLDER/TPAGES/TCOMBOBOX/TGROUP/TTREE/TCHECKBOX/TBTNBMP/TTOOLBAR/TRADIO/TDBCOMBO/TTABS/"
               aja_FLD(ownd:acontrols[nContador],nFactorHeight)
               ajl_FLD(ownd:acontrols[nContador],nFactorWitdh)
            ELSEif ownd:acontrols[nContador]:classname$"/TXBROWSE/"
               aja_XBRW(ownd:acontrols[nContador],nFactorHeight)
               ajl_XBRW(ownd:acontrols[nContador],nFactorWitdh)
            ELSEif ownd:acontrols[nContador]:classname$"/TSBROWSE/"
               aja_TSB(ownd:acontrols[nContador],nFactorHeight)
               ajl_TSB(ownd:acontrols[nContador],nFactorWitdh)
            ELSEif ownd:acontrols[nContador]:classname$"/TWBROWSE/"
               aja_OLBX(ownd:acontrols[nContador],nFactorHeight)
               ajl_OLBX(ownd:acontrols[nContador],nFactorWitdh)
            endif

        EndFor
      EndIf
   EndIf

EndIf

Return Nil




FUNCTION AjustaLarg(oq,ownd,nfact)
   * se nao tiver fonte atribuida, nao faz !
   LOCAL cFontName  := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL   lFlagReleaseFont   := .F.,;
      nAlturaDaFonte,;
      nLarguraDaFonte    := oq:ofont:nwidth,;
      nLarguraDoControle ,;
      nTime              := SECONDS()+3,;
      oFontTmp,ofont

   if cFontName="NAOFAZ"
      return nil
   endif

      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//

   nAlturaDaFonte     := oq:oFont:nHeight
   nLarguraDoControle := oq:nWidth
   nlarguradafonte:=nlarguradafonte*nfact

   WHILE SECONDS() < nTime  // Evita congelamento da aplicação caso não seja possível recalcular a fonte

      nLarguraDaFonte += 1  // Nao funciona com numeros facionados

      DEFINE FONT oFontTmp;
             NAME cFontName;
             SIZE nLarguraDaFonte,ABS(nAlturaDaFonte)

      lFlagReleaseFont := .T.
 
      IF oWnd:GetWidth(oq:varget(),oFontTmp) >= nLarguraDoControle
         EXIT
      ENDIF

      oq:SetFont(oFontTmp)
      oFont := oq:ofont   //osay:GetFont()

      RELEASE FONT oFontTmp
      lFlagReleaseFont := .F.

   ENDDO

   IF lFlagReleaseFont
      RELEASE FONT oFontTmp
   ENDIF

   oq:SetFont(oFont)

*   oq:Refresh()

RETURN NIL


FUNCTION AjustaAlt(oq,fact)
   * se nao tiver fonte , nao faz !
   LOCAL cFontName  := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL lFlagReleaseFont   := .F., nAlturaDaFonte, nAlturaDoControle  
   LOCAL nLarguraDaFonte,  nTime:= SECONDS()+3, oFontTmp,ofont

   * se nao tiver fonte, volta sem ajustar
   if cfontname="NAOFAZ"
      return nil
   endif

   nAlturaDaFonte:=oq:ofont:nheight

      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
       

   * se tiver fonte , ajusta
   nAlturaDoControle  := (oq:nHeight)-6

   nLarguraDaFonte    := oq:oFont:nWidth

   nAlturadaFonte:=nalturadafonte*fact

   WHILE SECONDS() < nTime  // Evita congelamento da aplicação caso não seja possível recalcular a fonte

      nAlturaDaFonte += 0.1 // Na altura o fracionamento funcionou

      DEFINE FONT oFontTmp;
             NAME cFontName;
             SIZE nLarguraDaFonte,nAlturaDaFonte

      lFlagReleaseFont := .T.

      IF oFontTmp:nHeight >= nAlturaDoControle
         EXIT
      ENDIF

      oq:SetFont(oFontTmp)
      oFont := oq:ofont    //oSay:GetFont()

      RELEASE FONT oFontTmp
      lFlagReleaseFont := .F.

   ENDDO

   IF lFlagReleaseFont
      RELEASE FONT oFontTmp
   ENDIF

   oq:SetFont(oFont)

*    oq:Refresh()


RETURN NIL




FUNCTION Aj_get(oq,nf)
   * se nao tiver fonte , nao faz
   LOCAL cFontName := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   Local lFlagReleaseFont   := .F., nAlturaDaFonte ,;
         nLarguraDaFonte    := 0, nLarguraDoControle ,  nTime := SECONDS()+3,;
         oFontTmp,ofont

      if cfontname="NAOFAZ"
         return nil
      endif


      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
       

      nLarguraDoControle := oq:nWidth

      nAlturaDaFonte     := oq:oFont:nHeight
      nLarguraDaFonte = nLarguraDaFonte*nf

      DEFINE FONT oFontTmp;
             NAME cFontName;
             SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)

      oq:SetFont(oFontTmp)
      oFont := oq:ofont   //osay:GetFont()

   RELEASE FONT oFontTmp

   if oq:classname$"/TDSAY/"
      oq:Refresh()
   endif


RETURN NIL



FUNCTION ajl_FLD(oq,nf)
   * se nao tiver fonte , nao faz
   LOCAL cFontName := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL lFlagReleaseFont   := .F., nAlturaDaFonte, nLarguraDaFonte := 0,;
         nLarguraDoControle ,nTime:= SECONDS()+3, oFontTmp,ofont
 
      if cfontname="NAOFAZ"
         return nil
      endif

      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
       

      nLarguraDoControle := oq:nWidth
      nAlturaDaFonte     := oq:oFont:nHeight
      nLarguraDaFonte = nLarguraDaFonte*nf

      DEFINE FONT oFontTmp;
             NAME cFontName;
             SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)

      oq:SetFont(oFontTmp)
      oFont := oq:ofont   //osay:GetFont()

   RELEASE FONT oFontTmp

*   oq:Refresh()

RETURN NIL



FUNCTION aja_FLD(oq,nf)
   LOCAL cFontName := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL lFlagReleaseFont := .F., nAlturaDaFonte := 0,;
         nLarguraDaFonte, oFontTmp,ofont

      if cfontname="NAOFAZ"
         return nil
      endif

      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
       
      nLarguraDaFonte := oq:oFont:nWidth
      nAlturadaFonte:=nalturadafonte*nf

      DEFINE FONT oFontTmp;
             NAME cFontName;
             SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)

      oq:SetFont(oFontTmp)
      oFont := oq:ofont   //osay:GetFont()

   RELEASE FONT oFontTmp

*   oq:Refresh()

RETURN NIL



FUNCTION ajl_XBRW(oq,nf)
   * se nao tiver fonte, nao faz !
   LOCAL cFontName := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL lFlagReleaseFont := .F., nAlturaDaFonte,;
         nLarguraDaFonte  := 0, nLarguraDoControle, nTime := SECONDS()+3,;
         oFontTmp,ofont
 
   if cfontname="NAOFAZ"
      return nil
   endif


      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
       

   nLarguraDoControle := oq:nWidth
   nAlturaDaFonte     := oq:oFont:nHeight
   nLarguraDaFonte = nLarguraDaFonte*nf


   DEFINE FONT oFontTmp;
          NAME cFontName;
          SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)

   oq:SetFont(oFontTmp)

   for i=1 to len(oq:acols)
       * redimensiona fontes do xbrw
       oq:acols[i]:odatafont :=oFontTmp
       oq:acols[i]:oHeaderFont:=ofontTmp
       oq:acols[i]:oFooterFont:=oFontTmp
   next

   RELEASE FONT oFontTmp

*   oq:Refresh()

RETURN NIL



FUNCTION aja_XBRW(oq,nf)
   * se nao tiver fonte, nao faz !
   LOCAL cFontName := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL lFlagReleaseFont   := .F., nAlturaDaFonte     := 0,;
         nLarguraDaFonte  , oFontTmp,ofont

   if cfontname="NAOFAZ"
      return nil
   endif

      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
     

   nLarguraDaFonte    := oq:oFont:nWidth
   nAlturadaFonte:=nalturadafonte*nf

   DEFINE FONT oFontTmp;
             NAME cFontName;
             SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)

   oq:SetFont(oFontTmp)

   oFont := oq:ofont   //osay:GetFont()

   RELEASE FONT oFontTmp

   * redimensiona as colunas do Xbrw
   if nf=1
      nf:=1.2
   endif

   for i=1 to len(oq:acols)

       * pega tamanho anterior X factor
       ov:=oq:aCols[i]:nWidth * nf
       * atualiza o novo tamanho da coluna
       oq:aCols[i]:nWidth := ov

   next

   oq:nStretchcol:=STRETCHCOL_LAST

*   oq:Refresh()

RETURN NIL


FUNCTION aja_OLBX(oq,nf)
   * se nao tiver fonte, nao faz !
   LOCAL cFontName := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL lFlagReleaseFont   := .F.,  nAlturaDaFonte     := 0,;
         nLarguraDaFonte  , oFontTmp,ofont

   if cfontname="NAOFAZ"
      return nil
   endif

      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
       
   nLarguraDaFonte    := oq:oFont:nWidth
   nAlturadaFonte:=nalturadafonte*nf

   DEFINE FONT oFontTmp;
             NAME cFontName;
             SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)

   oq:SetFont(oFontTmp)

   oFont := oq:ofont   //osay:GetFont()

   RELEASE FONT oFontTmp

   * redimensiona as colunas do Xbrw
   if nf=1
      nf:=1.2
   endif

*   oq:Refresh()

RETURN NIL



FUNCTION ajl_OLBX(oq,nf)
   * se nao tiver fonte, nao faz !
   LOCAL cFontName := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL lFlagReleaseFont := .F., nAlturaDaFonte,;
         nLarguraDaFonte := 0, nLarguraDoControle,;
         nTime := SECONDS()+3, oFontTmp,ofont


   if cfontname="NAOFAZ"
      return nil
   endif

      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
       
   nLarguraDoControle := oq:nWidth
   nAlturaDaFonte     := oq:oFont:nHeight
   nLarguraDaFonte = nLarguraDaFonte*nf


   DEFINE FONT oFontTmp;
          NAME cFontName;
          SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)

   oq:SetFont(oFontTmp)

   * atualiza a largura das colunas
   for i=1 to len(oq:acolsizes)

       oq:acolsizes[i]:=oq:acolsizes[i]*nf

   next

   RELEASE FONT oFontTmp

*   oq:Refresh()

RETURN NIL



FUNCTION Ajustal_ds(oq)
   LOCAL cFontName := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL lFlagReleaseFont   := .F., nAlturaDaFonte     := 0,;
         nAlturaDoControle , nLarguraDaFonte , nTime := SECONDS()+3,;
         oFontTmp,ofont

   if cfontname="NAOFAZ"
      return nil
   endif

      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
       
   nLarguraDaFonte    := oq:oFont:nWidth
   nAlturaDoControle  := (oq:nHeight)-6

   WHILE SECONDS() < nTime  // Evita congelamento da aplicação caso não seja possível recalcular a fonte

      nAlturaDaFonte += 0.1 // Na altura o fracionamento funcionou

      DEFINE FONT oFontTmp;
             NAME cFontName;
             SIZE nLarguraDaFonte,nAlturaDaFonte
     
      lFlagReleaseFont := .T.

      IF oFontTmp:nHeight >= nAlturaDoControle
         EXIT
      ENDIF

      oq:SetFont(oFontTmp)
      oFont := oq:ofont  

      RELEASE FONT oFontTmp
      lFlagReleaseFont := .F.

   ENDDO

   IF lFlagReleaseFont
      RELEASE FONT oFontTmp
   ENDIF

   oq:SetFont(oFont)
*   oq:Refresh()

RETURN NIL




* ajusta altura tsbrowse
FUNCTION aja_TSB(oq,nf)
   LOCAL cFontName := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL lFlagReleaseFont := .F., nAlturaDaFonte := 0,;
          nLarguraDaFonte, oFontTmp,ofont

   if cfontname="NAOFAZ"
      return nil
   endif


      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
       
   nLarguraDaFonte    := oq:oFont:nWidth
   nAlturadaFonte:=nalturadafonte*nf

   DEFINE FONT oFontTmp;
             NAME cFontName;
             SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)

   oq:SetFont(oFontTmp)

   oFont := oq:ofont   //osay:GetFont()

   RELEASE FONT oFontTmp

   * redimensiona as colunas do Xbrw
   if nf=1
      nf:=1.2
   endif

   for i=1 to len(oq:acolumns)
       * pega tamanho anterior X factor
       ov:=oq:nHeightCell * nf
       * atualiza o novo tamanho da coluna
       oq:nHeightCell := ov
       oq:nheightHead:=oq:nheightHead*nf
       oq:nheightFoot:=oq:nheightFoot*nf
   next

*   oq:Refresh()

RETURN NIL



* ajusta largura tsbrowse
FUNCTION ajl_TSB(oq,nf)
   * se nao tiver fonte , nao faz !
   LOCAL cFontName := iif ( oq:oFont=NIL , "NAOFAZ" ,oq:oFont:cFaceName )
   LOCAL lFlagReleaseFont   := .F., nAlturaDaFonte ,;
      nLarguraDaFonte    := 0,;
      nLarguraDoControle , nTime := SECONDS()+3, oFontTmp,ofont

   if cfontname="NAOFAZ"
      return nil
   endif

      if oq:oFont:nWidth = NIL    // *** AAA ***//
         oq:oFont:nWidth := 0     // *** AAA ***//
      endif                       // *** AAA ***//
       

   nLarguraDoControle := oq:nWidth
   nAlturaDaFonte     := oq:oFont:nHeight
   nLarguraDaFonte = nLarguraDaFonte*nf

   DEFINE FONT oFontTmp;
          NAME cFontName;
          SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)

   oq:SetFont(oFontTmp)

   for i=1 to len(oq:acolumns)

       * redimensiona fontes do tsbrowse
       oq:acolumns[i]:oFont :=oFontTmp
       oq:acolumns[i]:oFontHead:=ofontTmp
       oq:acolumns[i]:oFontFoot:=oFontTmp

       * reajusta a largura fo sbrowse
       oq:acolsizes[i]:=oq:acolsizes[i]*nf

   next

   RELEASE FONT oFontTmp

*   oq:Refresh()

RETURN NIL






Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Consulta de dialogos para Antonio

Postby lubin » Thu Oct 13, 2011 8:29 pm

Buenas tardes

Fue posible ver alguna alternativa respecto a este tema, ??? por favor seria buena su implementacion via un set directo a toda la aplicaicon en forma global.

creo que ya comente que mienstras tanto a todos los dialogos le he puesto un objeto oFont declarado publicamente para toda la aplicacion y al momento de definir el dialogo se lo aplico... al menos funciona. se logra agrandar algo la letra pero no me soluciona el problema de redimensionar todo el dialogo por que si se agranda mucho la letra se distrosiona el dialogo..

Gracias.

Lubin
User avatar
lubin
 
Posts: 439
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: Consulta de dialogos para Antonio

Postby Marcelo Roggeri » Thu Aug 23, 2012 5:58 pm

Hola Lucas queria saber esa funcion de display(oWnd,nResolution) y ABS(nResolution) a quien pertenecen porque estoy haciendo pruebas y me faltan esas funciones. Tambien queria saber si se puede redimensionar los dialogos y que de acuerdo a la resolucion se ajuste todo automaticamente?
Muchas gracias de antemano.
Marcelo
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 325
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 13 guests