Duvida - Explicação
21/03/2006
0
Msg := ´Deseja Calcular a Porcentagem Automaticamente?´;
Msg := Format(Msg, [vlcompra]);
if messagebox(0, PAnsiChar(Msg),´Pergunta´,mb_yesno+mb_iconquestion)= 6 then
Eu rodei e está beleza, mas não consegui entender:
[b:5560b42ab6]Porque eu não poderia colocar assim:[/b:5560b42ab6]
if messagebox(´Deseja Calcular a Porcentagem Automaticamente?´),´Pergunta´,mb_yesno+mb_iconquestion)= 6 then
[b:5560b42ab6]Nesta linha abaixo, o ´vlcompra´ é uma variavel, pq tem que ter ela para funcionar?[/b:5560b42ab6]
Msg := Format(Msg, [vlcompra]);
[b:5560b42ab6]O que significa:[/b:5560b42ab6]
0, PAnsiChar
Grato,
Ricieri.
Ricieri
Posts
21/03/2006
Rjun
O desenvolvedor está usando uma função da API do Windows e não o MessageBox da VCL do Delphi. Acho que a única diferença é que os botões serão exibidos no idioma do Windows, equanto o MessageBox do Delphi será em Inglês.
Bom, aqui deve estar faltando algo. O FORMAT serviria para substituir um argumento dentro da string. Por exemplo, se você quiser exibir a seguinte mensagem para o usuario:
[b:b9b8ab9cf2] Foram selecionados 10 registros.[/b:b9b8ab9cf2]
Digamos que o 10 não seja um número fixo. Ele pode variar de acordo com o processamento. Em vez de enfiar um IntToStr(Valor) dentro da string, podemos fazer da seguinte maneira:
ShowMessage(Format(´Foram selecionados ¬d registros.´, [valor]));
O [b:b9b8ab9cf2]0[/b:b9b8ab9cf2] significa o Handle da janela em que a MessageBox será exibida. Se eu estiver errado, por favor, me corrijam. E PAnsiChar server para converter a string em um ponteiro de array de caracteres, que é o tipo do argumento a ser informado.
22/03/2006
Thiago Vidal
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´),´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
ou, para pegar o handle da aplicação, vc pode usar direto Application.MessageBox.
PAnsiChar, na verdade, retorna um ponteiro para o 1o caractere de uma string, que é assim que os aplicativos passam strings para as APIs do windows, que também pode ser referenciado, para uma string chamada s, por exemplo, como @s[1].
espero ter ajudado.
22/03/2006
Adriano Santos
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´),´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
Tem um parentese a mais depois do apostrofe e da interrogação:
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´,´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
22/03/2006
Martins
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´),´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
Tem um parentese a mais depois do apostrofe e da interrogação:
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´,´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
Talvez ele queria colocar assim...
if MessageBox(0, Pchar(´Deseja Calcular a Porcentagem Automaticamente?´), ´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
ou foi esquecimento na hora de alterar o código.
:wink:
23/03/2006
Thiago Vidal
o correto é:
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´, ´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
Clique aqui para fazer login e interagir na Comunidade :)