Clipper On Line • Ver Tópico - Mudar texto dos botoes da Wapi_MessageBox()

Mudar texto dos botoes da Wapi_MessageBox()

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor rubens » 13 Abr 2017 15:10

Olá Boa tarde...

Para uma confirmação com o Wapi_MessageBox() basta usar?
wapi_MessageBox( wapi_GetActiveWindow(), cText, "Confirmação", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 ) == IDYES

Tem como eu mudar o texto dos botões, SIM/NAO, para Impressora/Tela ?

Obrigado Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor JoséQuintas » 13 Abr 2017 21:05

Eu ficava imaginando como iria limpar minha aparelhagem de som... e não limpava....
Hoje veio a faxineira e limpou com esponja e sabão e ficou resolvido.

Caso não encontre outra opção:

vb1.png


Usei a IDE do VB6, pra não ter que procurar os #includes no Harbour, e já ver o que há disponível.
A IDE do VB6 mostra automático, conforme o que puder ser usado.

vb2.png


No caso do Harbour será procurar o #define equivalente.
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: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor Claudio Soto » 14 Abr 2017 15:37

Los botones de los MessageBox de Windows no se pueden cambiar, hay que utilizar los predefinidos.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor asimoes » 14 Abr 2017 19:53

Rubens, seria algo como isso:

Screen Shot 04-14-17 at 07.52 PM.PNG
Screen Shot 04-14-17 at 07.52 PM.PNG (6.43 KiB) Visualizado 2154 vezes
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor asimoes » 14 Abr 2017 20:00

O código que troca o texto padrão dos botões está na pasta \MiniGUI\SAMPLES\Advanced\MsgBtnEx

Eu não consegui foi passar o parâmetro com o nome dos textos Impressora e Tela, está informado na função CBTProc (código C )

Aqui troca os textos padrão do botões:

hwndButton = GetDlgItem(hwnd, IDYES);
SetWindowText(hwndButton, "Impressora");

hwndButton = GetDlgItem(hwnd, IDNO);
SetWindowText(hwndButton, "Tela");

Teria que ver uma forma de ser passado como parâmetro.

/*
* MINIGUI - Harbour Win32 GUI library
*
* Copyright 2002-05 Roberto Lopez <harbourminigui@gmail.com>
* http://harbourminigui.googlepages.com/
*
* Copyright 2005 Grigory Filatov <gfilatov@inbox.ru>
*/

ANNOUNCE RDDSYS

#include "minigui.ch"
#include "hbwin.ch"

#define PROGRAM 'MsgBtnEx Demo'
#define VERSION ' version 1.0'
#define COPYRIGHT ' 2005 Grigory Filatov'

#define MB_OK                   0
#define MB_ICONSTOP             16
#define MB_ICONQUESTION         32
#define MB_ICONEXCLAMATION      48
#define MB_ICONINFORMATION      64
#define MB_ICONINFORMATION      64
*--------------------------------------------------------*
Function Main
*--------------------------------------------------------*

   DEFINE WINDOW Form_1 ;
      AT 0,0 ;
      WIDTH 640 HEIGHT 480 ;
      TITLE PROGRAM ;
      ICON 'DEMO.ICO' ;
      MAIN ;
      FONT 'Arial' SIZE 10

      DEFINE STATUSBAR
         STATUSITEM '[x] Harbour Power Ready!'
      END STATUSBAR

      DEFINE MAIN MENU
         POPUP '&MsgBtnEx'
            ITEM 'Message Information'   ACTION   {|| MsgBtnEx(MiniguiVersion(), ;
            StrTran(Form_1.Title, "Demo", "Information"), MB_ICONINFORMATION + MB_OK), MsgInfo("Ok", "Information") }
            ITEM 'Message Question'      ACTION   {|| MsgBtnEx(MiniguiVersion(), ;
            StrTran(Form_1.Title, "Demo", "Question"), MB_ICONQUESTION + MB_OK) }
            ITEM 'Message Stop'      ACTION   MsgBtnEx(MiniguiVersion(), ;
               StrTran(Form_1.Title, "Demo", "Stop"), MB_ICONSTOP + MB_OK)
            ITEM 'Message Error'      ACTION   MsgBtnEx(MiniguiVersion(), ;
               StrTran(Form_1.Title, "Demo", "Error"), MB_ICONEXCLAMATION + MB_OK)
            ITEM 'Message Yes No'      ACTION   MsgBtnEx(MiniguiVersion(), ;
               StrTran(Form_1.Title, "Demo", "Impressora"), WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 )               
                SEPARATOR   
            ITEM '&Exit'   ACTION Form_1.Release
         END POPUP
         POPUP '&Help'
            ITEM '&About'   ACTION MsgBtnEx( PROGRAM + VERSION, ;
               'About', MB_ICONINFORMATION + MB_OK )
         END POPUP
      END MENU

   END WINDOW

   CENTER WINDOW Form_1

   ACTIVATE WINDOW Form_1

Return Nil

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

HHOOK hMsgBoxHook;

LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam )
{
   HWND hwnd;
   HWND hwndButton;

   if(nCode < 0)
      return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);

   switch(nCode)
   {
   case HCBT_ACTIVATE:

      // Get handle to the message box!
      hwnd = (HWND)wParam;

      hwndButton = GetDlgItem(hwnd, IDOK);
      SetWindowText(hwndButton, "Thank you");
      
      hwndButton = GetDlgItem(hwnd, IDYES);
      SetWindowText(hwndButton, "Impressora");

      hwndButton = GetDlgItem(hwnd, IDNO);
      SetWindowText(hwndButton, "Tela");

      return 0;

   }
         
   return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);
}

