Q&A

  • [컴포넌트]컴포넌트 제작에 관한 질문 입니다.
버튼을 클릭했을때 지정한 폼이 뜨도록하는 버튼 컴포넌트를 제작하려고 합니다.



unit Btn;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;



type

TBtn = class(TButton)

private

{ Private declarations }

FFormName: String;

procedure SetFormName(name:String);

protected

{ Protected declarations }

procedure Click; override;

public

{ Public declarations }

published

{ Published declarations }

property FormName:String read FFormName write SetFormName;



end;



procedure Register;



implementation



procedure TBtn.SetFormName(name:String);

begin

If name <> FFormName then

begin

FFormName := name;

Update;

end;

end;



procedure TBtn.Click;

var

i:Integer;

begin

inherited Click;

for i:=1 to Application.ComponentCount - 1 do

begin

If Application.Components[i].Name = FFormName then

begin

Application.Components[i].Show

ShowMessage('존재하는 폼입니다.');

exit;

end;

end;

ShowMessage('존재하지 않는 폼입니다.');

end;



procedure Register;

begin

RegisterComponents('Kiosk', [TBtn]);

end;



end.



주의의 조언으로 이렇게 이르게 되었습니다.

그런데 폼을 띄울수 있는 방법을 모르겠습니다.



고수님들의 친절한 답변 기다리겠습니다.!!



1  COMMENTS
  • Profile
    최용일 2000.03.20 02:50
    형변환만 해주세요...



    모들형식으로 띄우실려면 Show대신에 ShowModal을 쓰시면 됩니다.



    > procedure TBtn.Click;

    > begin

    > ...

    > begin

    > TCustomForm(Application.Components[i]).Show; <===========

    > ....





    양은주 wrote:

    > 버튼을 클릭했을때 지정한 폼이 뜨도록하는 버튼 컴포넌트를 제작하려고 합니다.

    >

    > unit Btn;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > StdCtrls;

    >

    > type

    > TBtn = class(TButton)

    > private

    > { Private declarations }

    > FFormName: String;

    > procedure SetFormName(name:String);

    > protected

    > { Protected declarations }

    > procedure Click; override;

    > public

    > { Public declarations }

    > published

    > { Published declarations }

    > property FormName:String read FFormName write SetFormName;

    >

    > end;

    >

    > procedure Register;

    >

    > implementation

    >

    > procedure TBtn.SetFormName(name:String);

    > begin

    > If name <> FFormName then

    > begin

    > FFormName := name;

    > Update;

    > end;

    > end;

    >

    > procedure TBtn.Click;

    > var

    > i:Integer;

    > begin

    > inherited Click;

    > for i:=1 to Application.ComponentCount - 1 do

    > begin

    > If Application.Components[i].Name = FFormName then

    > begin

    > Application.Components[i].Show

    > ShowMessage('존재하는 폼입니다.');

    > exit;

    > end;

    > end;

    > ShowMessage('존재하지 않는 폼입니다.');

    > end;

    >

    > procedure Register;

    > begin

    > RegisterComponents('Kiosk', [TBtn]);

    > end;

    >

    > end.

    >

    > 주의의 조언으로 이렇게 이르게 되었습니다.

    > 그런데 폼을 띄울수 있는 방법을 모르겠습니다.

    >

    > 고수님들의 친절한 답변 기다리겠습니다.!!

    >