동적으로 생성한 탭쉬트에 동적으로 생성한 스트링그리드의 명칭을
알고 싶습니다.
여러개의 탭쉬트를 동적으로 생성할때마다 스트링그리드를 한개씩 생성하였습니다.
var Tsg : TstringGrid;
i_Page_Count : integer;
begin
with PageControl1 do
begin
with TTabSheet.Create(Self) do
begin
PageControl := PageControl1;
Name := 'tabsheet' + inttostr(i_Page_Count);
TSg := TStringGrid.Create(self);
TSg.parent := PageControl1.Pages[i_Page_Count-1];
TSg.Name := 'Sg' + inttostr(i_Page_Count);
TSg.Align := alClient;
end;
이렇게 해서 5개의 탭과 그리드를 추가한 후에
3번째 탭쉬트와 그리드를 삭제하고 싶습니다.
탭 삭제는 쉽게 되는데, 그리드의 명칭을 알아야
되는데 알 방법이 없습니다.
고수님들의 명언 바랍니다.
탭쉬트삭제가 쉽게 된다면 굳이 스트링그리드의 이름을 알필요는 없을거 같군요.
탭쉬트나 판넬같은 컨테이너클래스들은 Coltrols란 배열속성에 자식컨트롤을 넣어두니까
이걸 검색해서 삭제하시면 되겠네요...
var
I: Integer;
begin // TabSheet3 = 세번째탭쉬트
for I := TabSheet3.ControlCount - 1 downto 0 do
if TabSheet3.Controls[I] is TStringGrid then
TabSheet3.Controls[I].Free;
end;
탭쉬트에 스트링그리드 하나뿐이라면 for문 돌릴필요도 없겠네요...
TabSheet3.Controls[0].Free;
^^ 항상 즐코하세요...
BLUE wrote:
>
> 동적으로 생성한 탭쉬트에 동적으로 생성한 스트링그리드의 명칭을
> 알고 싶습니다.
>
> 여러개의 탭쉬트를 동적으로 생성할때마다 스트링그리드를 한개씩 생성하였습니다.
> var Tsg : TstringGrid;
> i_Page_Count : integer;
> begin
> with PageControl1 do
> begin
> with TTabSheet.Create(Self) do
> begin
> PageControl := PageControl1;
> Name := 'tabsheet' + inttostr(i_Page_Count);
>
> TSg := TStringGrid.Create(self);
> TSg.parent := PageControl1.Pages[i_Page_Count-1];
> TSg.Name := 'Sg' + inttostr(i_Page_Count);
> TSg.Align := alClient;
> end;
>
> 이렇게 해서 5개의 탭과 그리드를 추가한 후에
> 3번째 탭쉬트와 그리드를 삭제하고 싶습니다.
> 탭 삭제는 쉽게 되는데, 그리드의 명칭을 알아야
> 되는데 알 방법이 없습니다.
>
> 고수님들의 명언 바랍니다.