Como fazer o MessageBOx ficar modal

Delphi

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:

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

Aldus

Curtidas 1

Melhor post

Aldus

Aldus

04/07/2005

Bom amigos, obrigado pela ajuda mas funcionou somente colocando o flag MB_TASKMODAL.

Valeu mesmo

Até.


GOSTEI 1

Mais Respostas

Beppe

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

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

Marcio.theis

03/07/2005

Você tb pode utilizar o:

Application.MessageBox(´Teste !´,´Titulo´,MB_OK or MB_APPLMODAL or MB_ICONERROR);


GOSTEI 0
Nildo

Nildo

03/07/2005

Ao invez de usar o Application.Handle, use o SeuFormulario.Handle


GOSTEI 0
POSTAR