여러군데 찾아 봐도 설명이 없어서 질문을 드립니다.
제가 콤보박스를 동적으로 생성할 일이 생겨서 여기저기 찾아 보았지만 없는 것 같아 이렇게 질문을 드리게 되었습니다.
폼에서 생성시킨 콤보박스는 아무 문제없이 사용이 가능한데. 프로그램실행시 콤보박스를 새로생성하게 될때는 생성이 않되고 있습니다. "Control ''에 이상있다"는 정도의 에러가 뜨는데 해결 방법은 없는지요?
ComboBox.Create;를 호출한뒤 폼에서 생성한 속성을 그대로 하나하나 복사하는데 까지는 성공했는데.
속성중에 Items부분을 복사해 오는데서 문제가 발생을 하는군요. Items가 TStrings로 되어 있는데 일반적인 스트링과는 다른 것이네요.
이부분을 정의하는 것을 뛰어 넘고 콤보박스를 생성시키게 되면 화면에 보이지도 않는군요.
대충의 코드는 아래와 같습니다.
<!--CodeS-->
combo := ComboBox.Create(self); // 콤보박스 생성
combo.Style := cbox[i-1].Style;
combo.Color := cbox[i-1].Color;
combo.ColorArrow := cbox[i-1].ColorArrow;
combo.ColorArrowBackground := cbox[i-1].ColorArrowBackground;
combo.ColorBorder := cbox[i-1].ColorBorder;
combo.AdvColorBorder := cbox[i-1].AdvColorBorder;
combo.AdvColorArrowBackground := cbox[i-1].AdvColorArrowBackground;
combo.UseAdvColors := cbox[i-1].UseAdvColors;
.
.
.
// 위와 같이 존재하고 있는 콤보박스의 속성을 그대로 복사했습니다.
combo.Items := cbox[i-1].Items; // <- 이 부분에서 에러가 나네요
<!--CodeE-->
해결할 방법이 없겠습니까? 고수분들의 조언을 구합니다.
Combo := TComboBox.Create(nil);
Combo.ParentWindow := Form1.Handle;
Combo.Height := 30;
Combo.Top := 100;
Combo.Left := 300;
Combo.Width := 100;
Combo.Items.Assign(ComboBox1.Items);
Combo.Visible := True;
<!--CodeE-->
위에 보시면 아시다시피 동적 생성한 Combo 의 해제를 안 합니다. 그러니 실전에서는 꼭
메모리 해제하시는걸 빠뜨리시면 안 됩니다.