C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[19069] Re:ListView에서 여러개의 컬럼을 생성시 컬럼사이즈를 바꾸는 이벤트를 가지려면 어떻게 해야하나요?
유영인.Chris [cuperido] 1442 읽음    2002-06-03 13:39
ListView의 Columns에 대한 이벤트가 왜 안되는지 잘 모르겠네요. (혹시 버그?) OnResize에서 될 줄 알았는데.. 잘 안되더군요..

ListView의 컬럼을 이리저리 만지다보면, WM_NOTIFY 이벤트가 발생합니다. 그래서 메세지를 계속 추적해보니 사이즈를 조절할때 LParam에 #1235340 가 들어가는군요. #1235340 이 무슨 메세지인지 찾아보았지만, 뭘로 정의되어 있는지는 못찾았네요.

아무튼 아래와 같이 MESSAGE_MAP을 설정하셔도 되고요, 따로 컴포넌트를 하나 상속받아서 처리하셔도 됩니다. 제 생각에는, 컴포넌트를 따로 상속받으셔서 처리하시는 것이 각각 객체의 핸들을 따로 받아서 손쉽게 처리할 수 있기 때문에 더 좋은 방법이 될 것 같습니다.

컴포넌트를 상속하여 추가하는 법은 아래에 설명되어 있습니다.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=18022


그리고, 이건, 컴포넌트 상속이 아닌 일반적인 방법으로 컬럼의 사이즈 감지를 하는 예제입니다. ListView 하고, Memo 하나씩 놓으신 뒤 사용하시면 됩니다.


[헤더 파일]

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TListView *ListView1;
        TMemo *Memo1;
private:    // User declarations
        void __fastcall MessageProcess(TMessage &MSG);

           BEGIN_MESSAGE_MAP
             MESSAGE_HANDLER(WM_NOTIFY, TMessage, MessageProcess);
           END_MESSAGE_MAP(TForm);
public:        // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif



[소스 파일]

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{

}
//---------------------------------------------------------------------------

void __fastcall TForm1::MessageProcess(TMessage &MSG)
{

if(Form1->Visible)
   if(MSG.LParam == 1235340)
     Memo1->Lines->Add("OnColumnsResize");


TForm::Dispatch(&MSG);

}

//---------------------------------------------------------------------------



처버 개발자 님이 쓰신 글 :
: TListView를 Form에 붙여서 데이타를 뿌려주는 프로그램인데
: Form에 붙은 TListView의 스타일은 vsReport이며 4개의 컬럼을 만들었습니다.
: 두번째 컬럼을 세번째 칼럼방향으로 드래그 해서 사이즈를 변경하는데
: 이 이벤트를 잡을려면 함수를 어떻게 정의 해야 하나요?
:
: 이 이벤트를 오브젝트 인스펙터에서 찾을수 없으며
: 더욱이 Message Map으로 VCL_MESSAGE_HANDLER로 정의하려고 해도
: ListBox에 대한 이벤트는 있어도 ListView에 대한 이벤트는 없어요...
:
: 조언을 주시면 감사하겠습니다.
:
:

+ -

관련 글 리스트
19032 ListView에서 여러개의 컬럼을 생성시 컬럼사이즈를 바꾸는 이벤트를 가지려면 어떻게 해야하나요? 처버 개발자 992 2002/05/31
19069     Re:ListView에서 여러개의 컬럼을 생성시 컬럼사이즈를 바꾸는 이벤트를 가지려면 어떻게 해야하나요? 유영인.Chris 1442 2002/06/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.