Declarar MessageBox como variável global
Bom dia,
Gostaria de saber se há um jeito de declarar uma variável global cujo o valor seja uma messagebox.
Gostaria de saber se há um jeito de declarar uma variável global cujo o valor seja uma messagebox.
Gabriel
Curtidas 0
Melhor post
Leandro Gonçalves
01/02/2016
Crie um método público no seu form principal e faça a chamada de onde quiser.
procedure fechar();
begin
if( Application.Messagebox('Deseja Sair?', 'Sair', MB_YesNo+MB_IconQuestion) = id_yes) then
begin
Application.terminate;
end
end;
procedure fechar();
begin
if( Application.Messagebox('Deseja Sair?', 'Sair', MB_YesNo+MB_IconQuestion) = id_yes) then
begin
Application.terminate;
end
end;
GOSTEI 2
Mais Respostas
Raimundo Pereira
01/02/2016
Sim, o que precisa ?
GOSTEI 0
Gabriel
01/02/2016
Na minha aplicação, gostaria de declarar uma variável global cujo o valor seja uma messagebox, pois todas as telas teriam o botão de sair, então a variável seria mais ou menos assim:
Gostaria que a messagebox fosse uma variável, para que eu não precise em toda tela ficar digitando esse código no botão sair.
Application.Messagebox('Deseja Sair?', 'Sair', MB_YesNo+MB_IconQuestion); // esta seria a variável
if( Application.Messagebox('Deseja Sair?', 'Sair', MB_YesNo+MB_IconQuestion) = id_yes) then
begin
Application.terminate;
end
Gostaria que a messagebox fosse uma variável, para que eu não precise em toda tela ficar digitando esse código no botão sair.
GOSTEI 0
Gabriel
01/02/2016
aparece uma mensagem de erro dizendo "identifier not found: id_yes" , porém já declarei o Windows no uses. O que pode estar acontecendo?
GOSTEI 0
Leandro Gonçalves
01/02/2016
utilize IDYES
GOSTEI 1
Gabriel
01/02/2016
funcionou, só uma ultima dúvida...
Tento declarar essa procedure como pública, mas dá erro quando tento chamar ela em algum botão, o código que eu fiz é:
já tentei declarar essa procedure como publica com alguns metodos que vi em minhas pesquisas, mas nenhum deu certo, sempre aparece a mensagem "identifier not foun fechar'
Tento declarar essa procedure como pública, mas dá erro quando tento chamar ela em algum botão, o código que eu fiz é:
uses
Windows, Messages, Classes, SysUtils, FileUtil, Forms, Controls, Graphics,
Dialogs, StdCtrls, ExtCtrls, DB, u_dmprincipal, dateutils, variants;
type
{ TfrmLogin }
TfrmLogin = class(TForm)
btnAcessar: TButton;
btnSair: TButton;
edtSenha: TEdit;
edtLogin: TEdit;
lblLogin: TLabel;
lblSenha: TLabel;
Panel1: TPanel;
procedure btnAcessarClick(Sender: TObject);
procedure btnSairClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
//Declaro aqui a procedure como publica
end;
var
frmLogin: TfrmLogin;
vSair : integer;
implementation
{$R *.lfm}
{ TfrmLogin }
procedure TfrmLogin.btnSairClick(Sender: TObject);
begin
fechar; // Aqui quero chamar a procedure
end;
procedure fechar();
begin
if( Application.Messagebox('Deseja Sair?', 'Sair', MB_YesNo+MB_IconQuestion) = idyes) then
begin
Application.terminate;
end;
end; já tentei declarar essa procedure como publica com alguns metodos que vi em minhas pesquisas, mas nenhum deu certo, sempre aparece a mensagem "identifier not foun fechar'
GOSTEI 0
Leandro Gonçalves
01/02/2016
unit Unit2;
interface
uses Winapi.Windows, Winapi.Messages, System.Classes, Vcl.Controls, Vcl.Forms,
Vcl.AppEvnts;
type
TAplicacao = Class
private
public
class function Fechar():String;
End;
implementation
{ TCliente }
{ TAplicacao }
class function TAplicacao.Fechar: String;
begin
if (Application.Messagebox('Deseja Sair?', 'Sair', MB_YesNo+MB_IconQuestion) = idyes) then
Begin
Application.Terminate;
End;
end;
end.
unit Unit3;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm3 = class(TForm)
BtnSair: TButton;
procedure BtnSairClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
uses Unit2;
procedure TForm3.BtnSairClick(Sender: TObject);
begin
TAplicacao.Fechar;
end;
end.
GOSTEI 1
Leandro Gonçalves
01/02/2016
Criei uma Unit para vc ter uma classe com métodos estáticos
E toda tela que vc criar, é só coloca-la na Uses e chamar o método com o nome da classe.
E toda tela que vc criar, é só coloca-la na Uses e chamar o método com o nome da classe.
GOSTEI 1
Gabriel
01/02/2016
Criei a unit e a procedure, mas o erro persiste
quando chamo a procedure no botão fechar, aparece a mesma mensagem
Declarei a unit no uses
unit u_procedures;
{$mode objfpc}{$H+}
interface
uses
Windows, Messages, Classes, SysUtils, FileUtil, Forms, Controls, Graphics,
Dialogs, StdCtrls, ExtCtrls, DB, u_dmprincipal, dateutils, variants;
implementation
procedure fechar();
begin
if( Application.Messagebox('Deseja Sair?', 'Sair', MB_YesNo+MB_IconQuestion) = idyes) then
begin
Application.terminate;
end;
end;
end.
quando chamo a procedure no botão fechar, aparece a mesma mensagem
Declarei a unit no uses
GOSTEI 0
Leandro Gonçalves
01/02/2016
Você tem que criar uma classe conforme eu criei no exemplo (1º bloco), depois nas outras telas você chama o método conforme (2º bloco).
GOSTEI 1
Natanael Ferreira
01/02/2016
Faltou declarar a procedure logo abaixo do código da Uses.
Teste assim sua unit de procedures:
[Quote]unit u_procedures;
{$mode objfpc}{$H+}
interface
uses
Windows, Messages, Classes, SysUtils, FileUtil, Forms, Controls, Graphics,
Dialogs, StdCtrls, ExtCtrls, DB, u_dmprincipal, dateutils, variants;
procedure fechar(); // Adicionei esta linha
implementation
procedure fechar();
begin
if (Application.Messagebox('Deseja Sair?', 'Sair', MB_YesNo + MB_IconQuestion) = idyes) then
begin
Application.terminate;
end;
end;
end.[/Quote]
Teste assim sua unit de procedures:
[Quote]unit u_procedures;
{$mode objfpc}{$H+}
interface
uses
Windows, Messages, Classes, SysUtils, FileUtil, Forms, Controls, Graphics,
Dialogs, StdCtrls, ExtCtrls, DB, u_dmprincipal, dateutils, variants;
procedure fechar(); // Adicionei esta linha
implementation
procedure fechar();
begin
if (Application.Messagebox('Deseja Sair?', 'Sair', MB_YesNo + MB_IconQuestion) = idyes) then
begin
Application.terminate;
end;
end;
end.[/Quote]
GOSTEI 1
Gabriel
01/02/2016
Leandro, desculpe não tinha visto sua resposta rs, mas agora deu certo
Muito obrigado pela ajuda e paciência pessoal!
Muito obrigado pela ajuda e paciência pessoal!
GOSTEI 1