2 개의 TEdit 항목과 버튼을 사용하고 싶습니다. 모든 편집에 텍스트 값이 있는지 확인할 수 있습니까? 그 후 버튼을 활성화하고 싶습니다.입력란에 텍스트를 입력 할 때 버튼을 활성화해야합니다.
주 양식 Onshow 이벤트 : Btn1.Enabled : = false;
Edit1.text + Edit2.text에 값이있는 경우 btn1.enabled : = true?
도움 주셔서 감사합니다.
2 개의 TEdit 항목과 버튼을 사용하고 싶습니다. 모든 편집에 텍스트 값이 있는지 확인할 수 있습니까? 그 후 버튼을 활성화하고 싶습니다.입력란에 텍스트를 입력 할 때 버튼을 활성화해야합니다.
주 양식 Onshow 이벤트 : Btn1.Enabled : = false;
Edit1.text + Edit2.text에 값이있는 경우 btn1.enabled : = true?
도움 주셔서 감사합니다.
using actions? 그렇지 않은 경우 고려해야합니다.
Add a TActionList
to your application 아직 가지고 있지 않다면 그런 다음 TAction
을 추가하십시오. 버튼과 비슷하게 동작의 속성을 설정합니다. (즉, 캡션을 설정하고 버튼의 OnClick
이벤트 핸들러를 액션의 OnExecute
핸들러로 이동하십시오.) 버튼의 Action
속성을 지정하여 새 액션 객체를 참조하십시오.
마지막으로 작업의 OnUpdate
이벤트를 처리하십시오. 이 항목에서 필요에 따라 작업을 활성화 또는 비활성화합니다. 버튼 (및 나중에 동일한 작업과 연결하도록 선택한 다른 컨트롤)은 updated accordingly이됩니다.
procedure TSteveForm.ButtonActionUpdate(Sender: TObject);
begin
TAction(Sender).Enabled := (Edit1.Text <> '') and (Edit2.Text <> '');
end;
이는 편집 컨트롤의 OnChange
이벤트 처리와 매우 비슷하지만, 시나리오가 변경 될 때 그 차이가 명확하게 : 추가하거나 편집 컨트롤을 제거 할 경우에만 변경해야
OnChange
이벤트를 처리하는 경우 및 프로 시저를 각 새 컨트롤의 OnChange
속성에 할당해야합니다.OnChange
이벤트가 있습니다. 액션의 OnUpdate
이벤트는 업데이트가 적절한시기를 정확하게 알지 못하게합니다. 프로그램이 유휴 상태이고 요구가있을 때 실행됩니다.Edit1.OnChange
이벤트를 사용하고 Edit2.OnChange
도 처리하도록 설정하십시오. 이벤트 처리기 코드는 간단합니다.
procedure TForm1.Edit1Change(Sender: TObject);
begin
Btn1.Enabled := (Edit1.Text <> '') and (Edit2.Text <> '');
end;
대단히 감사합니다! – Steve88
개인적으로 나는 이것을 위해 사용 된 행동을 더 빨리 보았습니다. 코드를 더 선언적으로 만듭니다. –
내가 편집을 시작하기 전에 대답 해주세요. Upvoted. –