-
Posts
523 -
Joined
-
Last visited
-
Days Won
9
Posts posted by Ladinilson
-
-
Fiz uma Dialog e depois uma outra dialog em cima e obtive essse efeito...
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
-
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 -
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 -
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 -
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.
-
Opa já consegui!
Obrigado
-
4 minutos atrás, kapiaba disse:
Eu usaria: maria_Connect()
Regards, saludos.
Não entendi bulhufas mas seria nessa linha...
oRsPar := FW_OpenRecordSet(oApp:oCon,"SELECT " +; ...
-
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
-
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
-
5 minutos atrás, kapiaba disse:
Acho que quiz dizer aqueles que não precisam de uma caixa (humano) e funcionam com uma tela touch screen, uma pin pad e impressora.
Comum em condomínios e aqui no condomínio tem do Mateus. -
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) -
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 -
1 minuto atrás, kapiaba disse:
Mano, nem para escrever XAILER corretamente? kkkkkkkkkkkkkkkkkkk
https://download.xailer.com/?en&cat=1
Abs.
Já tinha baixado e testado!
Versão 4.15 demo -
Bom tarde,
No site do Xailler tem a versão 4.15 para baixar para demo e nela já tem a opção do QR Code no código de barras.
Alguém tem esta versão?
Se tem me mande seu contato para saber como conseguiu e tirar dúvidas por favor!
Obrigado -
20 horas atrás, Jorge Andrade disse:
Cruel esse Ladinilson, super estimou o windows 7 de 32 bits do João que ele tem há 30 anos. ahahahahah
kkkkk
Todo corinthiano é conservador kkkkkk -
Em 02/11/2023 at 11:48, kapiaba disse:
Bom dia. Alguém que tenha windows 7 de 32 bits, poderia testar essa nova versão, para eu ter certeza que o problema é em minha máquina?
https://forums.fivetechsupport.com/viewtopic.php?f=6&t=43785&sid=e61bd35fb455357746e2368ce70d2783
Gracias, obrigado.
Regards, saludos.
É só trocar esse seu PC-XT que até o Windows 3.1 funciona de boa!
kkkkkkkkkkkkkk -
Em 23/10/2023 at 13:25, gilmer disse:
Boa Tarde,
Estaremos verificando.
Obrigado
Percebi que só acontece no Chrome, no Edge esta normal!
Obrigado -
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 -
Infelizmente NENHUM mas NENHUM chega perto do Team Viewer.
Fato! -
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
-
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
-
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
-
Boa tarde meus caros,
Vi no forum Fivetech e achei muito interessante...
https://forums.fivetechsupport.com/viewtopic.php?f=6&t=43606&p=262819&hilit=webview&sid=8efa6c7f71a54c2ccc82865186ca336e#p262819Alguém já testou ou fez algo?
Abraços
-
Em 15/08/2023 at 19:41, fladimir disse:
Pergunta pra mim q respondo, qual a dúvida?
A dúvida amigo é onde podemos comprar e como comprar.
Sobrepor imagem
in Programação
Posted
Confessa que tu gostou kkkk