메인폼(unit1)이 있고 메인폼에 폼없는 유닛(unit2)을 추가합니다
메인폼에서 uses절에 unit2를 추가합니다.
메인폼에서 펑션과 프로시져를 만들고 unit2에서도 이 펑션과 프로시져를
사용하기 위해 uses절에 unit1을 추가하지 않고 펑션과 프로시져를 변수로
선언한뒤 메인폼에서 unit2를 create하면서 펑션,프로시져변수에 메인폼에
있는 펑션과 프로시져를 할당해서 사용할수 없을까요?
MyClass := TMyClass.Create;
MyClass.MyFunc1 := MyFunc1;
MyClass.MyProc1 := MyProc1;
MyClass.Free;
이런식으로 코딩하니까 컴파일시 에라가 나는군요!(무식해서 TT)
아래 간단한 코딩을 보고 고수님들의 답변을 기대합니다.
코딩양이 많은 유닛을 몇개의 함수를 사용하기 위해 uses절에 포함시키면
메모리를 잡어먹을까 걱정이되고(실제는 어떻습니까?) 또 unit2에 있는 클레스를
여러군데서 공통으로 사용하기 위해서 시도해 봅니다.
//메인폼
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
Function MyFunc1(Inputcode : String) : String;
Procedure MyProc1(Tem : String);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
Function TForm1.MyFunc1(Inputcode : String) : String;
begin
//....
//....
Result := 'test';
end;
Procedure TForm1.MyProc1(Tem : String);
begin
Showmessage(Tem);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MyClass := TMyClass.Create;
MyClass.MyFunc1 := MyFunc1;
MyClass.MyProc1 := MyProc1;
MyClass.Free;
end;
//폼없는 유닛
unit Unit2;
interface
type
TMyClass = class
private
{ Private declarations }
public
{ Public declarations }
MyFunc1 : Function(Inputcode : String) : String;
MyProc1 : Procedure(Tem : String);
Procedure MyUsesFuncAndProc;
end;
implementation
Procedure TMyClass.MyUsesFuncAndProc;
var
StrValue : String;
begin
StrValue := MyFunc1('aaa');
MyProc1(StrValue);
end;