2014-10-16 5 views
0

Delphi에서 OnClick 이벤트를 사용하여 동적으로 생성 된 버튼의 이름을 얻으려는 경우 도움이 필요합니다.Delphi에서 OnClick 이벤트를 사용하여 동적으로 생성 된 버튼의 이름을 얻는 방법은 무엇입니까?

그런 다음 해당 단추의 이름을 사용하여 전역 변수에 저장하려고합니다.

procedure TMap.FormShow(Sender: TObject); 
var 
btnCache : TButton; 
begin 
btnCache := TButton.Create(imgAerial); 
with btnCache do 
begin 
    onclick := ClickButton; 
end; 

procedure TMap.ClickButton(Sender: TObject); 
begin 
//Code for getting the name of the button 
end; 
+1

이 이름으로 컨트롤을 참조 하시겠습니까? 왜냐하면 그럴 수 없기 때문입니다. 변수로 참조해야합니다. 이름은 IDE를 통해 폼에 드롭하면 (자동 생성) 아무 것도 의미하지 않습니다. 이름을 지정하지 않을뿐만 아니라 그렇게해도 그 이름은 문자열입니다. 다윗이 대답 할 때 언급 한 것처럼 그 이름이 그다지 의미하지 않을 것이라고 생각하지 마십시오. 다른 곳에서이 버튼에 액세스하려면이 개인 프로 시저가 아닌 양식에 변수'btnCache'를 선언하십시오. –

+1

이름이 필요한 이유가 무엇입니까? 'ClickButton'이 호출 될 때,'Sender'는 클릭 된 버튼이므로,'TButton' 타입의 지역 변수를 사용하고'Sender'의 값에'MyBtn : = (TButton으로 보낸 사람); 평소처럼 코드에서'MyBtn'을 사용할 수 있습니다. 코드가 버튼의 문자열 이름에 따라 다르면 코드를 잘못 설계했습니다. –

답변

4

버튼의 이름이 Name을 소개 유형에 Sender을 캐스팅하여 검색 할 수 있습니다 : 나는 현재 어딘지

이입니다. 즉, TComponent입니다.

(Sender as TComponent).Name 

코드가 버튼에 이름을 지정하지 않았으므로이 이름이 매우 유익하지 않을 것으로 예상하지 마십시오. 질문에 코드가 작성되었으므로 동적으로 생성 된 단추에는 이름이 없습니다.

관련 문제