AIDA wrote:que es el Fivewidi
Fivewidi es un colega que publicó la funcion AUTRESIZE en este foro al que de nuevo le doy las gracias por la misma.
Si la buscas en el foro, la encontrarás.
En base a dicha función, he creado la función Auto800() que es la que utilizo con éxito:
//////////////////////////////////////////////////////////////////////
FUNCTION Auto800 ( oWnd, lRepaint, lFolder )
Local nOriWidth := 800, nOriHeight := 600, nWidth := 0, nHeight := 0, ;
nContador, nRancho, nRalto
DEFAULT lRepaint := .T., lFolder := .t.
ScrResolution( @nWidth, @nHeight ) // importante
If nOriHeight < nHeight
nRancho := nWidth / nOriWidth
nRalto := nHeight / nOriHeight
// solo para Tdialog
If lRepaint
oWnd:Hide()
EndIf
If nRalto > 1
If oWnd:ClassName() == "TLISTBOX" .OR. oWnd:ClassName() == "TCOMBOBOX"
oWnd:Move( oWnd:nTop * nRalto , ;
(oWnd:nLeft * nRancho), ;
(oWnd:nWidth * nRancho), ;
oWnd:nHeight , ;
.F. )
Else
oWnd:Move( oWnd:nTop * nRalto , ;
oWnd:nLeft * nRancho, ;
oWnd:nWidth * nRancho, ;
oWnd:nHeight * nRalto , ;
.F. )
EndIf
EndIf
If oWnd:ClassName() == "xTFOLDER"
If ValType( oWnd:aDialogs ) = "A" .AND. lFolder
For nContador := 1 To Len( oWnd:aDialogs )
Auto800( oWnd:aDialogs[nContador], .F. )
EndFor
EndIf
ElseIF oWnd:Classname() == "TWBROWSE"
FOR nContador=1 TO LEN (oWnd:aColSizes)
oWnd:AcolSizes[nContador] *= nRancho
NEXT
ElseIF oWnd:Classname() == "TCOMBOBOX"
Else
If ValType( oWnd:aControls ) = "A" // dialogo
For nContador := 1 To Len( oWnd:aControls )
Auto800( oWnd:aControls[nContador], .F. )
EndFor
EndIf
If oWnd:ClassName() == "TFOLDER"
If lFolder
For nContador := 1 To Len( oWnd:aDialogs )
Auto800( oWnd:aDialogs[nContador], .F. )
EndFor
EndIf
EndIf
EndIf
If lRepaint
If( ( "DIALOG" $ oWnd:Classname() ) .and. oWnd:lCentered, WndCenter( oWnd:hWnd ) , Nil )
oWnd:Show()
EndIf
EndIf
Return Nil
//////////////////////////////////
Una vez que incluyas esta función en tus fuentes, solo tienes en los diálogos que añadir en el ACTIVATE ON INIT AUTO800(oDlg,.t.)
Observa que esta diseñada en base a que la pantalla del programador sea de 800x600. Si tu resolución es mayor, debes cambiar en la función las medidas.
Por otra parte recuerda que el anterior mensaje te comente que esta función es válida solo para diálogos desde recursos. Si los diálogos son con código, el cambio es mas laborioso. Tienes que multiplicar los valores de los nCol, nFila, nAncho y nAlto por los siguientes coeficientes:
nRancho := GetSysMetrics(0)/800
nRalto := GetSysMetrics(1)/600