Como fazer o MessageBOx ficar modal
Olá amigos, criei uma unit onde armazeno funções gerais, nela tenho uma função que invoca a messagebox para não ter que decorar todos os parâmetros desta função quando for usá-la:
A função:
O problema é que não consigo fazê-la ficar como Modal, se usar o Messagebox no meu form, funciona perfeito, mas uso através da função que está na unit.
Como poderia resolver?
Obrigato e até.
A sua chamada faço assim:
A função:
function wRequest(cStr : string; TipoBotoes: integer) : integer; begin if TipoBotoes = 0 then Result:=MessageBox( Application.Handle , pChar(cStr) , ´Confirmação´ , MB_YESNO + MB_ICONEXCLAMATION ) else Result:=MessageBox( Application.Handle , pChar(cStr) , ´Alerta´ , MB_OK + MB_ICONQUESTION ); end;
O problema é que não consigo fazê-la ficar como Modal, se usar o Messagebox no meu form, funciona perfeito, mas uso através da função que está na unit.
Como poderia resolver?
Obrigato e até.
A sua chamada faço assim:
if wRequest(´Cancelar o pedido atual?´,0) = idYes then begin BotaoCancVenda.Click; EditCodigo.SetFocus ; end end
Aldus
Curtidas 1
Melhor post
Aldus
04/07/2005
Bom amigos, obrigado pela ajuda mas funcionou somente colocando o flag MB_TASKMODAL.
Valeu mesmo
Até.
Valeu mesmo
Até.
GOSTEI 1
Mais Respostas
Beppe
03/07/2005
Há 3 flags que servem: MB_TASKMODAL, MB_SYSTEMMODAL e MB_APPLMODAL. Use o primeiro deles, acho que te servirá, mas passe 0 invés de Application.Handle.
GOSTEI 0
Marco Salles
03/07/2005
Olá amigos, criei uma unit onde armazeno funções gerais, nela tenho uma função que invoca a messagebox para não ter que decorar todos os parâmetros desta função quando for usá-la:
[b:147e241612]O Própio delphi tem o code Insight que cuida disso[/b:147e241612]....
Va em [b:147e241612]Tools[/b:147e241612] e escolha[b:147e241612] Editor Options [/b:147e241612]-->>> Abrira a guia [b:147e241612]Editor Properties[/b:147e241612]
Escolha o Botão [b:147e241612]ADD[/b:147e241612] -->> Abrira a Guia [b:147e241612]Add code Template[/b:147e241612]
No campo [b:147e241612]ShortCut Name [/b:147e241612]escolha un nome ... Por exemplo MessageBoxAlerta
No Campo Descrição ... Detalhe o que esta função irá fazer
De [b:147e241612]Ok[/b:147e241612]
O Cursor estará piscando no campo Code
Coloque o código
MessageBox( 0,´´,´Confirmação´ ,MB_YESNO +
MB_ICONEXCLAMATION);
e de [b:147e241612]OK[/b:147e241612]
:wink: Note que de proposito eu não escrevi nada na mensagem...Isto vai depender da sua necesidade...[b:147e241612]Deixei Vazio ´´[/b:147e241612]
Pois bem de [b:147e241612]Ok[/b:147e241612]
Agora toda vez que voce precisar desta Função , no editor do delphi ao iniciar as Palavras [size=18:147e241612][b:147e241612]Mess[/b:147e241612][/size:147e241612] clique simultaneamente as teclas [b:147e241612]CNTRL J[/b:147e241612] e a sua funçao :arrow: :arrow: aparecerá no editor
[b:147e241612]Voce pode criar vários tipods de funçãoes MessageBox Com Vários tipos de Botoes e mensagems[/b:147e241612]
[b:147e241612]Para ser Modal , acho que tem que ser como o beep Disse.. Passar o zero ao inves de application.Handle[/b:147e241612].
So vale resaltar que no caso de ser modal o usuário pode dbrir quantas mensagems ele quiser e isto pode ser un[b:147e241612] inconveniente[/b:147e241612]
GOSTEI 0
Marcio.theis
03/07/2005
Você tb pode utilizar o:
Application.MessageBox(´Teste !´,´Titulo´,MB_OK or MB_APPLMODAL or MB_ICONERROR);
Application.MessageBox(´Teste !´,´Titulo´,MB_OK or MB_APPLMODAL or MB_ICONERROR);
GOSTEI 0
Nildo
03/07/2005
Ao invez de usar o Application.Handle, use o SeuFormulario.Handle
GOSTEI 0