valor integer no MessageBox

Delphi

24/02/2006

estar dando erro, valor integer no MessageBox, tento converter para string e continua a dar erro.

estou tentando fazer assim:
if MessageBox(0,´Foi impresso ´+PAnsiChar(Impressos)+´.Você confirma esta informação?´
+#10+10+´ATENÇÃO: Se você concordar, atualize estas informações em seu livro de registros.´
+10+10+´´SIM´ para confirmar.´
+10+´´Não´ para cancelar.´,´Pergunta´,mb_yesno+mb_iconquestion)=6 then
begin

end else

end;


grato!
r@mos


Erivando

Erivando

Curtidas 0

Respostas

Motta

Motta

24/02/2006

Use a function IntToStr


GOSTEI 0
Erivando

Erivando

24/02/2006

Use a function IntToStr


amigo isso já fiz e faço constantemente, mas dar erro sempre!

....?


GOSTEI 0
Rjun

Rjun

24/02/2006

Tente isso:

var
  msg: string;
begin
  msg := ´Foi impresso ¬d. coloque aqui o resto da mensagem´;
  msg := Format(msg, [Impressos]);
  
  if MessageBox(0, msg ,´Pergunta´,mb_yesno+mb_iconquestion) = 6 then 
  begin 
  end; 

end; 





GOSTEI 0
Erivando

Erivando

24/02/2006

Tente isso:
var
  msg: string;
begin
  msg := ´Foi impresso ¬d. coloque aqui o resto da mensagem´;
  msg := Format(msg, [Impressos]);
  
  if MessageBox(0, msg ,´Pergunta´,mb_yesno+mb_iconquestion) = 6 then 
  begin 
  end; 

end; 

Amigo Rjun,

continua o mesmo erro, porque eu quero inserir éum valor inteber e não uma string.

?





GOSTEI 0
Rjun

Rjun

24/02/2006

Mas no exemplo que te passei considerei que Impressos é um valor númerico.

Executei o seguinte código aqui e funcionou sem problemas.

var
  Msg: string;
begin
  Msg := ´Foram impressos ¬d cupons.´;
  Msg := Format(Msg, [10]);
  MessageBox(0, PAnsiChar(Msg), ´Aviso´, mb_ok);
end;



GOSTEI 0
Michael

Michael

24/02/2006

Uma dica: use as constantes da unit [b:7687862c1d]Windows [/b:7687862c1d]para referenciar os valores de retorno do método [b:7687862c1d]MessageBox[/b:7687862c1d].

[quote:7687862c1d=´Borland/Microsoft´]IDOK = 1;
ID_OK = IDOK;

IDCANCEL = 2;
ID_CANCEL = IDCANCEL;

IDABORT = 3;
ID_ABORT = IDABORT;

IDRETRY = 4;
ID_RETRY = IDRETRY;

IDIGNORE = 5;
ID_IGNORE = IDIGNORE;

IDYES = 6;
ID_YES = IDYES;

IDNO = 7;
ID_NO = IDNO;

IDCLOSE = 8;
ID_CLOSE = IDCLOSE;

IDHELP = 9;
ID_HELP = IDHELP;

IDTRYAGAIN = 10;

IDCONTINUE = 11;[/quote:7687862c1d]

[]´s


GOSTEI 0
Erivando

Erivando

24/02/2006

Mas no exemplo que te passei considerei que Impressos é um valor númerico. Executei o seguinte código aqui e funcionou sem problemas.
var
  Msg: string;
begin
  Msg := ´Foram impressos ¬d cupons.´;
  Msg := Format(Msg, [10]);
  MessageBox(0, PAnsiChar(Msg), ´Aviso´, mb_ok);
end;


oi Rjun

agora não deu erro mais não , mas quando faço executar a mensagem não acontece nada,

usei assim no Button:
procedure TFrmCertificado.Button1Click(Sender: TObject);
var
Msg: string;
begin
Msg := ´Foram impressos ¬d cupons.´;
Msg := Format(Msg, [10]);
MessageBox(0, PAnsiChar(Impressos), ´Aviso´, mb_ok);
end;

obs: (impressos) é o meu resultado integer.

Grato!


GOSTEI 0
Rjun

Rjun

24/02/2006

Amigo, de onde você tirou que PANSICHAR converte inteiro pra string?
Coloquei alguns comentários no código.

procedure TFrmCertificado.Button1Click(Sender: TObject); 
var 
  Msg: string; 
begin 
  Msg := ´Foram impressos ¬d cupons.´; 

  // O ´10´ era só um exemplo. Você deve colocar sua variável Impressos.
  Msg := Format(Msg, [Impressos]);  

  // Troque Impressos por Msg. Você deve colocar a mensagem a ser      
  // exibida.
  MessageBox(0, PAnsiChar(Msg), ´Aviso´, mb_ok); 
end;  



GOSTEI 0
Erivando

Erivando

