Q&A

  • ListBox와 Popupmenu 연결에서
ListBox에 열거된 Item의 내용을 Popupmenu Item의 캡션에 대입해서 이벤트를 발생

시키려 합니다. 그래서 일단 아래처럼 코딩을 했거든요.



N1.Caption:=ListBox1.Items[0];

N2.Caption:=ListBox1.Items[1];

N3.Caption:=ListBox1.Items[2];



그런데 ListBox1.Items[2]에는 내용이 없으므로 컴파일을 하면 'listindex out of

bound(2)'라는 에러가 뜹니다. 당연한 일이지요.

여기서 제가 알고 싶은 것은 ListBox1.Items[2]에 내용이 있으면 N3.Caption에

보여 주고 내용이 없으면 에러 없이 넘어가게 할 수는 없는가 하는 점입니다.



3  COMMENTS
  • Profile
    모두 사랑 2001.01.09 08:05
    모두 사랑 wrote:

    > ListBox에 열거된 Item의 내용을 Popupmenu Item의 캡션에 대입해서 이벤트를 발생

    > 시키려 합니다. 그래서 일단 아래처럼 코딩을 했거든요.

    >

    > N1.Caption:=ListBox1.Items[0];

    > N2.Caption:=ListBox1.Items[1];

    > N3.Caption:=ListBox1.Items[2];

    >

    > 그런데 ListBox1.Items[2]에는 내용이 없으므로 컴파일을 하면 'listindex out of

    > bound(2)'라는 에러가 뜹니다. 당연한 일이지요.

    > 여기서 제가 알고 싶은 것은 ListBox1.Items[2]에 내용이 있으면 N3.Caption에

    > 보여 주고 내용이 없으면 에러 없이 넘어가게 할 수는 없는가 하는 점입니다.

    >

  • Profile
    yytr 2001.01.08 08:59
    모두 사랑 wrote:

    > ListBox에 열거된 Item의 내용을 Popupmenu Item의 캡션에 대입해서 이벤트를 발생

    > 시키려 합니다. 그래서 일단 아래처럼 코딩을 했거든요.

    >

    > N1.Caption:=ListBox1.Items[0];

    > N2.Caption:=ListBox1.Items[1];

    > N3.Caption:=ListBox1.Items[2];

    >

    > 그런데 ListBox1.Items[2]에는 내용이 없으므로 컴파일을 하면 'listindex out of

    > bound(2)'라는 에러가 뜹니다. 당연한 일이지요.

    > 여기서 제가 알고 싶은 것은 ListBox1.Items[2]에 내용이 있으면 N3.Caption에

    > 보여 주고 내용이 없으면 에러 없이 넘어가게 할 수는 없는가 하는 점입니다.

    >





    if 3 <= ListBox1.Items.Count then

    begin

    N1.Caption:=ListBox1.Items[0];

    N2.Caption:=ListBox1.Items[1];

    N3.Caption:=ListBox1.Items[2];

    end

    else

    if 2 <= ListBox1.Items.Count then

    begin

    N1.Caption:=ListBox1.Items[0];

    N2.Caption:=ListBox1.Items[1];

    end

    else

    if 1 <= ListBox1.Items.Count then

    begin

    N1.Caption:=ListBox1.Items[0];

    end;





    이렇게 하시거나



    if 0 < ListBox1.Items.Count then

    N1.Caption:=ListBox1.Items[0];



    if 1 < ListBox1.Items.Count then

    N2.Caption:=ListBox1.Items[1];



    if 2 < ListBox1.Items.Count then

    N3.Caption:=ListBox1.Items[2];

    이렇게 하시면 됩니다.



  • Profile
    parkisu 2001.01.08 08:58
    모두 사랑 wrote:

    > ListBox에 열거된 Item의 내용을 Popupmenu Item의 캡션에 대입해서 이벤트를 발생

    > 시키려 합니다. 그래서 일단 아래처럼 코딩을 했거든요.

    >

    > N1.Caption:=ListBox1.Items[0];

    > N2.Caption:=ListBox1.Items[1];

    > N3.Caption:=ListBox1.Items[2];

    >

    > 그런데 ListBox1.Items[2]에는 내용이 없으므로 컴파일을 하면 'listindex out of

    > bound(2)'라는 에러가 뜹니다. 당연한 일이지요.

    > 여기서 제가 알고 싶은 것은 ListBox1.Items[2]에 내용이 있으면 N3.Caption에

    > 보여 주고 내용이 없으면 에러 없이 넘어가게 할 수는 없는가 하는 점입니다.

    >



    안녕하세요.

    if ListBox1.Items.Count=2 then

    N3.Caption:= ListBox1.Items[2];

    아니면 아래처럼 해도 되겠죠.



    var

    m:TMenuItem;

    begin

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

    begin

    m:= Self.FindComponent('N'+InttoStr(i+1)) as TMenuItem;

    if m<>nil then

    m.Caption:= ListBox1.Items[i];

    end;

    end;