kapiaba Posted December 5, 2017 Report Share Posted December 5, 2017 // http://forums.fivetechsupport.com/viewtopic.php?f=17&t=5103&p=22589&hilit=definir+fuente#p22589 /* AutResiz() Notapor FiveWiDi » Mar Nov 28, 2006 9:19 am Código fuente de la función que utilizo para dimensionar mis ventanas/diálogos/controles. Seguramente se puede perfeccionar mucho pero a mi me vale. */ /* ******************** */ #Include "FiveWin.ch" /* Los parámetros recibidos son: lAutoresize: permite prescindir de la funcionalidad de esta función; permitiendo de esta manera que la aplicación pueda tener un flag que permita/deniegue el autoredimensionado de las pantallas. 03/03/2006. nWhatSize: permite forzar el redimensionamiento a unos valores concretos; permitiendo de esta manera que la aplicación pueda tener un valor al cual redimensionar las pantallas. 03/03/2006. oWnd: Objeto/ventana/diálogo/control a ser redimensionado. nResolution: Número que identifica que resolución tenía la pantalla en la cual se diseñó el objeto. Este valor puede ser negativo, hecho que se interpretará como que la ventana ya ha estado redimensionada previamente y se pretende redimensionarla a su valor original. Esta característica es útil para provocar que un control (o ventana/dialogo) concreto se le devuelva su tamaño original según su valor de diseño. 03/03/2006 lRepaint: Indicador de si debe repintarse el objeto una vez redimensionado. Esta función permitirá que una aplicación desarrolada en un PC con una resolución de pantalla de por ejemplo 1024 x 768 (nResolution valdría en este caso 3), se vea redimensionada proporcionalmente en un PC con una resolución diferente, ya sea mayor o menor. A falta de perfeccionar el código, se comprueba solamente la variación de la anchura de la resolución de la pantalla para aplicar la variación del tamaño, aunque cuando ello se realiza se hace tanto en la anchura como en la altura. Ahora se comprueba la altura. 09/12/2005. Esta función está orientada a ser utilizada en el evento ON INIT del ACTIVATE de las WINDOW y DIALOG con un valor fijo de lRepaint a .T. o sin él. Además también puede utilizarse directamente sobre un control definido posteriormente a la ACTIVACIÓN de su contenedor ya sea éste WINDOW o DIALOG, con la salvedad que lRepaint debe valer .T. para forzar su repintado. Ejemplos de uso: -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Se redimensiona toda la ventana oWnd y sus controles. */ ACTIVATE oWnd ON INIT AutResiz( .T., 0, oWnd, 3 ) -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Se redimensiona todo el dialogo oDlg y sus controles. Además se fuerza que el control oMyMulGet se redimensione como si la resolución de pantalla fuera del tipo 2. ACTIVATE oDlg ON INIT AutResiz( .T., 0, oWnd, 3 ) AutResiz( .T., 2, oMyMulGet, 0) -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* Se redimensiona el control oTabs. @ 185.50,8.00 TABS oTabs OF oWnd ITEMS "Tab1","Tab2","Venga a ordenarrrrr!!" ; PIXEL COLORS CLR_BLUE,CLR_HCYAN SIZE 288.00,9.00 MESSAGE "Mensaje del Tabs" AutResiz( .T., 0, oTabs, 3, .T. ) -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* */ FUNCTION AutResiz( lAutoresize, nWhatSize, oWnd, nResolution, lRepaint ) // Resolución de la pantalla en el momento de definir los controles. Local nOriWidth, nOriHeight // Lo normal sería que fuera la resolución actual de la pantalla (nWhatSize=0). // Se permite forzar esta resolución mediante el valor de nWhatSize=1,2,3,4,5,6,7,.... Local nWidth, nHeight // Son la relación entre la resolución de pantalla y la resolución de diseño. Local nFactorWitdh, nFactorHeight Local nContador 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 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 Else ScrResolution( @nWidth, @nHeight ) Endif If lAutoresize .and. nOriHeight != nHeight /* Este será el caso habitual, en el cual se pretende redimensionar los controles a la resolución de la pantalla en la cual se estan viendo. 01/03/2006 */ If nResolution > 0 nFactorWitdh := nWidth / nOriWidth nFactorHeight := nHeight / nOriHeight /* Este será el caso en el cual se pretende deshacer el redimensionamiento de los controles realizado previamente. */ ElseIf nResolution < 0 nFactorWitdh := nOriWidth / nWidth nFactorHeight := nOriHeight / nHeight EndIf If lRepaint oWnd:Hide() EndIf //If nFactorWitdh > 1 // .or. If nFactorHeight > 1 If oWnd:ClassName() == "kalimeroquetequiero" ElseIf oWnd:ClassName() $ "/TJ02LISMN/TLISTBOX/" oWnd:Move( oWnd:nTop * nFactorHeight , ; oWnd:nLeft * nFactorWitdh, ; oWnd:nWidth * nFactorWitdh, ; oWnd:nHeight , ; .F. ) Else oWnd:Move( oWnd:nTop * nFactorHeight , ; oWnd:nLeft * nFactorWitdh, ; oWnd:nWidth * nFactorWitdh, ; oWnd:nHeight * nFactorHeight , ; .F. ) EndIf EndIf If oWnd:ClassName() == "TFOLDER" If ValType( oWnd:aDialogs ) = "A" For nContador := 1 To Len( oWnd:aDialogs ) AutResiz( lAutoresize, nWhatSize, oWnd:aDialogs[nContador], nResolution, .F. ) EndFor EndIf Else If ValType( oWnd:aControls ) = "A" For nContador := 1 To Len( oWnd:aControls ) AutResiz( lAutoresize, nWhatSize, oWnd:aControls[nContador], nResolution, .F. ) EndFor EndIf EndIf //If nFactorWitdh < 1 // .or. If nFactorHeight < 1 If oWnd:ClassName() == "kalimeroquetequiero" ElseIf oWnd:ClassName() $ "/TJ02LISMN/TLISTBOX/" oWnd:Move( oWnd:nTop * nFactorHeight , ; oWnd:nLeft * nFactorWitdh, ; oWnd:nWidth * nFactorWitdh, ; oWnd:nHeight , ; .F. ) Else oWnd:Move( oWnd:nTop * nFactorHeight , ; oWnd:nLeft * nFactorWitdh, ; oWnd:nWidth * nFactorWitdh, ; oWnd:nHeight * nFactorHeight , ; .F. ) EndIf EndIf If lRepaint oWnd:Show() EndIf EndIf Return Nil /* ******************** */ /* Saludos Carlos G. */ Quote Link to comment Share on other sites More sharing options...
ram_bh Posted February 9, 2018 Report Share Posted February 9, 2018 Kapiaba, Toda vez que ativo a Dialog com essa função, os botões da barra da Window ficam maiores e são redimensionados na barra... Não estudei a função, mas obrigado de qualquer forma. Vou continuar no encalço da danada... Agora, vou tomar umas que chegou a hora! Bom Carnaval a todos! Rodrigo Melo Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.