24/02/2006

Uma dica: use as constantes da unit [b:f76a56bab4]Windows [/b:f76a56bab4]para referenciar os valores de retorno do método [b:f76a56bab4]MessageBox[/b:f76a56bab4]. [quote:f76a56bab4=´Borland/Microsoft´]IDOK = 1; ID_OK = IDOK; IDCANCEL = 2; ID_CANCEL = IDCANCEL; IDABORT = 3; ID_ABORT = IDABORT; IDRETRY = 4; ID_RETRY = IDRETRY; IDIGNORE = 5; ID_IGNORE = IDIGNORE; IDYES = 6; ID_YES = IDYES; IDNO = 7; ID_NO = IDNO; IDCLOSE = 8; ID_CLOSE = IDCLOSE; IDHELP = 9; ID_HELP = IDHELP; IDTRYAGAIN = 10; IDCONTINUE = 11;


[]´s[/quote:f76a56bab4]


Amigo Michael

mas assim as mensagens não sai em português não é isto!?

r@mos


GOSTEI 0
Michael

Michael

24/02/2006

Amigo Michael mas assim as mensagens não sai em português não é isto!? r@mos


A API do Windows [b:520c0190f2]MessageBox [/b:520c0190f2]- que está encapsulada pelo método [b:520c0190f2]MessageBox [/b:520c0190f2]da classe [b:520c0190f2]TApplication [/b:520c0190f2]- usa as mensagens do sistema operacional. Portanto, só serão em inglês se o Windows onde o programa rodar for. Vc está confundindo esta função com a do Delphi, [b:520c0190f2]MessageDlg[/b:520c0190f2]. Essa por default exibe os captions em inglês, mas podem ser alterados no arquivo [b:520c0190f2]Const.pas[/b:520c0190f2].

Mas, a minha dica não tem nada a ver com isso. São constantes para vc não precisar fazer o que estava fazendo. Com elas vc pode trocar 6 por [b:520c0190f2]ID_YES[/b:520c0190f2], que é bem mais intuitivo, não acha?

if Application.MessageBox(...) = ID_YES then ...


[]´s


GOSTEI 0
Erivando

Erivando

24/02/2006

[quote:bb78ffa599=´INFORAMOS´]Amigo Michael mas assim as mensagens não sai em português não é isto!? r@mos


A API do Windows [b:bb78ffa599]MessageBox [/b:bb78ffa599]- que está encapsulada pelo método [b:bb78ffa599]MessageBox [/b:bb78ffa599]da classe [b:bb78ffa599]TApplication [/b:bb78ffa599]- usa as mensagens do sistema operacional. Portanto, só serão em inglês se o Windows onde o programa rodar for. Vc está confundindo esta função com a do Delphi, [b:bb78ffa599]MessageDlg[/b:bb78ffa599]. Essa por default exibe os captions em inglês, mas podem ser alterados no arquivo [b:bb78ffa599]Const.pas[/b:bb78ffa599].

Mas, a minha dica não tem nada a ver com isso. São constantes para vc não precisar fazer o que estava fazendo. Com elas vc pode trocar 6 por [b:bb78ffa599]ID_YES[/b:bb78ffa599], que é bem mais intuitivo, não acha?

if Application.MessageBox(...) = ID_YES then ...


[]´s[/quote:bb78ffa599]

om cereteza Michael compeendi perfeitamente, obrigado!


GOSTEI 0
Erivando

Erivando

24/02/2006

Amigo, de onde você tirou que PANSICHAR converte inteiro pra string? Coloquei alguns comentários no código.
procedure TFrmCertificado.Button1Click(Sender: TObject); 
var 
  Msg: string; 
begin 
  Msg := ´Foram impressos ¬d cupons.´; 

  // O ´10´ era só um exemplo. Você deve colocar sua variável Impressos.
  Msg := Format(Msg, [Impressos]);  

  // Troque Impressos por Msg. Você deve colocar a mensagem a ser      
  // exibida.
  MessageBox(0, PAnsiChar(Msg), ´Aviso´, mb_ok); 
end;  



Muito Obrigado Rjun, graças a você consegui resolver meu problema
ajustei o código ao que eu queria e deu tudo certo agora.

eu fiz assim e ficou show!

procedure TFrmCertificado.Btn_ImprimirClick(Sender: TObject);
var
Msg: string;
begin
Msg := ´Foi impresso(s) ¬d certificado(s). Você confirma esta informação?´
+#10+10+´ATENÇÃO: Se você concordar, atualize estas informações em seu livro de registros.´
+10+10+´´Sim´ para confirmar.´
+10+´´Não´ para cancelar.´;
Msg := Format(Msg, [Impressos]);
if MessageBox(0, PAnsiChar(Msg),´Pergunta´,mb_yesno+mb_iconquestion)= 6 then
begin
...
end else
...
end;

valeu!
r@mos


GOSTEI 0
POSTAR