Q&A

  • ListView에서 특정 라인의 색을 변경하려면?
listview 에서 특정라인 색을 변경하려면 어떻게 하는지 아시느분은

답변 부탁드립니다....



가령 숫자값이 0 보다 적을경우에만 색갈을 바꾸고 싶을때는 어떻게 하는지 궁금해요..



4  COMMENTS
  • Profile
    최용일 2000.02.26 01:25
    OwnerDraw프라퍼티를 참으로 하고 OnDrawItem이벤트를 오버라이드하여 사용하세요..



    Listview wrote:

    > listview 에서 특정라인 색을 변경하려면 어떻게 하는지 아시느분은

    > 답변 부탁드립니다....

    >

    > 가령 숫자값이 0 보다 적을경우에만 색갈을 바꾸고 싶을때는 어떻게 하는지 궁금해요..

    >

  • Profile
    Listview 2000.02.26 21:35
    최용일님 답변 감사합니다...

    제가 초보라서 그러는데...

    샘플 소스로 좀 설명해 주시면 고맙겠습니다....

    델파아를 공부하면서 프로젝트를 수행할려니 막히는 부분이 너무 많군요...





    최용일 wrote:

    > OwnerDraw프라퍼티를 참으로 하고 OnDrawItem이벤트를 오버라이드하여 사용하세요..

    >

    > Listview wrote:

    > > listview 에서 특정라인 색을 변경하려면 어떻게 하는지 아시느분은

    > > 답변 부탁드립니다....

    > >

    > > 가령 숫자값이 0 보다 적을경우에만 색갈을 바꾸고 싶을때는 어떻게 하는지 궁금해요..

    > >

  • Profile
    최용일 2000.02.28 05:22
    다음은 원하시는 OwnerDraw 샘플입니다.



    procedure TForm1.ListView1DrawItem(Sender: TCustomListView;

    Item: TListItem; Rect: TRect; State: TOwnerDrawState);

    // OwnerDraw가 True일 때만 그려진다.

    begin

    if StrToInt(Item.Caption) < 0 then

    begin

    Sender.Canvas.Brush.Color := StrToInt(Item.Caption)* -1;

    Sender.Canvas.Font.Color := (StrToInt(Item.Caption)* -1) + 128;

    Sender.Canvas.FillRect(Rect);

    Sender.Canvas.TextOut(Rect.Left + 2, Rect.Top, Item.Caption);

    end

    else // 보통때처럼 그린다.

    begin

    Sender.Canvas.FillRect(Rect);

    Sender.Canvas.TextOut(Rect.Left + 2, Rect.Top, Item.Caption);

    end;

    end;

  • Profile
    Listview 2000.02.28 21:01
    많은 도움 되었습니다....

    진심으로 감사드립니다...........







    최용일 wrote:

    > 다음은 원하시는 OwnerDraw 샘플입니다.

    >

    > procedure TForm1.ListView1DrawItem(Sender: TCustomListView;

    > Item: TListItem; Rect: TRect; State: TOwnerDrawState);

    > // OwnerDraw가 True일 때만 그려진다.

    > begin

    > if StrToInt(Item.Caption) < 0 then

    > begin

    > Sender.Canvas.Brush.Color := StrToInt(Item.Caption)* -1;

    > Sender.Canvas.Font.Color := (StrToInt(Item.Caption)* -1) + 128;

    > Sender.Canvas.FillRect(Rect);

    > Sender.Canvas.TextOut(Rect.Left + 2, Rect.Top, Item.Caption);

    > end

    > else // 보통때처럼 그린다.

    > begin

    > Sender.Canvas.FillRect(Rect);

    > Sender.Canvas.TextOut(Rect.Left + 2, Rect.Top, Item.Caption);

    > end;

    > end;