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

Desabiltar botão fechar


Guest --Vinícius --

Pergunta

Guest --Vinícius --

Olá pessoal beleza?!

Alguém sabe como desabilitar o botão "X" (fechar) do ShowMessage ou do MessageDlg?

Eu acredito que isso é possível pois já vi alguns sistemas que esse botão fica desabilitado, mas até o momento ainda não consegui encontrar nada...

Se alguém souber e puder me ajudar ficarei muito grato!!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Alguém sabe como desabilitar o botão "X" (fechar) do ShowMessage ou do MessageDlg?

Voce pode alterar o arquivo dialogs.pas onde estão estas funções

C:\Arquivos de programas\Borland\Delphi5\Source\Vcl\dialogs.pas

ou pode criar a sua propria janela de mensagem sem o botão fechar

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Alguém sabe como desabilitar o botão "X" (fechar) do ShowMessage ou do MessageDlg?

Voce pode alterar o arquivo dialogs.pas onde estão estas funções

C:\Arquivos de programas\Borland\Delphi5\Source\Vcl\dialogs.pas

Esta opção modificará definitivamente e para todas as aplicações que você a utilizar. Lembrando, ainda, que apenas realizando a alteração em BorderIcons para remover a opção biSystemMenu não evitará que a janela seja fechada. Deverá ser monitorado o fechamento ou feito o bloqueio da combinação ALT+F4.

O local a ser modificada a propriedade BorderIcons, possivelmente seja o mesmo do Delphi7: function CreateMessageDialog

ou pode criar a sua propria janela de mensagem sem o botão fechar
Esta opção seria mais interessante.

Em geral, apenas em diálogos de confirmação seria necessário que seu fechamento ocorresse pelo pressionamento de um botão. Mas, quando realmente necessário, ainda poderia ser contornado sem que se mexesse nos códigos fonte originais (o qual tenho aversão).

Fica uma sugestão para você testar. É uma função em que definimos um parâmetro a mais do que comumente se usa na função MessageDlg.

Faz-se necessário declara um novo tipo que será um conjunto que manterá os resultados possíveis e desejados.

type
  TMsgDlgResults = set of byte;
...
function ForcedMessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; DlgResults :TMsgDlgResults): Word;
begin
  repeat
    Result := MessageDlg(Msg, DlgType, Buttons, HelpCtx);
  until Result in DlgResults;
end;
para usar basta acrescentar o último parâmetro em relação à função tradicionalmente utilizada:
procedure TForm1.Button9Click(Sender: TObject);
begin
  if ForcedMessageDlg('Mensagem', mtConfirmation, [mbYes, mbNo], 0, [mrYes, mrNo]) = mrYes then
    ShowMessage('Pressionado YES')
  else
    ShowMessage('Pressionado NO');
end;

Abraços

Editado por Micheus
Acrescentado o exemplo
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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...