|
그냥 제 생각에는 Change루틴에 판단을 걸어놓는 것은 자신이 자신을 부르는 재귀적 형태가 되어 버려서 그런듯 하다는 생각이 듭니다. (정확한 답은 저도 모르겠습니다)
간단하게 이렇게 하시는 것은 어떨까요? Add를 직접 호출하시지 말고.. 함수를 하나 거쳐서 추가되도록 하고 추가할 때 지우지않고 추가할 수 있는지 확인해 보는 겁니다... 예를 들어보이면 아래와 같습니다.
간단하지요? Add를 직접적으로 사용하신 곳을 AddRec로 대체하시면... 될듯..
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
for(int i=0; i<5; i++) AddRec(i);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AddRec(AnsiString AddStr)
{
if(RichEdit1->Lines->Count > 6) RichEdit1->Lines->Delete(0); // 6개이상이면 처음 하나 지우고
RichEdit1->Lines->Add(AddStr); // 하나 추가
}
//---------------------------------------------------------------------------
★래미★ 님이 쓰신 글 :
: 안녕하세요.
: RichEdit 에서 라인 삭제가 잘 안되어 질문 올립니다.
: 몇 라인 이상이 되면 맨위에서부터 삭제하고 싶은데요.(overflow 문제때문에요)
: RichEdit1->Lines->Delete(0);
: 이렇게 하는데.. RichEdit line insertion error 라고 오류가 나네요.
: Delete랑 Add가 충돌난거 같은데 어떻게 해결해야 할지 알려주시면 감사하겠습니다.
: 아니면.. RichEdit1Change 이 이벤트에 하는게 잘못된것인지;;;
:
: RichEdit1Change이벤트에 넣지 않고 Button1Click에서 삭제하면 잘 됩니다.
: 그런데, 실제 코딩에서는 RichEdit1에 Add 하는 부분이 여기 저기 흩어져 있어요.
:
: 또는... overflow 문제를 해결할 더 좋은 방법을 알려주세요 ㅠㅠ
:
:
:
: void __fastcall TForm1::RichEdit1Change(TObject *Sender)
: {
: while(RichEdit1->Lines->Count > 6)
: RichEdit1->Lines->Delete(0);
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: for(int i=0; i<5; i++)
: RichEdit1->Lines->Add(i);
: }
: //---------------------------------------------------------------------------
|