MessageBox, MessageDLG, etc...

Delphi

15/01/2006

no delphi existem diversas formas de exibir uma mensagem.
gostaria de saber as principais diferenças entre elas. as vantagens e as desvantagens.
ao menos das mais utilizadas.

quais vc´s preferem utilizar?


Raserafim

Raserafim

Curtidas 0

Respostas

Bruno Belchior

Bruno Belchior

15/01/2006

MessageBox é uma API do windows que utiliza indioma padrão do sistema, já MessageDlg é uma função implementada na VCL do delphi, nela não se usa o indioma padrão do SO e não se pode alterar o Caption da mesa... particularmente prefiro utilizar MessageBox...


GOSTEI 0
Michael

Michael

15/01/2006

Bruno já disse tudo. [b:3ea45658ab]MessageBox [/b:3ea45658ab]sem sombra de dúvidas. Acho legal tbm se criar procedures/funções que encapsulem esta API de modo a facilitar sua utilização. Vejam:

function ShowWarning(const Text: string; Flags: Integer): Integer;
begin
  with Application do
    Result := MessageBox(PAnsiChar(Text), PAnsiChar(Title), Flags + MB_ICONWARNING);
end;


E assim por diante.

[]´s


GOSTEI 0
Bruno Belchior

Bruno Belchior

15/01/2006

Eu utilizo tbm encapsulamento sobre isso... mas não deixo dentro de objetos, pois a cada mensagem criar o objeto é um ´saco´... mas dentro das funções estáticas normalmente utilizo a implementação do Objeto Application...


GOSTEI 0
Michael

Michael

15/01/2006

Como assim dentro de objetos? A função acima não pertence à nenhuma classe. É, literalmente, uma função, e não um método. ;-)

[]´s


GOSTEI 0
Bruno Belchior

Bruno Belchior

15/01/2006

Application.MessageBox



GOSTEI 0
Michael

Michael

15/01/2006

Continuo sem entender... :(

[b:f5fe63ce17]Application [/b:f5fe63ce17] é uma variável global que aponta para a única instância da classe [b:f5fe63ce17]TApplication[/b:f5fe63ce17]. Vc não precisa criar esta instância, pois o Delphi faz isso qdo a aplicação inicia.

Vc quer dizer que usa a API do Windows [b:f5fe63ce17]MessageBox [/b:f5fe63ce17]diretamente? É isso?

[]´s


GOSTEI 0
Bruno Belchior

Bruno Belchior

15/01/2006

Quando disse isso, quis expressar que ao invés de utiliza a API diretamente passando o Handle da aplicação como parâmetro, eu apenas utilizo o método [b:10509554d3]MessageBox[/b:10509554d3] do objeto global Application, evitando inclusive de passar mais um parâmetro...


GOSTEI 0
Bruno Belchior

Bruno Belchior

15/01/2006

Só para complementar, possuo procedimentos [b:b86a488f4b]estáticos[/b:b86a488f4b] de erro, aviso, exclamação entre outros, evitando ter de instânciar (nesse caso se tivesse implementado esses procedimentos como métodos de uma possível classe TMensagemPersonalizada) um objeto para cada vez que tiver que exibir uma mensagem ao usuário...


GOSTEI 0
Raserafim

Raserafim

15/01/2006

valeu bruno e michael, vou ficar com o MessageBox


GOSTEI 0
POSTAR