Nesse caso, talvez vc precise definir qual a distância de cada objeto deve ter em relação a janela hwgui, que por sua vez esta terá o tamanho x em relação a resolução do monitor.
Se vc já tem a resolução do monitor, eh so definir o dialog em relação a esse tamanho.
tipo:
INIT DIALOG oDlg TITLE "Transacaoes TEF realizadas" ;
AT 0, 0 SIZE ResoluçãoMonitor-100,ResoluçãoMonitor-200 NOEXIT CLIPPER ;
ON EXIT {|| SaidaBrowseTef() } ;
STYLE WS_POPUP+WS_CAPTION+WS_SIZEBOX+DS_CENTER
Thisform := oDlg
@ 004,002 BROWSE oBrowse1 DATABASE SIZE oDlg:nwidth-007,oDlg:nheight-050 ;
FONT HFont():Add( 'Arial',0,-18,400,,,) ;
STYLE WS_VSCROLL + WS_HSCROLL ;
ON UPDATE {|| oBrowse1:REFRESH() } ;
ON KEYDOWN {|oBrowse1, nKey| BrowseKeyDbEdit(oBrowse1, nKey) } ;
ON CLICK {|| EndDialog() }
for n := 1 to Len( aCampos )
oBrowse1:AddColumn( HColumn():New( aCabecalho[n] , &( "{||" + aCAMPOS[n] + "}" ) ) )
oBrowse1:aColumns[n]:nJusHead := DT_CENTER
oBrowse1:aColumns[n]:picture:= aPict[n]
oBrowse1:aColumns[n]:length := aTam[n]
oBrowse1:aColumns[n]:bColorBlock := {|| Iif( stsfin='2',;
{CorPreto, aVerde, CorBranco, CorAzul} , ;
Iif( stsfin='3',;
{CorVermelho, aAmarelo , CorVermelho, CorAzul } ,;
Iif( stsfin='1',;
{x_CYAN, aAmarelo , CorVermelho, CorAzul } ,;
{CorPreto , aAmarelo , CorBranco , CorAzul }) )) }
next
*
@ oDlg:nwidth-395,oDlg:nheight-43 BUTTONEX oButtonex1 CAPTION "&Cancela Transacao" SIZE 190,40 ;
FONT HFont():Add( 'Verdana',0,-14,700,,,) ;
BITMAP (HBitmap():AddResource('cancelB')):handle ;
ON CLICK {|| CancelaTransacaoTefBrowse(Identi, nomred, numnsu, codcrt, totcrt, numcup, cupnum, nrssat, stsfin), EndDialog() } ;
STYLE BS_CENTER +WS_TABSTOP
@ oDlg:nwidth-197,oDlg:nheight-43 BUTTONEX oButtonex2 CAPTION "&Retorna" SIZE 190,40 ;
FONT HFont():Add( 'Verdana',0,-14,700,,,) ;
ICON (HIcon():AddResource('ExitIco')):handle ;
STYLE BS_CENTER +WS_TABSTOP ;
ON CLICK {|| MyLastkey:= 27, EndDialog() }
ACTIVATE DIALOG oDlg
Perceba que os botões estão proporcionais ao tamanho do dialog. Qndo muda o tamanho os botões se auto-ajustam