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