int MsgBoxHook(HWND hwnd, const char *szText1, const char *szCaption, UINT uType)
{
   int retval;
   HWND hwndButton;

   // Install a window hook, so we can intercept the message-box
   // creation, and customize it
   hMsgBoxHook = SetWindowsHookEx(
      WH_CBT,
      CBTProc,
      NULL,
      GetCurrentThreadId()         // Only install for THIS thread!!!
      );

   // Display a standard message box
   
   retval = MessageBox(hwnd, szText1, szCaption, uType);

   // remove the window hook
   UnhookWindowsHookEx(hMsgBoxHook);

   return retval;
}

HB_FUNC ( MSGBTNEX )
{
   MsgBoxHook(NULL, hb_parc(1), hb_parc(2), hb_parnl(3) );
}

#pragma ENDDUMP

â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor asimoes » 14 Abr 2017 20:17

Ops, foi mal, postei no fórum errado

Rubens se for algo relacionado a MiniGui tem um exemplo na pasta \MiniGUI\SAMPLES\BASIC\MsgEdit que atende o que você quer.
Esse código em C você pode usar mesmo que não seja com a minigui
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor asimoes » 14 Abr 2017 21:58

Off topic,

Aproveitando a ideia fiz no meu sistema, o texto da caixa pode ser qq um

Screen Shot 04-14-17 at 09.57 PM.PNG
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor rubens » 15 Abr 2017 18:00

ASimoes...

O Toledo tinha me apresentado algo parecido aqui nesse tópico: http://www.pctoledo.com.br/forum/viewtopic.php?f=45&t=17885
Só que é para Minigui...
Tô só passando um batom aqui no harbour (não estou querendo implementando mais nada em console, se for uma rotina maior, faço um exe externo, até tá tudo em janela na minigui). Daí uso do jeito que o Quintas falou associando uma opção ao SIM, NÃO e CANCELAR. Mas não fica lá muito chique... mas é remendo então vai ficando...

Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor JoséQuintas » 16 Abr 2017 17:06

Só pra lembrar: se não for GUI, pode ser mais interessante algo neste estilo:

selecao.png


O usuário pode clicar com mouse, usar setas, teclar letra, etc.
O mesmo clique que o usuário faria na seleção Windows, faria nesta.

Ou... misturar LIBs e usar a rotina postada em hwgui... rs

Aliás.... se tiver preview de impressão, basta sempre enviar pra tela, e o usuário decide depois se imprime, e o sim ou não acaba resolvendo.... rs
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: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor JoséQuintas » 16 Abr 2017 17:14

Minha opção matricial direciona a este preview.
Isso dipensa opção vídeo/impressora.

preview.png


Nesse preview funciona clique e até rodinha do mouse, melhor do que criar uma opção somente tela.
Pode ser visual texto, mas o usuário não sente falta do que uma GUI poderia oferecer - talvez o ZOOM, que ainda não tem.... rs

Mas nesse caso ele poderia usar a opção PDF, e abrir o leitor default, do Windows 10 por exemplo.

preview2.png


Isso de vídeo ou impressora acaba se tornando algo do passado.... rs
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: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor JoséQuintas » 16 Abr 2017 17:47

Só complemento:
Se você tem uma rotina pra vídeo, e outra pra impressora, desse jeito elimina a de vídeo, e tem menos trabalho pra manutenção depois.
É apenas sugestão.
Tinha isso num aplicativo que venho alterando, e era complicado mexer em duas rotinas pra poder ter vídeo e impressora.

E quando alterar pra LIB gráfica, vai ser só trocar o módulo de preview.

Pode ser até mais fácil do que encontrar a solução pra mensagem.
A mensagem vira problema do passado, e vai estar trabalhando para o futuro.

É assim que eu faço, por isso não me preocupo tanto com GUI, por exemplo basta uma única rotina de preview pra alterar todo aplicativo de uma vez.
É como se o aplicativo estivesse sempre pronto pra GUI, só esperando a escolha de qual GUI usar...
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: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor asimoes » 16 Abr 2017 21:28

Os relatórios dos meus sistemas são sempre exibidos em tela, se o o usuário quer imprimir, tem um botão no preview pra isso.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Mudar texto dos botoes da Wapi_MessageBox()

Mensagempor rubens » 17 Abr 2017 14:38

Boa tarde...

Quintas, viu essa postagem http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=18184?

Com pequenas adaptações nos relatórios, hoje não me preocupo mais com relatório em matricial e Laser/Jato/Tinta.

Relatorio2.png

Neste exemplo aí se a impressora não é matricial já gera o pdf e com um flag de visualizar na tela ou não, com o sumatra exibo o relatório (pdf) na tela. Usando os mesmo fonte nos relatórios. Com todas as características de um PDF e usando a formatação normal de um relatório Matricial com negrito, expandido e condensado. Ainda tenho que clientes que só usam matricial e tenho clientes e que só usam laser/jato e tenho clientes que usam os dois modelos... E relatórios novos estou migrando tudo para FastReports..
FastReport.png

A questão é que no sistema troquei o comando Alert pelo Wapi_Message, já fica com uma cara mais "moderna"...
Tela com Wapi_Message.png

O Negócio é que em todos os meu relatórios Tem a opção de imprimir direto na impressora ou visualizar em tela e ainda o próprio sistema escolhe se a impressão direta vai ser via PrintFileRaw o via Harupdf (Só depende da impressora escolhida). Uso uma tela padrão para isso e nela tem três opções como na figura abaixo:
TelaMudar.png


Daí hoje não vejo mais a necessidade de saída de Arquivo, porque quando visualiza já foi gerado o pdf. Daí gostaria só de uma Wapi_message box com botôes Impressora - Tela. Mas se não é possível... vai ficar do jeito que tá..

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 10 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