Q&A

  • 리스트박스 사용시 에러가...
* 사용환경 : 델파이5

* 에러 메시지 : List Index out of bounds(1) (내용 두개로 테스트시에 에러)



두개의 리스트 박스가 있습다.

왼쪽리스트 박스의 내용을 선택하고 버튼을 클릭하면 오른쪽 리스트박스로 내용을

이동시키려 합니다.



삽입은 문제가 없는데 지울때 에러가 발생하는거 같은데 어찌 해결을 해야할지

모르겠슴다. 도와주세요... 초보의 비애임다.



참고로 코딩내용임다.

procedure TformFrCardTran.btnRightMoveClick(Sender: TObject);

var

i : integer;

begin

for i:=0 to lbCard.Items.Count - 1 do begin

if lbCard.Selected[i] = True then begin

lbSelectCard.Items.Add(lbCard.Items[i]);

end;

end;

for i:=0 to lbCard.Items.Count - 1 do begin

if lbCard.Selected[i] = True then begin

lbCard.Items.Delete(i);

end;

end;

end;

2  COMMENTS
  • Profile
    델초 2001.07.03 21:12
    이것은 델파이코리아에서 얻은 답변입니다.(에벤에셀 buddy72@netian.com)

    질문이 고민보다 빠른 해결방법이네요.. -초보의 한마디-



    Items 의 인덱스 값들이 변하게 됩니다.

    자세한 설명보단 해결 방법을 먼저 알려드리지요.



    지우는 부분만 설명하겠습니다

    for i := lbCard.Items.Count - 1 downto 0 do

    if lbCard.Selected[i] = True then

    lbCard.Items.Delete(i);





    델초 wrote:

    > * 사용환경 : 델파이5

    > * 에러 메시지 : List Index out of bounds(1) (내용 두개로 테스트시에 에러)

    >

    > 두개의 리스트 박스가 있습다.

    > 왼쪽리스트 박스의 내용을 선택하고 버튼을 클릭하면 오른쪽 리스트박스로 내용을

    > 이동시키려 합니다.

    >

    > 삽입은 문제가 없는데 지울때 에러가 발생하는거 같은데 어찌 해결을 해야할지

    > 모르겠슴다. 도와주세요... 초보의 비애임다.

    >

    > 참고로 코딩내용임다.

    > procedure TformFrCardTran.btnRightMoveClick(Sender: TObject);

    > var

    > i : integer;

    > begin

    > for i:=0 to lbCard.Items.Count - 1 do begin

    > if lbCard.Selected[i] = True then begin

    > lbSelectCard.Items.Add(lbCard.Items[i]);

    > end;

    > end;

    > for i:=0 to lbCard.Items.Count - 1 do begin

    > if lbCard.Selected[i] = True then begin

    > lbCard.Items.Delete(i);

    > end;

    > end;

    > end;

  • Profile
    loke 2001.07.03 21:11
    삭제부분을 이렇게 고쳐보심이...



    i := 0;

    while i < listbox1.items.count do

    begin

    if listbox1.Selected[i] = True then

    listbox1.Items.Delete(i)

    else inc(i);

    end;