Jump to content
Fivewin Brasil

Ladinilson

Membros
  • Posts

    523
  • Joined

  • Last visited

  • Days Won

    9

Posts posted by Ladinilson

  1. Fiz uma Dialog e depois uma outra dialog em cima e obtive essse efeito...

    aG2jlyR.jpg

    Na dialog usei uma transparência que o efeito ficou muito bom.


    Na primeira Dialog...

       FUNCTION VENDA()
       LSFundoTela := "C:\FUNDOEMPRESA\FUNDO.JPG"
       DEFINE IMAGE oBmpLS  FILE  LSFundoTela
       DEFINE DIALOG TelMCaixa1 RESOURCE 'pedidosm3A' TITLE 'Vendas' FONT oFont COLOR nRGB(255, 255,255),RGB(255,255,255)
    
       TelMCaixa1:bPainted   := { | hDC | PalBmpDraw( hDC, 0, 0, oBmpLS:hBitmap ,;            
       oBmpLS:hPalette,                                               ;
       TelMCaixa1:nWidth,                                     ;
       TelMCaixa1:nHeight ) }      
     
       TelMCaixa1:bStart := { || VENDA2(),TelMCaixa1:END()  }                                
          
       ACTIVATE DIALOG TelMCaixa1 ON INIT DISPLAYT(TelMCaixa1,vFatorTVen,.f.) CENTER 

     

    Na segunda Dialog...

    FUNCTION VENDA2()
    DEFINE DIALOG TelMCaixa RESOURCE 'pedidos' TITLE 'Vendas' 
    
    TelMCaixa:nOpacity = 200 
    
    ACTIVATE DIALOG TelMCaixa ON INIT DISPLAYT(TelMCaixa,vFatorTVen,.f.) CENTER 

     

    Lembrando que as Dialogs tem que ter o mesmo tamanho e para isso uso o no ACTIVE como:

    ON INIT DISPLAYT(TelMCaixa1,vFatorTVen,.f.)

    #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 displayT(  oWnd, nResolution, lFullres )
      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, lFullres )
    
    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.
    
    lFullres:   Indica se os textos devem ser redimensionados no tamanho maximo
                do resource desenhado.
                
    
    Esta funcao deve ser utilizada no evento ON INIT do ACTIVATE das WINDOWs 
               e DIALOGs .
    
    Exemplo:
    
    ACTIVATE DIALOG oDlg ON INIT display(oDlg,2,.t.) //desenhada em 800 X 600
    
    
    -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -*
    */
    
    
    
    FUNCTION AutResiz( lAutoresize, nWhatSize, oWnd, nResolution, lRepaint,lFullres )
    
    // 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
    ElseIf ABS(nResolution) = 12
       nOriWidth  := 2560
       nOriHeight := 1440
       // 12      2560 x 1440       0.92%
    ElseIf ABS(nResolution) = 13
       nOriWidth  := 2560
       nOriHeight := 1600
       // 13      2560x1600 8:5 WQXGA     0.05%
    ElseIf ABS(nResolution) = 14
       nOriWidth  := 1920
       nOriHeight := 1080
       //14      1920x1080 16:9 HD 1080  10.97%
    ElseIf ABS(nResolution) = 15
       nOriWidth  := 1680
       nOriHeight := 1050
       //15   1680x1050 8:5 WSXGA+    3.29%
    ElseIf ABS(nResolution) = 16
       nOriWidth  := 1366
       nOriHeight :=  768
       // 16      1366x768 HD     22.98%
    ElseIf ABS(nResolution) = 17
       nOriWidth  := 1360
       nOriHeight :=  768
       //17      1360x768        2.33%
    ElseIf ABS(nResolution) = 18
       nOriWidth  := 1280
       nOriHeight := 1080
       // 18    1280x1080       0.001%
    ElseIf ABS(nResolution) = 19
       nOriWidth  := 1280
       nOriHeight :=  960
       // 19      1280x960        0.46%
    ElseIf ABS(nResolution) = 20
       nOriWidth  := 1280
       nOriHeight :=  600
       // 20     1280x600        0.01%
    ElseIf ABS(nResolution) = 21
       nOriWidth  :=  720
       nOriHeight :=  480
       // 21 720x480 3:2 NTSC        0.001%
    
    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
    ElseIf nWhatSize = 12
       nWidth  := 2560
       nHeight := 1440
       // 12      2560 x 1440       0.92%
    ElseIf nWhatSize = 13
       nWidth  := 2560
       nHeight := 1600
       // 13      2560x1600 8:5 WQXGA     0.05%
    ElseIf nWhatSize = 14
       nWidth  := 1920
       nHeight := 1080
       //14      1920x1080 16:9 HD 1080  10.97%
    ElseIf nWhatSize = 15
       nWidth  := 1680
       nHeight := 1050
       //15   1680x1050 8:5 WSXGA+    3.29%
    ElseIf nWhatSize = 16
       nWidth  := 1366
       nHeight :=  768
       // 16      1366x768 HD     22.98%
    ElseIf nWhatSize = 17
       nWidth  := 1360
       nHeight :=  768
       //17      1360x768        2.33%
    ElseIf nWhatSize = 18
       nWidth  := 1280
       nHeight := 1080
       // 18    1280x1080       0.001%
    ElseIf nWhatSize = 19
       nWidth  := 1280
       nHeight :=  960
       // 19      1280x960        0.46%
    ElseIf nWhatSize = 20
       nWidth  := 1280
       nHeight :=  600
       // 20     1280x600        0.01%
    ElseIf nWhatSize = 21
       nWidth  :=  720
       nHeight :=  480
       // 21 720x480 3:2 NTSC        0.001%
    
    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. )
                 * 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. )
    
         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.,lFullres )
            EndFor
          EndIf
    
    
          Elseif oWnd:ClassName()$"/TBTNBMP/" 
    
             *********************************
             * 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
             *********************************
    
    
    
       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.,lFullres )
    
                * ajuste de fontess
                * controle TSAY
                if ownd:acontrols[nContador]:classname$"/TSAY/TSAYREF/"
                   ajustaalt(ownd:acontrols[nContador],nfactorheight,lFullres) 
                   ajustalarg(ownd:acontrols[nContador],ownd,nfactorwitdh,lFullres) 
    
                ELSEif ownd:acontrols[nContador]:classname$"/TGET/TSSAY/TDSAY/"
                   ajustaalt(ownd:acontrols[nContador],nfactorheight,lFullres) 
                   ajl_FLD(ownd:acontrols[nContador],nFactorWitdh) 
    
                ELSEif ownd:acontrols[nContador]:classname$"/TFOLDER/TPAGES/TCOMBOBOX/TGROUP/TTREE/TCHECKBOX/TBTNBMP/TTOOLBAR/TRADIO/TDBCOMBO/TTABS/TXBROWSE/TSBROWSE/TWBROWSE/"
                   aja_FLD(ownd:acontrols[nContador],nFactorHeight) 
                   ajl_FLD(ownd:acontrols[nContador],nFactorWitdh) 
                endif 
    
            EndFor
          EndIf
       EndIf
    
       * se diminuiu 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. )
    
                 * 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 ValType( oWnd:aControls ) <> "A"
    
                * ajuste de fontess
                * controle TSAY
                if ownd:classname$"/TSAY/TSAYREF/"
                   ajustaalt(ownd,nfactorheight,lFullres) 
                   ajustalarg(ownd,ownd,nfactorwitdh,lFullres) 
                ELSEif ownd:classname$"/TGET/TSSAY/TDSAY/"
                   ajustaalt(ownd,nfactorheight,lFullres) 
                   ajl_FLD(ownd,nFactorWitdh) 
    
                ELSEif ownd:classname$"/TFOLDER/TPAGES/TCOMBOBOX/TGROUP/TTREE/TCHECKBOX/TBTNBMP/TTOOLBAR/TRADIO/TDBCOMBO/TTABS/TXBROWSE/TSBROWSE/TWBROWSE/"
                   aja_FLD(ownd,nFactorHeight) 
                   ajl_FLD(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 lfullres
    
       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.,lfullres )
            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.,lfullres )
    
               * ajuste de fontes
                * controle TSAY
                if ownd:acontrols[nContador]:classname$"/TSAY/TSAYREF/"
                   ajustaalt(ownd:acontrols[nContador],nfactorheight,lFullres) 
                   ajustalarg(ownd:acontrols[nContador],ownd,nfactorwitdh,lFullres) 
                ELSEif ownd:acontrols[nContador]:classname$"/TGET/TSSAY/TDSAY/"
                   ajustaalt(ownd:acontrols[nContador],nfactorheight,lFullres) 
                   ajl_FLD(ownd:acontrols[nContador],nFactorWitdh) 
                ELSEif ownd:acontrols[nContador]:classname$"/TFOLDER/TPAGES/TCOMBOBOX/TGROUP/TTREE/TCHECKBOX/TBTNBMP/TTOOLBAR/TRADIO/TDBCOMBO/TTABS/TXBROWSE/TSBROWSE/TWBROWSE/"
                   aja_FLD(ownd:acontrols[nContador],nFactorHeight) 
                   ajl_FLD(ownd:acontrols[nContador],nFactorWitdh) 
    
                endif 
    
            EndFor
          EndIf
       EndIf
    
    endif
    EndIf
    
    Return Nil
    
    
    
    
    FUNCTION AjustaLarg(oq,ownd,nfact,lfullres)
       * 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
       nlarguradafonte:=nlarguradafonte*nfact
       nLarguraDoControle := oq:nWidth
    
    if lFullres
    
    
       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)
    else
    
    
          DEFINE FONT oFontTmp;
                 NAME cFontName;
                 SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)
    
          oq:SetFont(oFontTmp)
          oFont := oq:ofont   //osay:GetFont()
    
       RELEASE FONT oFontTmp
    
    
    endif
    
    
    
    *   oq:Refresh()
    
    RETURN NIL
    
    
    FUNCTION AjustaAlt(oq,fact,lFullres)
       * 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 
    
       if oq:oFont:nWidth = NIL    // *** AAA ***//
          oq:oFont:nWidth := 0     // *** AAA ***//
       endif                       // *** AAA ***//
    
       nAlturaDaFonte:=oq:ofont:nheight
    
    
    
    if lFullres
           
    
       * 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)
    else
    
          nLarguraDaFonte := oq:oFont:nWidth
          nAlturadaFonte:=nalturadafonte*fact 
    
          DEFINE FONT oFontTmp;
                 NAME cFontName;
                 SIZE abs(nLarguraDaFonte),ABS(nAlturaDaFonte)
    
          oq:SetFont(oFontTmp)
          oFont := oq:ofont   //osay:GetFont()
    
       RELEASE FONT oFontTmp
    
    
    endif
    
    *    oq:Refresh()
    
    
    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
    
    
       If oq:ClassName()$"/TXBROWSE/"
    
          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
    
       elseif oq:classname$"/TDSAY/"
    
          oq:Refresh()
    
       elseif  oq:ClassName()$"/TWBROWSE/"
    
          * atualiza a largura das colunas
          for i=1 to len(oq:acolsizes)
              oq:acolsizes[i]:=oq:acolsizes[i]*nf
          next
    
       endif
    
    *   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
    
       If oq:ClassName()$"/TXBROWSE/"
          oq:nRowHeight   :=   oq:nRowHeight* nf
          oq:nStretchcol:=STRETCHCOL_LAST
    
       elseif oq:ClassName()$"/TSBROWSE/"
    
          oq:nHeightCell:=oq:nHeightCell * nf
          *   oq:nheightHead:=oq:nheightHead*nf
          *   oq:nheightFoot:=oq:nheightFoot*nf
    
    
    
       endif
    
    *   oq:Refresh()
    
    RETURN NIL
    
    

    Espero que ajude!

    Abraços
     

  2. 22 horas atrás, emotta disse:

    Ladinilson comece a ver novas tecnologias como vscode, depois git e Github, depois docker, depois veja linguagens como python e rubi (rubi on rails)

    Todas que falei acima tem muito material no YouTube, é só começar. Não tem nada de tortura, pelo contrário, vc já roeu o osso com (x)harbour, vai por mim, é bem mais simples tudo que citei.

    Abraços 

     

    Amigo entendo pelo seu vasto conhecimento em várias linguagens mas a postagem do amigo é sobre IDADE e SAÚDE.
    Deves ser uma cara novo e entendo sua busca e estudo sobre outras linguagens mas quem é das antigas como eu que programei em dBase III depois mudei para o Clipper Summer 87 e em meados de 1992 conheci o Fivewin pela necessidade da plataforma gráfica, tive todo o tempo para estudar os botões, dialogs e penduricários pois tive uma grande alegria e esperança diga-se de passagem na linguagem a AGRADEÇO MUITO a ela e jamais iria diminuir a mesma que tento foi e é nossa "companheira".
    Imagine um sistema de automação comercial ter que mudar toda a linguagem, corrigir bugs e procurar bibliotecas que substitem as DLLs e LIBs da nossa vida além de ter clientes querendo sua caveira quando tudo trava ou o registro "some" como era um erro do xBase antes lembra?
    Pois é, essa postagem e sobre aposentadoria e não ter mais saúde e tempo para ficar madrugadas a fio na frente de um monitor.

    Abraços

  3. 44 minutos atrás, Luiz Fernando disse:

    Colega, quando vi sua mensagem, tomei a liberdade de visitar seu perfil no Facebook para descobrir sua idade. Rapaz, você é muito jovem para simplesmente parar tudo. Talvez você já tenha conquistado a tão almejada liberdade financeira e viver apenas de juros e renda de aluguéis, mas pense que ainda pode ter pela frente uns bons 30 anos de vida. Para isso, é importante ter novos desafios e metas.

    Sobre não ter mais ânimo para acompanhar as últimas evoluções do mercado, você precisa simplesmente começar. Assim que dominar uma nova ferramenta de programação, vai começar a se motivar de forma automática. Não é necessário trabalhar 10 horas por dia para isso; reduza sua jornada de trabalho, 6 horas no máximo por dia.

    O FiveWin foi muito bom para todos nós, mas não faz mais sentido usar essa ferramenta. Você vai ver que no mercado existem ferramentas muito, mas muito mais produtivas. Quando você se deparar com isso, pode ter certeza de que o ânimo e a empolgação irão aparecer de forma natural.

    Há pouco tempo atrás, eu também estava desanimado. Mexer com o FiveWin estava se tornando uma tortura, mas continuar ou não, não era uma escolha para mim, pois ainda não havia alcançado a liberdade financeira para isso. Aos poucos, comecei a mexer com outra ferramenta. Hoje, estou na fase final do meu novo sistema e, ao concluí-lo, começarei um novo desafio, dar início num projeto web.

    Cada situação é única, mas considerar mudar o local de trabalho pode ser benéfico. Se possível, experimente passar uma semana por mês em um ambiente diferente. Tenho feito isso recentemente e, desde que descobri o Airbnb, tenho alternado entre trabalhar em um prédio com vista para o mar e em um chalé com vista para as montanhas. Essa mudança tem sido muito positiva. É importante, no entanto, manter o foco e ter uma lista clara das tarefas a serem realizadas durante essa semana, para que a experiência não se torne apenas uma viagem a passeio. Além disso, aproveite ao máximo a inteligência artificial, pois é surpreendente como muitas pessoas ainda não estão utilizando essa ferramenta poderosa.

    E, por último, não se esqueça de pedir a orientação de Deus. É incrível como as coisas fluem naturalmente quando o fazemos.

    Abs

    Posso até entender que tudo gira em torno de ferramentas para acessar em qualquer lugar e em qualquer smartphone mas tenho como por exemplo, servidores em nuvens para isso e todos vocês conhecem ferramentas alternativas.
    Falo por mim como "desânimo", aprender quase 90% novamente de todo o conhecimento que tive durante a vida pois os comandos e sintaxes estão na mente e as linhas de código saem naturalmente mas a falta de tempo e idade para isso de desenvolver em outra ferramenta não nos permite mais e acho que pode ser um ponto do caso do amigo mas entendo a necessidade de inovações mas convenhamos...."tortura" é demais hein!

    Pra mim tortura e o que o João passa com o Corinthians dele! kkkk

  4. Bom dia,

    A todos queria dizer que quem desenvolveu seus produtos, ficará apenas no suporte pois a internet em banda larga facilitou MUITO nossa empreitada e acreditem, POUCAS PROFISSÕES podem lhe dar um certo "conforto" (mas é claro que devemos estar sempre de olho nas inovações)  pois acreditem, tem gente com sistemas em Clipper no DOS e até hoje ganham seu dinheiro apenas no suporte então o que seria "se aposentar".

    Obrigado

  5. 59 minutos atrás, kapiaba disse:

    Rapazinho, não sei nem o que você queria! Não entendi pohha nenhuma. kkkkkkkkk Mostre algo de concreto para os demais se um dia precisarem, já tem a resposta para a mesma dúvida que tivestes. Tú tá parecendo o Corinthians, todo "laskado". kkkkkkkkkkkkkkkkkkkkk

    Regards, saludos.

    Tudo bem sofredor kkk

       aEmpresa:= ""
       cQuery  := "SELECT * FROM serial WHERE serial_id = '123456789'" // <- Numero do seu serial   
       oSql:exec( cQuery,,.t.,@aEmpresa )
       vsenha  := aEmpresa[1][1]   // <- Verifica o campo senha para liberar (campo 1 do arquivo)
    
       XBROWSE(aEmpresa) // <- para ver todos os campos do SELECT que foram atribuídos para a array

    Regards, salutos.

     

  6. Bom dia senhores,

    Desculpem minha falta total de conhecimento em SQL mas queria ver o que esta errado na linha onde declaro a varável e se esta tudo errado kkk

    O intuito é filtrar o campo SERIAL_ID e atribuir o valor do campo SENHA a uma variável de nome VSENHA.

       oSql   := SR_GetConnection()                                       
       cQuery := "SELECT * FROM serial WHERE serial_id = "+"'"+ALLTRIM(STR(nSerialHD(),20))+"'"
    	oSql:exec(cQuery)
    
       cQuery := "DECLARE @vsenha VARCHAR(10)" 
       oSql:exec(cQuery)
    
       cQuery := "SELECT senha INTO vsenha" 
       oSql:exec(cQuery)
    
    	?? vsenha

    Obrigado

  7. 1 hora atrás, joaosolution disse:

    Boa tarde

    Gero o relatório, e salvo em pdf.

    FWSavePreviewToPDF( oPreview,cDestino,.F. )

    Salva 10 e ocorre o erro

    Att

    Tente dar uma "aliviada" na memória a cada envio com :

    HB_GCALL( .T. )

    Espero que ajude.

    E o Corinthinas e Vasco começa seu ano bem kkkkkk
     

  8. 3 horas atrás, giovanyvecchi disse:

    Para impressão de cupons fiscais eu fiz com FastReport.

    Desta maneira imprimo em qualquer impressora ja que a impressão é gráfica e não por comandos especificos da impressora. e gero pdf se for nescessário.

    Amigo boa tarde, queria mais informações da versão que tens do FastReport.
    Poderia me contactar no ladinilson@hotmail.com ou 91 98054-9339 (Whatsapp)

  9. Em 20/12/2023 at 14:37, Theotokos disse:

    Alguém sabe se é possível criar um botão no FastReport? Na tela do Preview , onde tem os botões de exporta o relatório por exemplo...

    Queria também alguns recursos mas ninguém consegue falar com eles imagina ter este recurso.
    Marca e Teotokos me chamem no email: ladinilson@hotmail.com

  10. Bom dia senhores,

    Por favor quem for o responsável do forum ajeitar a pesquisa na questão de acessar as página pois quando preciso e acredito que os senhores também, procuro a solução nas postagens já feitas.

    Obrigado

  11. 3 horas atrás, fladimir disse:

    Exato com o pessoal do Xailer q o Kapiaba postou, ou manda um e-mail para jlalin@nuevocodigo.com esse cara é (ou era) da panela dos responsáveis pelo Xailer.

    Mandei e-mail, mandei mensagem pelo message do face e nenhuma resposta até hoje

  12. 7 minutos atrás, macs disse:
    
    FUNCTION GetNewArray( xVal )
    
    LOCAL aNewArray := {}
    LOCAL aArrayAux := {}
    
    LOCAL nX 
    
    FOR nX := 1 TO Len( aCartelas )
    
            aArrayAux := aCartelas[ nX ]     
    
           IF AScan( aArrayAux, { | aX | aX == xVal } )  <> 0
    
              aAdd( aNewArray, AClone( aArrayAux )  )
    
          ENDIF
    
    NEXT
    
    RETURN aNewArray

     

    Valeu irmão, vou testar

  13. Boa tarde caros colegas,

    Como faço um filtro para multiplos elementos dentro de uma array por exemplo:

     

    AADD(aCartelas,{Cartelas->n01,Cartelas->n02,Cartelas->n03,Cartelas->n04,Cartelas->n05,Cartelas->n06,Cartelas->n07,Cartelas->n08,Cartelas->n09,Cartelas->n10,Cartelas->n11,Cartelas->n12,;
            Cartelas->n13,Cartelas->n14,Cartelas->n15,Cartelas->n16,Cartelas->n17,Cartelas->n18,Cartelas->n19,Cartelas->n20,Cartelas->n21,Cartelas->n22,Cartelas->n23,Cartelas->n24})

    E filtrar todos que tenham o valor 10 em qualquer posição por exemplo? 

    Obrigado

×
×
  • Create New...