Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) duvida com if


vms

Pergunta

uso esse comando para confirmar a saida do aplicativo

if MessageDlg('Deseja Sair do Aplicativo?', mtConfirmation,

[mbYes, mbNo], 0) = mrYes then

begin

Action := caFree;

end

else

Action := caNone ;

queria incrementar o meu programa,

criei um menu "confirmar saida"

a duvida e o seguinte.

if confirmar saida.Checked = false then

begin

close;//fecha o programa

end

else

begin

//aparece a messagem acima de confirmação;

end;

não estou conseguindo colocar aquele codigo.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

vms, na verdade para a saída do aplicativo basta que você chame o método Close certo?!

Quando um form é fechado, dois eventos ocorrem: OnCloseQuery e OnClose. No caso do form principal, quando ele é fechado sua aplicação é encerrada. Assim, não se faz necessário para este form o uso do evento OnClose setando Action com caFree. Este método é interessante quando mostramos um form com Show e ao ser fechado pelo usuário, queremos que ele seja liberado da memória.

Assim, sugiro que você utilize o evento OnQueryClose, onde você deverá setar o parâmetro CanClose para True caso queira que seu form (e aplicação, neste caso) seja fechado.

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := True;
  if ConfirmarSaida1.Checked then  // se deve confirmar a saída...
    if MessageDlg('Deseja Sair do Aplicativo?', mtConfirmation, 
                      [mbYes, mbNo], 0) = mrNo then
      CanClose := False;
end;

Observe, que inicialmente permitimos o fechamento do form, ao inicializarmos o parâmetro com true. Depois, se verificado que deve ser feita a confirmação de saída, emitimos a mensagem para confirmação, porém mudamos o valor do parâmetro apenas se o usuário responde que não quer sair - quando setamos o parâmetro com false.

Isto deve funcionar de acordo com o que você pretende. Contudo, há um item a ser levado em conta, que é quando sua aplicação está em funcionamento e o usuário encerra a sessão do Windows sem ter finalizado ela antes. Veja este tópico.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Carlos --

você pode fazer assim se quiser, é mais rápido e econômico.

if Application.MessageBox('Deseja sair do sistema ?','Confirmação', MB_ICONQUESTION+MB_YESNO) = IDYES then

close;

Link para o comentário
Compartilhar em outros sites

  • 0
você pode fazer assim se quiser, é mais rápido e econômico.

if Application.MessageBox('Deseja sair do sistema ?','Confirmação', MB_ICONQUESTION+MB_YESNO) = IDYES then

close;

é econômico mas não funcional, se este código for posto no evento do menu. Isto porque se o usuário teclar ALT+F4 ou clicar no grande "X", esta confirmação não ocorrerá e a aplicação será fechada.

vms, complementando...

Supus que "confirmar saida.Checked" refira-se a uma opção de menu que equivá-la a uma configuração onde estando marcado deverá ser apresentada a mensagem para confirmação, e não a uma ação.

tudo bem, mas a duvida é seguinte:

se o menu "confirmar saida" estiver marcado (Checked), então aparece a messagebox

se não, fecha o form

acho que é isto que o código que propus faz. Voce o testou?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Carlos --

Desculpe amigo micheus, não quis sobrepor sua mensagem, se tivesse visto q você já havia postado, não teria nem postado.

Pois quando acessei estava sem respostas.

Mas aproveitando..

se este código for posto no evento do menu. Isto porque se o usuário teclar ALT+F4 ou clicar no grande "X", esta confirmação não ocorrerá e a aplicação será fechada.
é possivel colocar isto no evento onclose do form, aí, independente, irá apresentar a mensagem.

abraços

Editado por Micheus
Adicionado o delimitador de código [quote] [/quote]. Lembre-se de utilizá-lo para melhor definição das partes.
Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Carlos --

Mas com uma pequena mudança no código

if Application.MessageBox('Deseja sair do sistema ?','Confirmação', MB_ICONQUESTION+MB_YESNO) = IDYES then
  close;

Editado por Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Carlos --
if Application.MessageBox('Deseja sair do sistema ?','Confirmação', MB_ICONQUESTION+MB_YESNO) = IDNO then
   Abort;

Editado por Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link para o comentário
Compartilhar em outros sites

  • 0
Desculpe amigo micheus, não quis sobrepor sua mensagem, se tivesse visto q você já havia postado, não teria nem postado.
Carlos, não há do que se desculpar não. Desculpe se me fiz parecer rude. :blush:

O comentário foi apenas no sentido de salientar que fazer este tipo de validação em uma opção Sair do menu não é o mais apropriado já que ainda há outras opções de fechar a aplicação sem usar o menu.

Mas aproveitando..

se este código for posto no evento do menu. Isto porque se o usuário teclar ALT+F4 ou clicar no grande "X", esta confirmação não ocorrerá e a aplicação será fechada.
é possivel colocar isto no evento onclose do form, aí, independente, irá apresentar a mensagem.
Sim, você está certo.

Mas, eu penso que o evento OnCloseQuery (questiona fechamento) é o lugar mais apropriado porque ele tem exatamente esta finalidade: possibilitar que o processo de fechamento do form seja interrompido através da atribuição de False ao parâmetro CanClose (pode fechar).

ah... se possível, utilize as tag's QUOTE (o balãozinho em modo edição) e CODE (o ícone parecido com um pergaminho), pois elas facilitam a leitura dos posts ;)

E vms, meu nome é com u e não com ll. ;)

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...