Clipper On Line • Ver Tópico - MsgYesNo
Página 1 de 2

MsgYesNo

MensagemEnviado: 17 Mai 2017 08:53
por janio
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

MsgYesNo

MensagemEnviado: 17 Mai 2017 14:12
por gilbertosilverio
Ola Janio,

Nao e uma obra de arte comparada as mestres que existem aqui no forum, mais eu uso assim:

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


MsgYesNo

MensagemEnviado: 19 Mai 2017 17:53
por esbasso
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"} )))

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.


MsgYesNo

MensagemEnviado: 21 Mai 2017 21:30
por janio
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

MsgYesNo

MensagemEnviado: 22 Mai 2017 10:41
por esbasso
A mensagem ali tem 3 linhas
Para redimensionar só se tu tem mensagens muito grandes.

MsgYesNo

MensagemEnviado: 22 Mai 2017 11:51
por janio
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

MsgYesNo

MensagemEnviado: 22 Mai 2017 12:57
por esbasso
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.


MsgYesNo

MensagemEnviado: 22 Mai 2017 14:18
por janio
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

DialogWask("Teste funcao do Basso", { "SIM", "NAO", "CANCELA" } )


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" } )

MsgYesNo

MensagemEnviado: 22 Mai 2017 14:44
por esbasso
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

MsgYesNo

MensagemEnviado: 22 Mai 2017 14:55
por janio
Funcionou! Perfeito!

Muito obrigado, cara! Que bom que vc voltou ao forum. Estava fazendo falta.

:{ :{ :{ :{

Janio

MsgYesNo

MensagemEnviado: 26 Mai 2017 12:39
por gilbertosilverio
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

MsgYesNo

MensagemEnviado: 26 Mai 2017 16:56
por esbasso
Se tu estiver usando a que o RUSSO já mexeu então é

FUNCTION hwg_TxtRect( cTxt, oWin, oFont )

MsgYesNo

MensagemEnviado: 26 Mai 2017 18:43
por gilbertosilverio
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

MsgYesNo

MensagemEnviado: 26 Jun 2019 11:13
por edmarfrazao
Obrigado pela sua rotina era o que esta precisando.

MsgYesNo

MensagemEnviado: 26 Jun 2019 11:38
por JoséQuintas
gilbertosilverio escreveu:agora a velharada para de reclamar que as letras das mensagens estão muito pequenas... rsrsrs


Talvez, ou talvez sua máquina e seu software é que sejam velhos.
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.

MsgYesNo

MensagemEnviado: 27 Jun 2019 10:50
por MSDN
Oh Quintas, eu sei que vc é um entusiasta da GTWVG, mas não exagera homem....rssss, depois que inventaram fonte true type, o que a GTWVG faz de redimensionar, já é feito a muitos e muitos anos em sistemas gráficos que usam a API do Windows, o problema são os programadores que não sabem usar os recursos.

MsgYesNo

MensagemEnviado: 27 Jun 2019 20:24
por paiva_dbdc
Janio poderia mandar a função como ficou ?

fiz e os botoes estão sendo cortados

veja no anexo como esta ficando

ob

Paiva

MsgYesNo

MensagemEnviado: 27 Jun 2019 20:48
por JoséQuintas
Pense como console.
Acrescentou mais linhas, mas não aumentou o tamanho da janela.

linha final + qtde. linhas da mensagem

Só que como é gráfico, seria qtde.linhad * altura do fonte (altura de cada linha)

MsgYesNo

MensagemEnviado: 28 Jun 2019 12:06
por MSDN
O problema não é ser gráfico, e não utilizar os recursos gráficos disponíveis, que aliás, são muitos, vejam 2 exemplos :

- caixa de mensagem com um texto e dois botões
Imagem
- caixa de mensagem com um título (ele pisca, aqui não tem como reproduzir) e uma mensagem
Imagem

Claro que pode-se ter mais linhas, com mais informação, mas só esses 2 exemplos já dá para ter uma ideia.

Abraços

MsgYesNo

MensagemEnviado: 18 Jul 2019 15:53
por fenixsorocaba
boa tarde a todos! Não entendo muito a lógica da programação do código em forms, por isso tenho uma pergunta:

no exemplo do código postado pelo colega, para botões de multipla escolha:

FUNCTION DialogWask( cmsg, aSels )
LOCAL oDlg,  oShape1, oBitmap1, ocmd1, ocmd2, oCmd3, oLabel1, oCmd4 ;
      , oCmd5
INIT DIALOG oDlg TITLE "Selecione a opcao... "     ; 
  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.


após clicar com o mouse em um dos botões de múltipla escolha, ele abre um outro formulário exibindo a resposta do botão (1, 2, 3, etc..) e o usuário tem que clicar no "X" para fechar este outro formulário...

teria como apenas criar uma variavel de controle para saber que o usuário clicou no botão 1, já fechando tudo, sem apresentar nada na tela?
se sim, é dentro desta mesma função (ocmd1_onClick) que a variável tem que ser colocada (no caso do botão 1)?

STATIC FUNCTION ocmd1_onClick
   thisform:lresult := 1
   THISFORM:CLOSE()
RETURN .T.


obrigado por sua atenção.

att,

Tales

MsgYesNo

MensagemEnviado: 19 Jul 2019 13:29
por fenixsorocaba
boa tarde! entendendo um pouco mais a função do colega Luis Basso, "finalmente" compreendi que na verdade o formulário que eu achei que abria, não é um segundo formulário...
ele é uma mensagem de exibição, que no exemplo que ele nos deu poderia ser alterada de acordo com a necessidade, para até 5 botões..(show de bola!!)

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"} )))

ou seja, no retorno da FUNCTION DialogWask( cmsg, aSels ), ele exibe o "clique" do botão selecionado.no caso do botão 1, = 1

STATIC FUNCTION ocmd1_onClick
thisform:lresult := 1
THISFORM:CLOSE()
RETURN .T.

agora, reformulando a minha pergunta anterior, será que existe algum outro modo que chame a função DialogWask sem ser desta forma (msginfo), para que
o usuário não tenha que clicar novamente em OK ou X para sair desta mensagem (msginfo) ?

obrigado, bom trabalho!

att,

Tales