MsgYesNo: Tem como descentralizar ?
Moderador: Moderadores
MsgYesNo: Tem como descentralizar ?
A linha 121 está errada no seu hbp
O hbmk2 é executado fora:
ex.:
Criar a bat cl.bat colocar na bat:
hbmk2 SICCA35gt.hbp
Obs.: Este tópico está está saindo e misturando o assunto principal. O ideal é abrir um novo tópico para tirar suas duvidas.
O hbmk2 é executado fora:
ex.:
Criar a bat cl.bat colocar na bat:
hbmk2 SICCA35gt.hbp
Obs.: Este tópico está está saindo e misturando o assunto principal. O ideal é abrir um novo tópico para tirar suas duvidas.
►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)
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)
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
MsgYesNo: Tem como descentralizar ?
ok, V.Sa. tem razão...
quanto ao assunto que JQuintas começou a abordar
O link para todos me ajudarem a entender o que o JQuintas passou é:
https://pctoledo.org/forum/viewto ... =4&t=13221
E aqui, vou continuar com as dúvidas ao MSGYESNO... que por enquanto (já havia dito anteriormente) está começando a dar o resultado que esperava, sem a necessidade de mais nada a não ser MSGYESNO ('texto da mensagem','título da janela')...
ABRAÇOS!
quanto ao assunto que JQuintas começou a abordar
transferi as minhas dúvidas para o tópico já existente que é de título USAR GTWVG (de autoria do próprio JQuintas).asimoes escreveu:Obs.: Este tópico está está saindo e misturando o assunto principal. O ideal é abrir um novo tópico para tirar suas duvidas.
O link para todos me ajudarem a entender o que o JQuintas passou é:
https://pctoledo.org/forum/viewto ... =4&t=13221
E aqui, vou continuar com as dúvidas ao MSGYESNO... que por enquanto (já havia dito anteriormente) está começando a dar o resultado que esperava, sem a necessidade de mais nada a não ser MSGYESNO ('texto da mensagem','título da janela')...
ABRAÇOS!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
MsgYesNo: Tem como descentralizar ?
olá pessoal, nóisAkiTravies:
Mas, uma dúvida tenho, com "usuários leigos" do aplicativo final:
Assim que necessário no meu e também no sistema de todos, colocamos na tela mensagens para o usuário responder com "SIM/OK", NÃO/CANCEL,e etc...
No nosso antigo clipper essas mensagens estavam grudadas (como um formulário modal) na tela onde apareciam, e, o usuário se abrisse o WinWord e voltasse no sistema estavam lá:
Aí que é o "pobrema"; para nós (bons ou maus programadores) isso é fácil, mas, para o usuário, eles se perdem todo.
Então, existe uma forma da mensagem ser "tipo modal", onde, se o usuário mudar para o "Excel" e voltar ao sistema a tela em que ele parou e sua mensagem ficam juntos?
Bom, estou usando as mensagens que o prezado professor asimoes ensinou, que são as do exemplo por ele postado aqui neste tópico.assimoes escreveu: escreveu:Uma outra forma de exibir caixa de diálogo usando api do windows.
Mas, uma dúvida tenho, com "usuários leigos" do aplicativo final:
Assim que necessário no meu e também no sistema de todos, colocamos na tela mensagens para o usuário responder com "SIM/OK", NÃO/CANCEL,e etc...
No nosso antigo clipper essas mensagens estavam grudadas (como um formulário modal) na tela onde apareciam, e, o usuário se abrisse o WinWord e voltasse no sistema estavam lá:
Acontece que com este tipo de mensagem se o usuário fizer o mesmo procedimento (abrir o Word... etc...) ao voltar para o sistema a mensagem não está grudada ao aplicativo. Ela na verdade está aberta como uma nova seção lá em baixo na barra de ferramentas o usuário descobre-a e clica para responder ao questionamento.- A tela do cadastro onde parou; e
- A Mensagem aguardando ser respondida.
Aí que é o "pobrema"; para nós (bons ou maus programadores) isso é fácil, mas, para o usuário, eles se perdem todo.
Então, existe uma forma da mensagem ser "tipo modal", onde, se o usuário mudar para o "Excel" e voltar ao sistema a tela em que ele parou e sua mensagem ficam juntos?
... mas é essa aí minha dúvida, pois tanto na HMG quanto agora na GTWVG percebo que são o mesmo problema!!!!Não sei se compliquei ou se expliquei,
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
MsgYesNo: Tem como descentralizar ?
Hola a todos, en HMG oficial hace un tiempo que existe:
SET DIALOGBOX POSITION
Sets the Position of the Dialog Boxes in the Screen
(FindTextDialog, GetColor, GetFile, GetFolder, GetFont, MessageBoxTimeout, MsgXXX, PutFile, ReplaceTextDialog, SELECT PRINTER, etc.)
Syntax:
SET DIALOGBOX [ POSITION ] ROW <nRow>|<CodeBlockRow>|<NIL> COL <nCol>|<CodeBlockCol>|<NIL>
SET DIALOGBOX [ POSITION ] CENTER OF PARENT
SET DIALOGBOX [ POSITION ] CENTER OF <hWnd>
SET DIALOGBOX [ POSITION ] CENTER OF DESKTOP
SET DIALOGBOX [ POSITION ] DISABLE
Código: Selecionar todos
#include "hmg.ch"
FUNCTION Main()
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 300 ;
HEIGHT 200 ;
MAIN;
TITLE "Move This Window"
@ 50,100 BUTTON Button_1 CAPTION "Click Here" ACTION MsgInfo ("Hello")
// These CodeBlock puts the dialog box always in the same Row and Col of Form_1
cbRow1 := {|| Form_1.Row }
cbCol1 := {|| Form_1.Col }
// These CodeBlock puts the dialog box always in the same Row and Col of Button_1
cbRow2 := {|| ClientToScreenRow ( Form_1.HANDLE , Form_1.Button_1.Row ) }
cbCol2 := {|| ClientToScreenCol ( Form_1.HANDLE , Form_1.Button_1.Col ) }
SET DIALOGBOX ROW cbRow2 COL cbCol2
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
RETURN NIL
MsgYesNo: Tem como descentralizar ?
Ola amigos...
Aproveito a similaridade do tópíco pra perguntar 2 coisas:
1) tem como mudar o Foco de MsgYesNo() para "Yes" ? Do jeito como foi desenvolvida, o default da Função é "No"
2) Tem como Acrescentar um Temporizador em algumas das Funções abaixo , tipo sair da Msg depois de N segundos?
Grato....
Aproveito a similaridade do tópíco pra perguntar 2 coisas:
1) tem como mudar o Foco de MsgYesNo() para "Yes" ? Do jeito como foi desenvolvida, o default da Função é "No"
Código: Selecionar todos
#define IDYES 6
#define WIN_MB_YESNO 0x00000004
#define WIN_MB_DEFBUTTON2 0x00000100
#define WIN_MB_ICONQUESTION 0x00000020
FUNCTION MsgYesNo( cText )
LOCAL lValue
lValue := wapi_MessageBox( wapi_GetActiveWindow(), cText, "Confirmação", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 ) == IDYES
RETURN lValue
Código: Selecionar todos
FUNCTION MsgExclamation( cText )
wapi_MessageBox( wapi_GetActiveWindow(), cText, "Atencao", WIN_MB_ICONASTERISK )
RETURN NIL
FUNCTION MsgWarning( cText )
wapi_MessageBox( wapi_GetActiveWindow(), cText, "Atencao", WIN_MB_ICONEXCLAMATION )
RETURN NIL
FUNCTION MsgStop( cText )
wapi_MessageBox( wapi_GetActiveWindow(), cText, "Atencao", WIN_MB_ICONHAND )
RETURN NIL
lugab
MsgYesNo: Tem como descentralizar ?
Exemplo de mensagem com timeout
Código: Selecionar todos
MensagemTimeOut("É obrigatório informar o motivo para sócios que entram na classe 10!"+hb_EOL()+;
"Os sócios que entram na classe 10 são excluídos de algumas rotinas por ex.:"+hb_EOL()+hb_EOL()+;
"Emissão de boletos."+hb_EOL()+;
"Emissão de etiquetas."+hb_EOL()+;
"Relatório de inadimplentes.", "Atenção", 30000, 2)
FUNCTION MensagemTimeOut( cMensagem, cTitulo, nTempo, nTipo )
LOCAL nTypeButton
cMensagem := hb_DefaultValue(cMensagem, "")
cTitulo := hb_DefaultValue(cTitulo, "Atenção")
nTempo := hb_DefaultValue(nTempo, 10000)
nTipo := hb_DefaultValue(nTipo, 1)
SWITCH nTipo
CASE 1
nTypeButton := MB_OK + MB_SYSTEMMODAL + MB_ICONASTERISK //Exclamação
Exit
CASE 2
nTypeButton := MB_OKCANCEL + MB_SYSTEMMODAL + MB_DEFBUTTON2 + MB_ICONASTERISK //Pergunta
Exit
END SWITCH
nRet := HWG_MessageBoxTimeout(cMensagem, cTitulo, nTypeButton, nTempo)
RETURN nRet
#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"
#include "time.h"
#include "olectl.h"
int WINAPI MessageBoxTimeout(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds)
{
typedef BOOL (WINAPI *PMessageBoxTimeout)(HWND,LPCTSTR,LPCTSTR,UINT,WORD,DWORD);
static PMessageBoxTimeout pMessageBoxTimeout = NULL;
if (pMessageBoxTimeout == NULL)
{
HMODULE hLib = LoadLibrary ("User32.dll");
#ifdef UNICODE
pMessageBoxTimeout = (PMessageBoxTimeout)GetProcAddress(hLib, "MessageBoxTimeoutW");
#else
pMessageBoxTimeout = (PMessageBoxTimeout)GetProcAddress(hLib, "MessageBoxTimeoutA");
#endif
}
if(pMessageBoxTimeout == NULL)
return FALSE;
return pMessageBoxTimeout(hWnd, lpText, lpCaption, uType, wLanguageId, dwMilliseconds);
}
// HMG_MessageBoxTimeout (Text, Caption, nTypeButton, nMilliseconds) ---> Return iRetButton
HB_FUNC (HWG_MESSAGEBOXTIMEOUT)
{
HWND hWnd = GetActiveWindow();
TCHAR *lpText = hb_parc (1);
TCHAR *lpCaption = hb_parc (2);
UINT uType = HB_ISNIL(3) ? MB_OK : (UINT) hb_parnl (3);
WORD wLanguageId = MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL);
DWORD dwMilliseconds = HB_ISNIL(4) ? (DWORD)0xFFFFFFFF : (DWORD) hb_parnl (4);
int iRet = MessageBoxTimeout (hWnd, lpText, lpCaption, uType, wLanguageId, dwMilliseconds);
hb_retni ((int) iRet);
}
#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)
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)
MsgYesNo: Tem como descentralizar ?
Botão default:
#include "hbdyn.ch"
#define MB_DEFBUTTON2 0x00000100
#define MB_DEFBUTTON3 0x00000200
#define MB_DEFBUTTON4 0x00000300
Ex.:
#include "hbdyn.ch"
#define MB_DEFBUTTON2 0x00000100
#define MB_DEFBUTTON3 0x00000200
#define MB_DEFBUTTON4 0x00000300
Ex.:
Código: Selecionar todos
nEscolha:=hb_dynCall( { "MessageBoxA", "user32.dll",HB_DYN_CALLCONV_STDCALL},0,cMensagem, "Aviso do Sistema",hb_bitOr( MB_YESNO, MB_ICONASTERISK, MB_DEFBUTTON2 ))
IF nEscolha = 6
nEscolha:=1
ELSEIF nEscolha = 7
nEscolha:=2
ENDIF
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MsgYesNo: Tem como descentralizar ?
O que há contra isto?
Código: Selecionar todos
FUNCTION Main()
SetMode(25,80)
CLS
CallDll( "MessageBoxTimeoutA", "user32.dll", wapi_GetActiveWindow(), "Hi", "Yes Or No", MB_YESNO + MB_DEFBUTTON2, 0, 6000 )
Inkey(0)
RETURN NIL
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/
MsgYesNo: Tem como descentralizar ?
Obrigado, pessoal...
Asimoes,
No código por vc postado não consta a definição de e aí da erro na compilção..
José Quintas,
Eu compilei e não deu erro, entretanto, na execução não exibiu mensagem nenhuma, apenas contou os 2 segundos do inkey() e prosseguiu
Ps: Eu uso o Hb3.0 e Windows 7
Asimoes,
No código por vc postado não consta a definição de
Código: Selecionar todos
hb_DefaultValue()José Quintas,
Eu compilei e não deu erro, entretanto, na execução não exibiu mensagem nenhuma, apenas contou os 2 segundos do inkey() e prosseguiu
Código: Selecionar todos
#define MB_YESNO 0x00000004
#define MB_DEFBUTTON2 0x00000100
CallDll( "MessageBoxTimeoutA", "user32.dll", wapi_GetActiveWindow(), "Testando Quintas", "Yes Or No", MB_YESNO + MB_DEFBUTTON2, 0, 6000 )
Inkey(2)
lugab
MsgYesNo: Tem como descentralizar ?
LugaB
use DEFAULT
cMensagem := hb_DefaultValue(cMensagem, "")
cTitulo := hb_DefaultValue(cTitulo, "Atenção")
nTempo := hb_DefaultValue(nTempo, 10000)
nTipo := hb_DefaultValue(nTipo, 1)
default cMensagem to "",;
cTitulo to "Atenção",;
nTempo to 10000,;
nTipo to 1
Não esqueça de incluir "common.ch"
use DEFAULT
cMensagem := hb_DefaultValue(cMensagem, "")
cTitulo := hb_DefaultValue(cTitulo, "Atenção")
nTempo := hb_DefaultValue(nTempo, 10000)
nTipo := hb_DefaultValue(nTipo, 1)
default cMensagem to "",;
cTitulo to "Atenção",;
nTempo to 10000,;
nTipo to 1
Não esqueça de incluir "common.ch"
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MsgYesNo: Tem como descentralizar ?
No Harbour 3.2 chama-se CallDll32(), no 3.0 deve ser igual.
Existe outra CallDll() mas é pra compatibilidade xHarbour, é a que deve ter sido linqueditada, e por isso não deu erro.
No Harbour 3.4 CallDll32() foi renomeada pra CallDll().
Existe outra CallDll() mas é pra compatibilidade xHarbour, é a que deve ter sido linqueditada, e por isso não deu erro.
No Harbour 3.4 CallDll32() foi renomeada pra CallDll().
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/
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
MsgYesNo: Tem como descentralizar ?
Bom dia...
Como eu faço para sair do wapi_MessageBox() pressionando o esc?
Tenho a funcao
Só que quando ela é chamada não sai pressionando ESC. Tem alqum parametro que possa ser enviado para sair pressionando esc?
Obrigado
Rubens
Como eu faço para sair do wapi_MessageBox() pressionando o esc?
Tenho a funcao
Código: Selecionar todos
FUNCTION PERG(cTexto)
LOCAL nSimNao := 1
LOCAL lValue
lValue := wapi_MessageBox( wapi_GetActiveWindow(), cTexto, "Confirmacao", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON1 ) == IDYES
nSimNao := If( lValue,1,2 )
RETURN IF(nSimNao=1,"S","N")
Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você
"
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
MsgYesNo: Tem como descentralizar ?
Rubens, acho que o ESC só vai funcionar se tiver o botão CANCELA, então faz um teste, troque WIN_MB_YESNO por WIN_MB_YESNOCANCEL.
Abraços,
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
MsgYesNo: Tem como descentralizar ?
Obrigado Toledo...
Funcionou certinho...
Rubens
Funcionou certinho...
Rubens
"Eu e minha casa servimos ao Senhor e você
"
- deividdjs
- Usuário Nível 3

- Mensagens: 377
- Registrado em: 19 Set 2006 09:39
- Localização: Foz do Iguaçu / Pr
MsgYesNo: Tem como descentralizar ?
bom dia amigos ....
estou usando as funções abaixo e sempre tenho problema com variaveis .. alguem sabe me dizer onde está o problema ??
Abraços!
estou usando as funções abaixo e sempre tenho problema com variaveis .. alguem sabe me dizer onde está o problema ??
Código: Selecionar todos
FUNCTION MsgYesNo( cText )
LOCAL lValue
lValue := wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Confirma?", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 ) == WIN_IDYES
RETURN lValue
FUNCTION MsgExclamation( cText )
wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenci¢n!", WIN_MB_ICONASTERISK )
RETURN NIL
FUNCTION MsgWarning( cText )
wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenci¢n!", WIN_MB_ICONEXCLAMATION )
RETURN NIL
FUNCTION MsgStop( cText )
wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenci¢n!", WIN_MB_ICONHAND )
RETURN NIL
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX