답변감사드립니다.
(제가 다른데 다녀오는 바람에 답변을 늦게 봤네요)
알려주신대로 해봤는데 잘 안되거든요
테스트로 버튼 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) 라고 했더니 에러가 나더군요
>>
버튼을 누를려면 마우스가 버튼위로 올라가야 하니깐
OnMouseEnter 일경우 Tag 를 바꿔주고
OnMouseLeave 일때 다시 원래대로 돌려주고..
이렇게 하고
팝업메뉴에서 콤포넌트를 검색해서 조건이 일치하면 이벤트 실행
이렇게 하니깐 일단은 잘 되는거 같네요.
혹시 더 좋은 방법있으면 꼭 알려주세요
김윤경 wrote:
> 답변감사드립니다.
> (제가 다른데 다녀오는 바람에 답변을 늦게 봤네요)
> 알려주신대로 해봤는데 잘 안되거든요
> 테스트로 버튼 5개를 만들고
> 각각 1-5까지 태크에 넣어주고,
> 각 버튼에 PopupMenu1을 연결하고
> 팝업메뉴를 실행해보니
> Sender가 그 버튼이 아닌가봐요
> Tag 값이 0 이 넘어오더군요(디폴트태그값이..)
> 그래서 다른 프로퍼티를 보니 violation 이라고 나오는걸 봐서는
> 없는 버튼인거 같기도 하고..
> 어떻게 해결해야 할까요..
>