프로젝트 코드
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
메인 유닛의 코드
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
Unit2; // ShowModal로 열기 위해 해당 유닛 참조
procedure TForm1.Button1Click(Sender: TObject);
var
Dialog: TForm2;
begin
Dialog := TForm2.Create(Application);
try
Dialog.ShowModal;
finally
Dialog.Free;
end;
end;
end.
차일드 유닛의 코드
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, unit1; // <-- 메인폼을 참조하기 위해서...
type
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.Edit1.Text := '11111'
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Form1.Edit1.Text := '22222'
end;
이성진 님이 쓰신 글 :
: 안녕하세요.
: 잘 안풀리는 문제가 있습니다.
:
: 현제 어느창에서 모달폼을 열고 부모창이 아닌 모달폼에서 부모창에 있는 것들을 컨트롤해야 합니다
: 헌데 Access Violation 에러가 나네요.
: 부모창을 auto_create_form 으로 하면 괜찮지만 그렇게 하면 안돼거든요
: 분명히 방법이 있을것 같은데 찾기가 어렵습니다.
: 조언 부탁드립니다.
|