Erro em chamada de procedure externa
Eu tenho uma Unit chamada Rotinas Gerais, onde estou colocando tudo q uso regularmente. Quero colocar uma procedure ´FormDestroy´ nela e quero executa-la na minha Unit Principal, no evento OnDestroy.
O problema é q o codigo q funciona na Unit Principal nao funciona se eu o coloco na Unit RotinasGerais e o chamo na Unit Principal.
Me indicaram colocar DestroySaida(Sender) na minha Unit principal e trocar o Self pelo Sender na minha Unit RotinasGerais
Mas agora o erro é :
[Error] RotinasGerais.pas(27): Undeclared identifier: ´Handle´
[Fatal Error] Principal.pas(62): Could not compile used unit ´RotinasGerais.pas´
O problema é q o codigo q funciona na Unit Principal nao funciona se eu o coloco na Unit RotinasGerais e o chamo na Unit Principal.
Me indicaram colocar DestroySaida(Sender) na minha Unit principal e trocar o Self pelo Sender na minha Unit RotinasGerais
Mas agora o erro é :
[Error] RotinasGerais.pas(27): Undeclared identifier: ´Handle´
[Fatal Error] Principal.pas(62): Could not compile used unit ´RotinasGerais.pas´
//Como estou fazendo minha chamada no evento onDestroy da minha janela principal procedure TJanelaPrincipal.FormDestroy(Sender: TObject); begin DestroySaida(Sender); //essa é a procedure, da Unit RotinasGerais, q quero executar end;
unit RotinasGerais; interface uses Windows, SysUtils, ShellApi, Controls, Menus; procedure DestroySaida(Sender: TObject); var JanelaPrincipal: TJanelaPrincipal; NotifyIconData : TNotifyIconData; implementation uses principal; // aki eu faço uma chamada da Unit principal para qualquer necessidade procedure DestroySaida(Sender: TObject); //esta é a procedure !!!! begin with NotifyIconData do begin cbSize := SizeOf(TNotifyIconData); Wnd := Self.Handle; // aki q da o erro !!! uId := 0; uFlags := 0; end; Shell_NotifyIcon(NIM_DELETE,@NotifyIconData); end; end.
Fabio_jrn
Curtidas 0
Respostas
Rômulo Barros
13/07/2003
Tenta o Seguinte:
[color=red:8a71a1c769]unit URotinasGerais;[/color:8a71a1c769]
interface
Uses Forms;
Procedure DestruirFormulario(Formulario : TForm);
implementation
Procedure DestruirFormulario(Formulario : TForm);
Begin
Formulario.Destroy;
End;
end.
//*************** Fim da Unit RotinasGerais ***************
[color=red:8a71a1c769]unit UPrincipal;[/color:8a71a1c769]
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses URotinasGerais;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
DestruirFormulario(TForm(Self));
end;
end.
[color=blue:8a71a1c769][size=18:8a71a1c769]Testei apenas com um click em um button.. Tente do jeito que quiser...[/size:8a71a1c769][/color:8a71a1c769]
[color=red:8a71a1c769]unit URotinasGerais;[/color:8a71a1c769]
interface
Uses Forms;
Procedure DestruirFormulario(Formulario : TForm);
implementation
Procedure DestruirFormulario(Formulario : TForm);
Begin
Formulario.Destroy;
End;
end.
//*************** Fim da Unit RotinasGerais ***************
[color=red:8a71a1c769]unit UPrincipal;[/color:8a71a1c769]
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses URotinasGerais;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
DestruirFormulario(TForm(Self));
end;
end.
[color=blue:8a71a1c769][size=18:8a71a1c769]Testei apenas com um click em um button.. Tente do jeito que quiser...[/size:8a71a1c769][/color:8a71a1c769]
GOSTEI 0