Q&A

  • listbox에서 선택한 ltem색깔 임의로 바꾸기
안녕하세염..

델파이를 공부중인 소연이에염..

많이 많이 모자라고..부족한게 많아서 이곳에 자주 들리곤 한답니다.

제가 지금 열씨미 과제를 하고 있다가 문제가 생겨서 이렇게 염치 불구하고 글을 올리네염..

문제는 리스트박스에서 팝업 메뉴를 띄우는 일인데.. 오른쪽 마우스 버튼을 누르면 팝업이 떠야 하거든여..물론 팝업은 뜨는데염..으음..문제는 팝업 메뉴가 뜨기전에 선택한 아이템에 대한 색상이 변경 되어야 하거든여..

근데 어떻게 하는지 몰라서염..

좀 도와주세염..

참고로 MouseUP/down이벤트에서 ItemAtPos 함수를 이용해서 오른쪽 마우스 버튼이 눌러졌을때의 아이템 index를 가져올수는 있거든여..

제발 좀 도와주세염...

1  COMMENTS
  • Profile
    홍성락 2001.08.03 23:46
    소연이 wrote:

    > 안녕하세염..

    > 델파이를 공부중인 소연이에염..

    > 많이 많이 모자라고..부족한게 많아서 이곳에 자주 들리곤 한답니다.

    > 제가 지금 열씨미 과제를 하고 있다가 문제가 생겨서 이렇게 염치 불구하고 글을 올리네염..

    > 문제는 리스트박스에서 팝업 메뉴를 띄우는 일인데.. 오른쪽 마우스 버튼을 누르면 팝업이 떠야 하거든여..물론 팝업은 뜨는데염..으음..문제는 팝업 메뉴가 뜨기전에 선택한 아이템에 대한 색상이 변경 되어야 하거든여..

    > 근데 어떻게 하는지 몰라서염..

    > 좀 도와주세염..

    > 참고로 MouseUP/down이벤트에서 ItemAtPos 함수를 이용해서 오른쪽 마우스 버튼이 눌러졌을때의 아이템 index를 가져올수는 있거든여..

    > 제발 좀 도와주세염...

    //////////////////////////////////////////////////////////////////////////

    아래것을 ListBox의 Mousedown이벤트에만 쓰면 키보드 화살표시로는 안되고요

    OnClick에 놓으면 조금 깜박입니다. 또 멀티선택시는 아됩니다.

    따라서 매번 OnClick에서 전체 아이템 개수만큼 for문으로 돌려 선택되었는지의 여부로 하면되고요. 아래것을 응용해보세요

    ------------------------------------------------

    var

    ALeft, ATop, ARight, ABottom: Integer;

    begin

    ListBox1.Canvas.Brush.Color := clRed;

    ALeft := 0;

    ATop := ListBox1.ItemHeight * ListBox1.ItemIndex;

    ARight := ListBox1.Width;

    ABottom := ATop + ListBox1.ItemHeight;

    ListBox1.Canvas.FillRect(Rect(ALeft, ATop, ARight, ABottom));

    ListBox1.Canvas.Font.Color := clWhite;

    ListBox1.canvas.TextRect(Rect(ALeft, ATop, ARight, ABottom),

    ALeft, ATop, ListBox1.Items.Strings[ListBox1.ItemIndex]);

    end;