Q&A

  • 동적폼생성에 대한 쪽팔린 질문 올립니다요...
정말 창피함을 무릅쓰고 희안한 구문을 여쭈어 볼라고 합니다. --;
쏘스를 보시면 알겠지만.. 유닛1과 유닛2가 있습니다.
유닛1의 폼1에서 edit1에 text를 넣고 execute버튼을 누르면
집어넣은 text를 캡션으로 가지는 유닛2의 폼2를 생성합니다.

이런걸 3번 눌렀다고 치고, 이번엔 폼1의 edit2에 text를 넣고 focus버튼을 누르면
해당하는 캡션을 가진 폼2에 포커스를 줍니다.

생성된 세개의 폼2중 한군데에서 close버튼을 누르면 그 폼은 닫힙니다.

지금 이런식으로 폼을 생성한게 동적폼생성을 제대로 한건가요?
(메신저 대화창으로 발전?시킬려고 합니다 --;)

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
   excute_button: TButton;
   Edit1: TEdit;
   Edit2: TEdit;
   focus_button: TButton;
   procedure excute_buttonClick(Sender: TObject);
   procedure focus_buttonClick(Sender: TObject);
   procedure FormCreate(Sender: TObject);

private
   { Private declarations }
public
   { Public declarations }
end;

var
Form1: TForm1;
  i : integer;

implementation

{$R *.DFM}

uses unit2;

var a :array[0..10]  of TFORM2;

procedure TForm1.excute_buttonClick(Sender: TObject);
begin
   i := i+1;
   a[i] := TForm2.Create(self);
   a[i].Caption := edit1.text;
   a[i].show;
end;

procedure TForm1.focus_buttonClick(Sender: TObject);
var
   i : integer;
begin
   for I := 0 to Screen.CustomFormCount-1 do
   if Screen.CustomForms[i].caption = edit2.text then screen.CustomForms[i].SetFocus;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   i := 0;
end;

end.

------------------------------------------------------------------------
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm2 = class(TForm)
close_button: TButton;
procedure close_buttonClick(Sender: TObject);

private
   { Private declarations }
public
   { Public declarations }
end;

implementation

{$R *.DFM}

procedure TForm2.close_buttonClick(Sender: TObject);
begin
   close;    
end;

end.
0  COMMENTS