Q&A

  • ListView에 대한 질문입니다
RunTim 상태에서 ListView의

특정 Colume의 Width가 변할때 그 변화되는 Width의 값을

받아올수는 없습니까??

고수님들 비오는 우울한 날이 초보는 더욱 우울합니다. ^^

답변 주시면 감사하겠습니다, ^^


4  COMMENTS
  • Profile
    최석기 2002.04.29 23:23
    ListView1.Columns[0].Width
    이런 식으로 얻어오면 됩니다.

  • Profile
    김도형 2002.04.29 23:57
    ^^..

    그렇게 받아 오는건 알고 있는데염..

    제가 클릭한 Column에 대한 정보를 받아 오는거를 바란건데...

    procedure TForm1.ListView2ColumnClick(Sender: TObject;
      Column: TListColumn);
    begin

      nCol := Column.index;
      showmessage( inttostr( nCol));

    end;

    procedure TForm1.ListView2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      Edit3.text := inttostr(Listview2.columns[ nCol ].width);
    end;

    제가 임의로 OnColumnClick에다가 컬럼값을 받아서...

    Mouse가 움직일때만...(임의로 Width를 늘일때)

    값을 받아 볼려구 했는데..

    OnColumnClick에서는 위에 Column Header(맞나) 그거를 클릭해야지만

    값을 받아오더군요...

    제가 원한건.... 아래(header 가 아닌 Subitem)을 클릭했을때

    그 Subitem이 속한 Column값을 받아서 그 크기 변하는걸 알고

    싶은건데염.. ^^








  • Profile
    최용일 2002.04.30 02:25
    안녕하세요. 최용일입니다.

    OnMouseMove이벤트에서 아래와 같이 해보세요...

    procedure TForm1.ListView1MouseMove(Sender: TObject;
      Shift: TShiftState; X, Y: Integer);
    var
        Item: TListItem;
        XPos: Integer;
        Index: Integer;
    begin
        Item := ListView1.GetItemAt(2, Y);
        if Item <> nil then
        with ListView1.Columns do
        begin
            XPos := 0;
            for Index := 0 to Count - 1 do
            begin
                if X in [XPos..XPos + Items[Index].Width] then
                begin
                    Edit3.Text := IntToStr(Items[Index].Width);
                    Break;
                end;
                Inc(XPos, ListView1.Columns[Index].Width);
            end;
        end;
    end;

    ^^ 항상 즐코하세요...

  • Profile
    김도형 2002.04.30 04:31
    음....

    용일님이 보내주신거 봤습니다...

    해봤는데... 음.. 제가 했던가하구 거의 비슷한 결과가 나오더라구여...

    저는 어떻게 구현했냐면여..

    procedure TForm1.ListView2ColumnClick(Sender: TObject;
      Column: TListColumn);
    begin

      nCol := Column.index;

    end;

    procedure TForm1.ListView2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin

      if shift = [  ssleft ] then
        Edit3.text := inttostr(Listview2.columns[ nCol ].width);

    end;

    이렇게 했었거든여....

    ComumClick에다가 현제 클릭된 넘의 Column값을 받아서 전역으로

    가지구 있다가 마우스 무브에서... 그넘 값을 넘겨서 구냥 했었거든여

    제가보기엔 거의 비슷하더군여... ^^

    군데....

    제가 열씨미 알아보구 다녔는데...

    막상 이거 알려는 사람이.... 필요없다구 하더라구여.. --++

    이궁....

    감사드립니다.. ^^

    그럼 남은 오늘두 즐겁게 보내세여...