Fórum Erro em chamada de procedure externa #169214

13/07/2003

0

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´


//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

Fabio_jrn

Responder

Posts

14/07/2003

Rômulo Barros

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]


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar