Agora vai
Pode usar o chr(13) para quebra de linha
cTexto := "linha 1" + Chr(13) +"linha 2" + Chr(13) +"linha 3" + Chr(13) +"linha 4" +;
"linha 5" + Chr(13) +"linha 6" + Chr(13) +"linha 7" + Chr(13) +"linha 8"
#Include "hwgui.ch"
STATIC Thisform
FUNCTION DialogWask( cmsg, aSels )
LOCAL oDlg, oShape1, oBitmap1, ocmd1, ocmd2, oCmd3, oLabel1, oCmd4 ;
, oCmd5
INIT DIALOG oDlg TITLE "Selecionar opção ..." ;
COLOR 16777215 ;
AT 0, 0 SIZE 600,122 ;
FONT HFont():Add( 'Verdana',0,-15,400,,,) CLIPPER NOEXIT ;
STYLE WS_POPUP+WS_CAPTION+DS_CENTER ;
ON INIT {|This| onDlgInit( This ) }
__objAddData( oDlg, "cmsg" ); oDlg:cmsg := cmsg
__objAddData( oDlg, "aSels" ); oDlg:aSels := aSels
Thisform := oDlg
@ 15,71 SHAPE oShape1 SIZE 572,4 ;
BACKCOLOR 255 ;
BACKSTYLE 2;
BORDERWIDTH 1 CURVATURE 0 BORDERSTYLE 5 FILLSTYLE 10
@ 16,10 BITMAP oBitmap1 SHOW 'bmp_qst' FROM RESOURCE STRETCH 0 ;
TRANSPARENT SIZE 48,48
@ 24,81 BUTTONEX ocmd1 CAPTION "&Sim" TRANSPARENT SIZE 110,34 ;
STYLE BS_CENTER +WS_TABSTOP ;
ON CLICK {|| ocmd1_onClick( ) }
@ 137,81 BUTTONEX ocmd2 CAPTION "&Sim" TRANSPARENT SIZE 110,34 ;
STYLE BS_CENTER +WS_TABSTOP ;
ON CLICK {|| ocmd2_onClick( ) }
@ 250,81 BUTTONEX oCmd3 CAPTION "&Sim" TRANSPARENT SIZE 110,34 ;
STYLE BS_CENTER +WS_TABSTOP ;
ON CLICK {|| oCmd3_onClick( ) }
@ 70,7 SAY oLabel1 CAPTION thisform:cmsg TRANSPARENT SIZE 508,60 ;
STYLE SS_CENTER ;
COLOR 16711680
oLabel1:FontBold := .T.
@ 363,81 BUTTONEX oCmd4 CAPTION "&Não" TRANSPARENT SIZE 110,34 ;
STYLE BS_CENTER +WS_TABSTOP ;
ON CLICK {|| oCmd4_onClick( ) }
@ 476,81 BUTTONEX oCmd5 CAPTION "&Não" TRANSPARENT SIZE 110,34 ;
STYLE BS_CENTER +WS_TABSTOP ;
ON CLICK {|| oCmd5_onClick( ) }
ACTIVATE DIALOG oDlg
IF EMPTY( ThisForm:lresult )
thisform:lresult := 0
ENDIF
RETURN oDlg:lresult
STATIC Function ResizeDlg
Local nTop, i, cBtn
Local cTexto := Thisform:oLabel1:Caption
Local nCr := Occurs( Chr(13), cTexto ) + 1
Local aTxtSize := Iif( ! Empty( cTexto ), TxtRect( cTexto, Thisform:oLabel1 ),{0,0} )
aTxtSize[2] := Max( aTxtSize[2], nCr * 20 )
If !Empty( cTexto) .And. aTxtSize[2] < 60
Thisform:oLabel1:nHeight := 42
Thisform:oLabel1:nTop += 20
Thisform:oLabel1:Move( ,Thisform:oLabel1:nTop,, Thisform:oLabel1:nHeight )
Return .t.
Endif
If aTxtSize[2] > 60
nTop := ( aTxtSize[2] - 60 )
Thisform:Move( ,,, Thisform:nHeight + nTop )
Thisform:oLabel1:Move( ,Thisform:oLabel1:nTop,, aTxtSize[2] + 5 )
Thisform:oShape1:Move( ,Thisform:oShape1:nTop + nTop )
i := 1
Do While i <= 5
cBtn := "oCmd"+Str(i,1)
Thisform:&cBtn:Move( , Thisform:&cBtn:nTop + nTop, , )
i ++
Enddo
Endif
Return .T.
STATIC FUNCTION onDlgInit( This )
// recalcular o tamnho dos botoes
Local nSize, nEspaco, nWbotao, nSels, nLeft, i, cBtn
If Empty( This:asels ) .OR. LEN( This:asels ) < 2
This:asels := {"Fechar"} //{"emitir","imprimir","desistir","cancelar"}
//RETURN .f.
ENDIF
nSize := 110 * 5
nEspaco := 3 // 12/4
nsels := LEN(This:asels)
nwbotao := MIN( 245, nSize / nSels )
nEspaco := IIF( nSels > 1, 12 / ( nSels - 1 ), 10) //nEspaco +
nLeft := This:nWidth - ( nwbotao * nSels + nEspaco * nSels )
i := 1
Do While i <= 5
cBtn := "oCmd"+STR(i,1)
IF i <= nsels
this:&cBtn:CAPTION := This:aSels[ i ]
this:&cBtn:Move( nLeft,, nwBotao,,0)
nLeft += nwBotao + nEspaco
ELSE
this:&cBtn:Hide()
ENDIF
i ++
ENDDO
If ! Empty( Thisform:oLabel1:Caption )
ResizeDlg()
Endif
RETURN Nil
STATIC FUNCTION ocmd1_onClick
thisform:lresult := 1
THISFORM:CLOSE()
RETURN .T.
STATIC FUNCTION ocmd2_onClick
thisform:lresult := 2
THISFORM:CLOSE()
RETURN .T.
STATIC FUNCTION oCmd3_onClick
thisform:lresult := 3
THISFORM:CLOSE()
RETURN .T.
STATIC FUNCTION oCmd4_onClick
thisform:lresult := 4
THISFORM:CLOSE()
RETURN .T.
STATIC FUNCTION oCmd5_onClick
thisform:lresult := 5
THISFORM:CLOSE()
RETURN .T.