Q&A

  • 델파이 고수님들 도와주세요!!!
메인폼(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;



0  COMMENTS