Q&A

  • listbox의 이벤트 헨들러에 대한 질문
listbox에 나타나는 각 항목들을 클릭하면 다른 페널에 있는 textbox에 나타내려고 합니다. 디비그리드와 textbox를 연결시키듯이 listbox도 연결가능한지요...

부탁입니다 꼭 알려주시기 바랍니다..

1  COMMENTS
  • Profile
    전철호 2001.06.25 10:39
    여장호 wrote:

    > listbox에 나타나는 각 항목들을 클릭하면 다른 페널에 있는 textbox에 나타내려고 합니다. 디비그리드와 textbox를 연결시키듯이 listbox도 연결가능한지요...

    > 부탁입니다 꼭 알려주시기 바랍니다..



    가능합니다.

    CN_COMMAND라는 리스트박스 Message에서

    LBN_SELCHANGE를 이용하시면 됩니다.



    근데 각각의 리스트 박스마다 이메세지를 캐취할때마다

    코딩이 들어가니 TLISTBOX에서 상속 받아서

    새로운 리스트박스 콤포넌트를 만들어서 사용하시는게 좋을 듯 합니다.

    http://www.onitek.com 에서 Support란에 Download에 가시면

    Component-Active-Library가 있습니다.

    이 라이브러리에서는 이런 모든기능과 많은 에디트기능을 내장한 콤포넌트가 있습니다.

    돈주고 판매는 하지만 괜찮은 콤포넌트입니다.

    테스트 버젼을 한번 사용해 보세요.



    예제)

    TPeBoxChangeEvent=procedure(Sender: TObject; const ItemIndex: Integer) of object;

    TPeJeonListBox = class(TListBox)

    private

    FOnItemChange : TPeBoxChangeEvent;

    procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;

    published

    property OnItemChange : TPeBoxChangeEvent read FOnItemChange write FOnItemChange;

    end;

    ......

    .....

    procedure TPeJeonListBox.CNCommand(var Message: TWMCommand);

    begin

    inherited;

    case Message.NotifyCode of

    LBN_SELCHANGE:

    begin

    Click;

    inherited Changed;

    if Assigned(FOnItemChange) then

    FOnItemChange(Self, ItemIndex);

    end;

    end;

    end;