MsgYesNo
Moderador: Moderadores
MsgYesNo
Bom dia a todos,
Alguém tem uma função parecida com a MsgYesNo (padrão hwgui) que se auto-dimensione conforme o tamanho do texto?
Acho a função padrão da lib LETRAS MUITO PEQUENAS e gostaria colocar avisos no sistema personalizados e com LETRAS MAIORES
Janio
Alguém tem uma função parecida com a MsgYesNo (padrão hwgui) que se auto-dimensione conforme o tamanho do texto?
Acho a função padrão da lib LETRAS MUITO PEQUENAS e gostaria colocar avisos no sistema personalizados e com LETRAS MAIORES
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
gilbertosilverio
- Usuário Nível 3

- Mensagens: 339
- Registrado em: 18 Jan 2009 10:39
- Localização: Ribeirao Pires - SP
MsgYesNo
Ola Janio,
Nao e uma obra de arte comparada as mestres que existem aqui no forum, mais eu uso assim:
Nao e uma obra de arte comparada as mestres que existem aqui no forum, mais eu uso assim:
Código: Selecionar todos
MENUITEM "&MsgGet_YES" ;
ACTION {||xCOND:= .T., MsgGet_YES( [Teste Titulo], [Entre o que voce precisa], @xCOND ), ;
IF(xCOND = .t., hwg_msginfo([Verdadeiro]),hwg_msginfo([ Falso ]) ) }
Function MsgGet_YES( cTitle, cText, xCond)
Local oModDlg, oFont := HFont():Add( "MS Sans Serif",0,-16 )
INIT DIALOG oModDlg TITLE cTitle SIZE 300,140 ;
FONT oFont CLIPPER STYLE DS_MODALFRAME + WS_POPUP + WS_VISIBLE + WS_CAPTION + WS_SYSMENU + DS_CENTER
@ 20,10 SAY cText SIZE 260,22
@ 100,95 BUTTON "SIM" SIZE 80,24 ON CLICK {|| xCOND:=.T., HWG_ENDDIALOG() }
@ 200,95 BUTTON "NAO" SIZE 80,24 ON CLICK {|| xCOND:=.F., HWG_ENDDIALOG() }
ACTIVATE DIALOG oModDlg
oFont:Release()
Return xCOND
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
MsgYesNo
Aqui tem uma função que permite até 5 botões de seleção
Exemplo
msginfo(str(DialogWask( "Selecione a Opção", {"um","dois","Três","quatro","cinco"} )))
msginfo(str(DialogWask( "Selecione a Opção", {"Sim","Não","Talvez"} )))
msginfo(str(DialogWask( "Confirme a operação", {"Ok","Cancelar"} )))
Exemplo
msginfo(str(DialogWask( "Selecione a Opção", {"um","dois","Três","quatro","cinco"} )))
msginfo(str(DialogWask( "Selecione a Opção", {"Sim","Não","Talvez"} )))
msginfo(str(DialogWask( "Confirme a operação", {"Ok","Cancelar"} )))
Código: Selecionar todos
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 ;
ON INIT {|This| oLabel1_onInit( This ) }
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 onDlgInit( This )
// recalcular o tamnho dos botoes
PRIVATE 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
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 oLabel1_onInit( This )
If This:Caption != Nil .And. Len( This:Caption ) < 60
This:nHeight := 42
This:nTop += 20
This:Move( ,This:nTop,, This:nHeight )
Endif
RETURN .T.
STATIC FUNCTION oCmd4_onClick
thisform:lresult := 4
THISFORM:CLOSE()
RETURN .T.
STATIC FUNCTION oCmd5_onClick
thisform:lresult := 5
THISFORM:CLOSE()
RETURN .T.
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
MsgYesNo
Basso,
Bateu na trave! rsrs
Além dos botões, preciso que a função redimensione também o tamanho do DIALOG conforme o numero de linhas da cMsg.
Tendo isso, fica perfeito!
Janio
Bateu na trave! rsrs
Além dos botões, preciso que a função redimensione também o tamanho do DIALOG conforme o numero de linhas da cMsg.
Tendo isso, fica perfeito!
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
MsgYesNo
A mensagem ali tem 3 linhas
Para redimensionar só se tu tem mensagens muito grandes.
Para redimensionar só se tu tem mensagens muito grandes.
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
MsgYesNo
As vezes as msg sao um pouco grandinhas rsrs, uma mistura de AVISO com pergunta do que o usuario quer FAZER.
As msg padrao da hwgui (msgstop, msgyesno) se auto-redimensionam conforme o numero de linhas, mas pra fazer esse auto-dimensionamento tem que mover todos os objetos do dialog... conhecimento q eu nao tenho rsrs
Mas vou me virando aqui
Janio
As msg padrao da hwgui (msgstop, msgyesno) se auto-redimensionam conforme o numero de linhas, mas pra fazer esse auto-dimensionamento tem que mover todos os objetos do dialog... conhecimento q eu nao tenho rsrs
Mas vou me virando aqui
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
MsgYesNo
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"
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"
Código: Selecionar todos
#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.
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
MsgYesNo
Basso,
Ta ficando muuuuuuuito bom! Exatamente o que eu queria.
So tem um probleminha: Qndo varias linhas o Dialog ta ficando no topo do video. Uma linha so blz, o dialog fica centralizado
Ta ficando muuuuuuuito bom! Exatamente o que eu queria.
So tem um probleminha: Qndo varias linhas o Dialog ta ficando no topo do video. Uma linha so blz, o dialog fica centralizado
Código: Selecionar todos
DialogWask("Teste funcao do Basso", { "SIM", "NAO", "CANCELA" } )
Código: Selecionar todos
DialogWask("Agora eu estou fazendo um teste para ver" + Quebra + ;
"se a função da Hwgui postada pelo Luis Basso" + Quebra + ;
"se auto-dimensiona para tantas linhas sejam necessarias!" + Quebra + ;
"" + Quebra + ;
"Se isso funcionar deve vez, ficara perfeito", { "SIM", "NAO", "CANCELA" } )
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
MsgYesNo
Estranho
para mim fica centralizado
mas inclua uma nova linha
Onde tem
If aTxtSize[2] > 60
nTop := ( aTxtSize[2] - 60 )
Thisform:Move( ,,, Thisform:nHeight + nTop )
+ Thisform:Center() // <- ADICIONA ESTA LINHA
para mim fica centralizado
mas inclua uma nova linha
Onde tem
If aTxtSize[2] > 60
nTop := ( aTxtSize[2] - 60 )
Thisform:Move( ,,, Thisform:nHeight + nTop )
+ Thisform:Center() // <- ADICIONA ESTA LINHA
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
MsgYesNo
Funcionou! Perfeito!
Muito obrigado, cara! Que bom que vc voltou ao forum. Estava fazendo falta.
:{ :{ :{ :{
Janio
Muito obrigado, cara! Que bom que vc voltou ao forum. Estava fazendo falta.
:{ :{ :{ :{
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
gilbertosilverio
- Usuário Nível 3

- Mensagens: 339
- Registrado em: 18 Jan 2009 10:39
- Localização: Ribeirao Pires - SP
MsgYesNo
Ola Luiz,
Tentei compilar esta tua rotina, para pode testar aqui, mais da falta desta função na compilação...
TxtRect( cTexto, Thisform:oLabel1 )
Grato
Tentei compilar esta tua rotina, para pode testar aqui, mais da falta desta função na compilação...
TxtRect( cTexto, Thisform:oLabel1 )
Grato
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
MsgYesNo
Se tu estiver usando a que o RUSSO já mexeu então é
FUNCTION hwg_TxtRect( cTxt, oWin, oFont )
FUNCTION hwg_TxtRect( cTxt, oWin, oFont )
Luis Fernando Basso
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
Desenvolvedor VFP + XHARBOUR + HWGUI
lfbasso@gmail.com
http://www.engersoft.com.br
-
gilbertosilverio
- Usuário Nível 3

- Mensagens: 339
- Registrado em: 18 Jan 2009 10:39
- Localização: Ribeirao Pires - SP
MsgYesNo
Luiz,
Obrigado, era isso mesmo...
Estou usando a 2.17, mais a que o Kresin incluiu o HWG_ nas funções.
Esta rotina ficou perfeita, agora a velharada para de reclamar que as letras das mensagens estão muito pequenas... rsrsrs
:-Y :-Y :-Y
Obrigado, era isso mesmo...
Estou usando a 2.17, mais a que o Kresin incluiu o HWG_ nas funções.
Esta rotina ficou perfeita, agora a velharada para de reclamar que as letras das mensagens estão muito pequenas... rsrsrs
:-Y :-Y :-Y
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
-
edmarfrazao
- Usuário Nível 3

- Mensagens: 185
- Registrado em: 06 Dez 2005 11:16
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MsgYesNo
Talvez, ou talvez sua máquina e seu software é que sejam velhos.gilbertosilverio escreveu:agora a velharada para de reclamar que as letras das mensagens estão muito pequenas... rsrsrs
As máquinas evoluíram, o Windows não acompanhou, e os programas a base de API Windows menos ainda.
Só a GTWVG se destaca nisso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
