버튼을 클릭했을때 지정한 폼이 뜨도록하는 버튼 컴포넌트를 제작하려고 합니다.
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.
주의의 조언으로 이렇게 이르게 되었습니다.
그런데 폼을 띄울수 있는 방법을 모르겠습니다.
고수님들의 친절한 답변 기다리겠습니다.!!
모들형식으로 띄우실려면 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.
>
> 주의의 조언으로 이렇게 이르게 되었습니다.
> 그런데 폼을 띄울수 있는 방법을 모르겠습니다.
>
> 고수님들의 친절한 답변 기다리겠습니다.!!
>