디자인 타임에 Object를 생성하면 ,
Edit1, Edit2...이런 식으로 Name 속성이 설정됩니다.
그걸 Runtime에 Edit1.Text이렇게 쓸 수있고요..
물론 디자인 타임에 같은 이름은 정의 할 수 없잖아요..
그런데, Runtime에 생성했을 때에는 Name 속성은 어떻게 되죠?
예를 들어,
var
Edit : TEdit;
begin
for i := 0 to 10 do
begin
Edit := TEdit.Create(nil);
end;
이렇게 하면, 같은 Edit 이 11개 생성되는게 아닌가요?
왜 에러가 나지 않을까요..?
디자인타임에서는 Edit은 같은 이름으로는 하나밖에 생성을 못하는데 Runtime에서는
저렇게 생성해도 에러가 안나는건 왜 그런지요...
그리고 디자인 타임에 생성된 객체는 Edit1.Text, Edit2.Text 이렇게, Runtime에 사용하는데, 위와 같이 Runtime에 생성된 객체들의 각각을 어떻게 가져다 쓸수 있을까요..
생성될때마다 , Name 속성을 지정해줘야 하나요?
for i := 0 to 10 do
begin
Edit := TEdit.Create(nil);
Edit.Name := 'Edit' + IntToStr(i);
end;
헷갈리는군요...-_-;
> 디자인 타임에 Object를 생성하면 ,
> Edit1, Edit2...이런 식으로 Name 속성이 설정됩니다.
> 그걸 Runtime에 Edit1.Text이렇게 쓸 수있고요..
> 물론 디자인 타임에 같은 이름은 정의 할 수 없잖아요..
>
> 그런데, Runtime에 생성했을 때에는 Name 속성은 어떻게 되죠?
> 예를 들어,
> var
> Edit : TEdit;
> begin
> for i := 0 to 10 do
> begin
> Edit := TEdit.Create(nil);
> end;
>
> 이렇게 하면, 같은 Edit 이 11개 생성되는게 아닌가요?
> 왜 에러가 나지 않을까요..?
> 디자인타임에서는 Edit은 같은 이름으로는 하나밖에 생성을 못하는데 Runtime에서는
> 저렇게 생성해도 에러가 안나는건 왜 그런지요...
>
> 그리고 디자인 타임에 생성된 객체는 Edit1.Text, Edit2.Text 이렇게, Runtime에 사용하는데, 위와 같이 Runtime에 생성된 객체들의 각각을 어떻게 가져다 쓸수 있을까요..
>
> 생성될때마다 , Name 속성을 지정해줘야 하나요?
> for i := 0 to 10 do
> begin
> Edit := TEdit.Create(nil);
> Edit.Name := 'Edit' + IntToStr(i);
> end;
>
> 헷갈리는군요...-_-;
>
런타임때 컨트롤을 생성하면 여러 잇점이 있습니다.
var RunTimeEdit : Array[1..10] of TEdit;
..
..
for ii := 1 to 10 do
begin
RunTimeEdit[ii] := TEdit.create(nil);
RunTimeEdit[ii].parent := Panel1;
RunTimeEdit[ii].Text := '';
RunTimeEdit[ii].left := ((ii -1) Mod 5) * 80);
RunTimeEdit[ii].Top := ((ii -1) div 5) * 30);
end;
이렇게 사용하시면...
배열로 만들어져.. 정말 사용하기 편해집니다.
크리어시킬때나..
아니면.. 여러가지로..
즐코^^;