Q&A

  • [다시질문]배열로 만든 버튼의 팝업메뉴제어(안치봉님의 답변에..)
답변감사드립니다.

(제가 다른데 다녀오는 바람에 답변을 늦게 봤네요)

알려주신대로 해봤는데 잘 안되거든요

테스트로 버튼 5개를 만들고

각각 1-5까지 태크에 넣어주고,

각 버튼에 PopupMenu1을 연결하고

팝업메뉴를 실행해보니

Sender가 그 버튼이 아닌가봐요

Tag 값이 0 이 넘어오더군요(디폴트태그값이..)

그래서 다른 프로퍼티를 보니 violation 이라고 나오는걸 봐서는

없는 버튼인거 같기도 하고..

어떻게 해결해야 할까요..





>B[0]:= TButton.Create(Self);

>B[0].Tag := 1

>...

>...

>

>B[0]:= TButton.Create(Self);

>B[0].Tag := 2

>...

>...

>

>...

>...

>

>var

> c: TButton;

>begin

> c := TButton(Sender);

>

> if c.Tag = 0 then ...

> if c.Tag = 1 then ...

> if c.Tag = 2 then c.Caption := '3';

>

>

>...

>김윤경 wrote:

>> 배열로 버튼을 만들고 팝업 메뉴를 연결했거든요

>> 예)

>> var

>> B : Array[1..10] of TButton;

>>

>> 다른이벤트에서

>> B[I]:= TButton.Create(Self);

>> .....

>> B[I].PopupMenu:= PopupMenu1;

>>

>> 이렇게 하면 버튼 10개에 모두 같은 팝업메뉴가 연결되잖아요.

>> 그리고 팝업메뉴에 목록을 만들고 이벤트를 실행시킬때 어떤 버튼에서 온 이벤트인지

>> 알려면 어떻게 해야 하나요?

>> 예를 들어 3번째 버튼에서 팝업메뉴중 목록을 클릭했을때, 그 버튼의 Caption이 바뀌게

>> 하고 싶다면...

>>

>> 이벤트에서 (Sender as TButton) 라고 했더니 에러가 나더군요

>>

1  COMMENTS
  • Profile
    김윤경 1999.10.05 20:17
    일단 임시 해결책으로 OnMouseEnter 이벤트를 사용했습니다.

    버튼을 누를려면 마우스가 버튼위로 올라가야 하니깐

    OnMouseEnter 일경우 Tag 를 바꿔주고

    OnMouseLeave 일때 다시 원래대로 돌려주고..

    이렇게 하고

    팝업메뉴에서 콤포넌트를 검색해서 조건이 일치하면 이벤트 실행

    이렇게 하니깐 일단은 잘 되는거 같네요.

    혹시 더 좋은 방법있으면 꼭 알려주세요





    김윤경 wrote:

    > 답변감사드립니다.

    > (제가 다른데 다녀오는 바람에 답변을 늦게 봤네요)

    > 알려주신대로 해봤는데 잘 안되거든요

    > 테스트로 버튼 5개를 만들고

    > 각각 1-5까지 태크에 넣어주고,

    > 각 버튼에 PopupMenu1을 연결하고

    > 팝업메뉴를 실행해보니

    > Sender가 그 버튼이 아닌가봐요

    > Tag 값이 0 이 넘어오더군요(디폴트태그값이..)

    > 그래서 다른 프로퍼티를 보니 violation 이라고 나오는걸 봐서는

    > 없는 버튼인거 같기도 하고..

    > 어떻게 해결해야 할까요..

    >