Saludos...
esto lo tomé de una función que conseguí publicada ...
Creas una función (por ejemplo: f_ancho) con un argumento tipo 'datawindow' (debes diferenciarlo por si es un datastore)... y le pones que retorna un valor 'long'
Coloca el script a continuación:
string ls_objects, ls_object
long ll_width=0, ll_len, ll_from, ll_to, ll_x, ll_widthObject
ls_objects = dw_proceso.DYNAMIC describe('datawindow.objects')
// Recorremos todos los objetos.
ll_len = len(ls_objects)
If ll_len > 0 Then
ll_from = 1
Do
ll_to = pos(ls_objects, "~t", ll_from)
If ll_to = 0 Then
ls_object = mid(ls_objects, ll_from)
Else
ls_object = mid(ls_objects, ll_from, ll_to - ll_from)
End If
If len(ls_object) > 0 Then
ll_x = long(dw_proceso.DYNAMIC describe(ls_object + '.x'))
ll_widthObject = long(dw_proceso.DYNAMIC describe(ls_object + '.width'))
// Obtenemos hasta donde llega horizontalmente el objeto más a la derecha.
If ll_x + ll_widthObject > ll_width Then
ll_width = ll_x + ll_widthObject
End If
END IF
ll_from = ll_to + 1
Loop While (ll_to > 0)
END IF
RETURN(ll_width)
// llamas a la función así: le pasas a la función el dw que quieras determinar...
long ll_ancho
ll_ancho=f_ancho(objeto_dw)
// Y para verificar si quieres...
MessageBox('Atención!','Ancho del dw= ' +string(ll_ancho))
Espero que te sirva...