숫자가있는 사용자 지정 숫자판을 만들었습니다. 프레임과 단추입니다. 이 구성 요소를 폼에 놓습니다. 이제 폼에서 활성 컨트롤을 캡처 한 다음이 컨트롤에 해당하는 특정 번호를 단추에 보내는 방법을 알지 못합니다.사용자 지정 숫자 패드 및 활성 텍스트 상자에 특정 숫자 보내기
누군가 나를 도와 줄 수 있습니까?
숫자가있는 사용자 지정 숫자판을 만들었습니다. 프레임과 단추입니다. 이 구성 요소를 폼에 놓습니다. 이제 폼에서 활성 컨트롤을 캡처 한 다음이 컨트롤에 해당하는 특정 번호를 단추에 보내는 방법을 알지 못합니다.사용자 지정 숫자 패드 및 활성 텍스트 상자에 특정 숫자 보내기
누군가 나를 도와 줄 수 있습니까?
가장 쉬운 방법은 버튼의 캡션 인 숫자를 버튼의 Tag 속성에 저장하는 것입니다.
이procedure TForm1.NumButtonClick(Sender: TObject);
var
NumTyped: Integer;
begin
NumTyped := TButton(Sender).Tag;
end;
다른 대안은 경우에 캡션을 읽는 것입니다,하지만 당신은 실수하는 경우 중단됩니다 정수로 문자열에서 변환을 수행해야한다 : 당신은 모든 버튼에 동일한 이벤트 핸들러를 사용할 수 있습니다 이벤트 핸들러에 숫자 자막없이 버튼을 할당합니다
procedure TForm1.NumButtonClick(Sender: TObject);
var
NumTyped: Integer;
begin
NumTyped := StrToInt(TButton(Sender).Caption);
end;
이 방법은 당신이 당신의 구성 요소가 ActiveControl 여부에 대해 걱정하지 않아도 참고; 이벤트 처리기를 구성 요소의 단추 하나 하나에 할당하면됩니다. 이벤트가 트리거되면 활성 컨트롤이 사용자의 구성 요소이고 단추 중 어느 단추를 클릭했는지 알 수 있습니다.
편집 : 아래의 설명에 따르면, 나타나는 것보다 조금 더 질문이 있습니다.
숫자를 TEdit ("텍스트 상자")로 보내려는 경우 몇 가지 작업을 수행해야합니다. 먼저 TButtons 또는 TBitBtns를 사용하지 마십시오. 포커스를 받으면 편집 컨트롤에서 멀리 떨어져 있습니다. 대신 TSpeedButton을 사용하십시오. 원하는 각 캡션을 TEdit에 넣을 번호로 설정하십시오.
둘째, TEdit에 내용을 넣으 려하므로 태그를 신경 쓰지 않아도됩니다.
procedure TForm1.NumButtonClick(Sender: TObject);
begin
Edit1.SelText := TSpeedButton(Sender).Caption;
end;
이는 SpeedButton의 캡션과은 TEdit EDIT1에서 선택한 텍스트를 대체, 또는 현재의 caret에 추가합니다 :이 하나에 모든 TSpeedButtons에 대한 이벤트 핸들러를 설정 (당신은 TEdit를 가정하는 것은 EDIT1입니다) (커서 편집) 위치를 TEdit에 저장합니다. 당신이 TEdits의 숫자 중 하나에 넣어 찾고 있다면
, 약간의 변화가 아니라 처리됩니다
procedure TForm1.NumButtonClick(Sender: TObject);
begin
if ActiveControl is TEdit then
TEdit(ActiveControl).SelText := TSpeedButton(Sender).Caption;
end;
을이 당신이 달성하기 위해 무엇을 찾고있어 아직하지 않은 경우, 원래의 질문을 편집하고 그에 대한 정보를 추가하십시오. 그러면 답변을 얻을 수있는 기회가 생깁니다.
아직 시도하지는 않았지만 폼에 텍스트 상자가 있고 숫자 패드 단추를 클릭하면 단추에 해당하는 번호가 해당 텍스트 상자로 이동한다고 말하는 것입니까? 이것이 내가 원하는 것입니다. 또한 그들 중 5 개 (텍스트 상자)를 의미합니다. – evilone
@evil - 어떤 텍스트 상자가 * 해당 텍스트 상자 *인지 어떻게 알 수 있습니까? 사용자가 상자를 선택한 다음 숫자를 누를 것으로 예상됩니까? –
@evilone : 아니, 그게 내가하는 말이 아니야. (그건 네가 물어 본 질문이 아니야.) 내 편집을 참조하십시오. –
ActiveControl 양식의 편리 성을 고려하십시오. 또는 ActiveControl 속성 및 OnActiveControlChange 이벤트는 입니다. TScreen 클래스입니다.
당신은 당신이 사용하고있는 델파이의 버전을 언급하지 않지만, 그것은 델파이 2010 또는 큰 경우, 당신은 팔레트에서 사용할 수있는 TTouchKeyboard 구성 요소를 사용하고 숫자 패드에 레이아웃 속성을 설정할 수 있습니다.
모든 세부 정보를 처리하기 때문에 매우 편리합니다.
그래서 내가 그 결과에 관심이 2개월 시간에 같은 문제가 있습니다. 완료되면 코드를 보낼 수 있습니까? – Jlouro
숫자 패드 숫자가 단추이면 활성 컨트롤 중 하나 일 가능성이 큽니다. –