좀, 황당해서..
먼저 아래 소스좀 봐주시죠.
{Form1}
dbpath:String;
procedure TForm1.ShowTables;
begin
if not Assigned(Form2) then
Form2:= TForm2.Create(Self);
Form2.TableDir:= dbpath;
Form2.Show;
end;
procedure TForm1.O1click(Sender:TObject);
var
dbname:String;
begin
dbname:=''
Form3:= TForm3.Create(Self);
try
if Form3.ShowModal=mrOk then
dbname:= Form3.Choosedb;
finally
Form3.Free;
end;
if dbname='' then begin
{do something}
Exit;
end;
dbpath:= dbname;
ShowTables;
end;
{TForm2}
public
TableDir:String;
procedure TForm2.FormActivate(Sender:TObject);
begin
ShowMessage(Form1.dbpath);
ShowMessage(TableDir);
end;
procedure TForm2.FormClose(Sender:TObject);
begin
Action:= caFree;
Form2 := nil;
end;
문제는 Form2에서 Form1.dbpath와 TableDir의 값이 다르다는 것입니다. Form1.dbpath에는 제값이 나오고, Form2.TableDir에는 빈값이 나오더군요.
이런 일이 생긴다는게 이해하기 힘들어서요. 아시는분은 좀 알려주시길 부탁드립니다.
제환경은 델3, 윈도98입니다.