|
답변 감사드립니다. (__)
외랑님 말씀대로 재귀적 형태로 되는 것 같아요. 쓰려고 준비중에(?) change 함수로 들어오다가 라인을 삭제하고 돌아가면 이전 정보랑 틀려서 그런가바요 ㅡㅜ
할수없이 외랑님 하신 것과 비슷한 방법으로 다른 함수를 추가해서 쓰고 지우고를 한 함수에서 하도록 자체 해결했네요~~ 신경 써 주셔서 감사합니다^^
외랑 님이 쓰신 글 :
: 그냥 제 생각에는 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);
: : }
: : //---------------------------------------------------------------------------
|