Clipper On Line • Ver Tópico - MsgYesNo

MsgYesNo

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

MsgYesNo

Mensagempor MSDN » 27 Jun 2019 10:50

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.
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

MsgYesNo

Mensagempor paiva_dbdc » 27 Jun 2019 20:24

Janio poderia mandar a função como ficou ?

fiz e os botoes estão sendo cortados

veja no anexo como esta ficando

ob

Paiva
Anexos
cortado.png
paiva_dbdc
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 342
Data de registro: 12 Nov 2012 08:58
Cidade/Estado: uberlandia mg
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

MsgYesNo

Mensagempor JoséQuintas » 27 Jun 2019 20:48

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)
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

MsgYesNo

Mensagempor MSDN » 28 Jun 2019 12:06

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
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

MsgYesNo

Mensagempor fenixsorocaba » 18 Jul 2019 15:53

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
Nota de Moderação:
JoséQuintas: Mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: Clique aqui
fenixsorocaba
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 5
Data de registro: 03 Jul 2019 11:40
Cidade/Estado: SOROCABA/SP
Curtiu: 1 vez
Mens.Curtidas: 0 vez

MsgYesNo

Mensagempor fenixsorocaba » 19 Jul 2019 13:29

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
fenixsorocaba
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 5
Data de registro: 03 Jul 2019 11:40
Cidade/Estado: SOROCABA/SP
Curtiu: 1 vez
Mens.Curtidas: 0 vez

Anterior



Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro