Declarar MessageBox como variável global
01/02/2016
0
Gostaria de saber se há um jeito de declarar uma variável global cujo o valor seja uma messagebox.
Gabriel
Post mais votado
01/02/2016
procedure fechar();
begin
if( Application.Messagebox('Deseja Sair?', 'Sair', MB_YesNo+MB_IconQuestion) = id_yes) then
begin
Application.terminate;
end
end;
Leandro Gonçalves
Mais Posts
01/02/2016
Gabriel
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.
01/02/2016
Gabriel
01/02/2016
Gabriel
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'
01/02/2016
Leandro Gonçalves
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.
01/02/2016
Leandro Gonçalves
E toda tela que vc criar, é só coloca-la na Uses e chamar o método com o nome da classe.
01/02/2016
Gabriel
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
01/02/2016
Leandro Gonçalves
01/02/2016
Natanael Ferreira
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]
01/02/2016
Gabriel
Muito obrigado pela ajuda e paciência pessoal!
Clique aqui para fazer login e interagir na Comunidade :)