Q&A

  • 동적컴포넌트 생성시 오류
간만에 글을 올리네여.. 오류가요.. 글세.. 메인메뉴에서 클릭하면 자식 폼이 생성되면서 버튼컴포넌트가 생성이 되거든요. 아주잘되요 그런데 그 폼을 닫고 다시 폼을 열면 오류가 나네요.. 어찌 그런지..폼 닫을때 클리어도 시켜주었는데여... 소스는 담과 같습니다.
for month_Count := 1 to 15 do
begin
  Lab[Month_Count] := TwLabel.Create(F_Day);
   Lab[Month_Count].Parent := FlatPanel1;
   Lab[Month_Count].Width  := 70;
   Lab[Month_Count].Height := 70;
   Lab[Month_Count].Left      := YoiL * 70 - 70 + (Betton_Com);
   Lab[Month_Count].Top       := Row_Count * 70 - 70 + (Row_Count * 5);
   Lab[Month_Count].BorderStyle := mlbsLine;
   Lab[Month_Count].Layout      := tlTop;
   Lab[Month_Count].Alignment := taRightJustify;
   Lab[Month_Count].BorderColor := Lab[Month_Count].Color;
end;

오류내용은... abstract error 이렇게 아.. 왜그런지..
1  COMMENTS
  • Profile
    김경록 2003.09.04 06:55
    clear 시킨다는게 무슨 뜻인지 모르겠군여..
    저 같은 경우에 배열을 사용하진 않구여..
    해당 컴포넌트의 name을 순번으로 매겨서 사용한답니다..
    어쨌든..
    동적으로 저도 생성해보고..
    해제도 많이 해보고.. 똑같은 폼을 열고 닫고
    수십번 반복 작업을 하여도 문제가 없었습니다.

    제가 했던 방법은

    일단, 동적으로 생성한 것은
    해당 Form이 Destroy될때에 Assinged(동적변수명)을
    check해서.. 있으면, 해지 시키는 방법을 썼습니다..
    물론, Free하고, Nil도 할당하고 말입니다..
    델파이가..
    동적으로 생성한 Class들을 변수에 옮기는 것은 잘하는데..
    즉, 활용을 잘하게 해 놓았는데..
    해제부분에서는 영~~~  
    한번씩 에러가 난답니다.. 버젼업해도 마찬가지더군여..
    그래서.. 전 델3쓸때부터..
    동적 생성하면,
    동적변수를 꼭 Free해주고..
    Nil을 대입시켜 줬었습니다..

    님이 말씀하신 Clear가 FreeAndNil인지 아닌지는 모르겠지만..
    확실이 해제하는 부분에서 확실히 해제가 되지 않아서
    그럴겁니다..

    Form이 Destroy될때에는 어떤 컴포넌트던지 다 사용하지 않을테니까
    모두 해지해 주세요..
    For문 사용해서 Free하던지..
    어쨌든 모두 해지해 주세여..
    그럼 에러가 나지 않을겁니다..

    저는 동적메뉴, 각 MID Child가 생성시에..
    Main Form에 해당버튼 생성등을 하여도.. 별 문제가 없었던거로
    기억이 납니다..
    물론, 해제하고.. 또 생성하고.. 해도 말입니다.
    다시 한번, Destroy에서 FreeAndNil을 하시는지
    확인해 보세요..