파일 경로를 지정하는 데 사용하는 TEdit 상자가 두 개 있습니다. 하나는 UNC 경로 용이고 다른 하나는 로컬 경로 용입니다. 그러나 사용자가 하나의 상자에만 텍스트를 입력 할 수 있으면 좋습니다. 한 상자에 텍스트를 입력하면 다른 상자를 지워야합니다. 어떻게해야합니까? 또한 OnEnter, OnChange 또는 다른 방법을 사용해야하는지 잘 모르겠습니다.두 개의 TEdit을 독점적으로 만들기
답변
매우 간단하게 처리 할 수 있습니다. 하나의 OnChange 핸들러를 생성하고 Object Inspector의 Events 탭을 사용하여 두 TEdits에 할당합니다. 그런 다음 다음과 같은 것을 사용할 수 있습니다 :
procedure TForm1.EditChanged(Sender: TObject); //Sender is the edit being changed
begin
if Sender = UNCEdit then // If it's is the UNCEdit being changed
begin
LocalPathEdit.OnChange := nil; // Prevent recursive calling!
LocalPathEdit.Text := ''; // Clear the text
LocalPathEdit.OnChange := EditChanged; // Restore the event handler
end;
else
begin
UNCEdit.OnChange := nil;
UNCEdit.Text := '';
UNCEdit.OnChange := EditChanged;
end;
end;
이것은 다소 간소화 될 수 있지만 다른 사람들에게는 읽기 쉽지 않습니다. 또한 try..finally로 보호 할 수도 있지만 편집 내용을 지우는 것은 실제로 필요하지 않습니다.
procedure TForm1.EditChanged(Sender: TObject);
var
TmpEdit: TEdit;
begin
if Sender = UNCEdit then
TmpEdit := LocalPathEdit
else
TmpEdit := UNCEdit;
TmpEdit.OnChange := nil;
try
TmpEdit.Text := '';
finally
TmpEdit.OnChange := EditChanged;
end;
end;
D7에서'Text' 속성을 설정하면 noet 트리거가'OnChange' 이벤트를 발생 시키므로 재귀 방지 기능을 사용할 수 없습니다. 'Edit.Clear'는 OnChange를 트리거합니다! – NGLN
제대로 기억하고 있다면 델파이로 불리는 몇 가지 버전이 있습니다. (잘못 생각할 수도 있습니다.) 그것은 경우에 대비하여 재발하지 않도록하기 위해 아무런 상처를주지 않습니다. :) 이벤트 처리기를 지우거나 복원하는 데 오버 헤드가 없습니다. –
두 개의 입력란을 유지하려면이 방법을 사용하십시오.
procedure TForm1.Edit1Exit(Sender: TObject);
begin
if (Edit1.text <> '') then
Edit2.text:= '';
end;
procedure TForm1.Edit2Exit(Sender: TObject);
begin
if (Edit2.text <> '') then
Edit1.text:= '';
end;
사용자가 필드를 탭하여 실수로 값을 지우지 않도록 값 확인을 원합니다.
다음과 같은 KeyPress 이벤트
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Sender = Edit1 then
Edit2.clear
else
if Sender = Edit2 then
Edit1.clear;
end;
타입 변환이 필요하지 않습니다. 두 개의 TObject 포인터의 주소를 비교할 때'Sender = Edit1'의 평등이 제대로 작동합니다. –
좋은 캐치, 고정. –
- 1. 두 개의 TextViews가 XML을 사용하여 한 줄에 독점적으로 표시됩니다.
- 2. 두 개의 개발자 계정 만들기
- 3. 두 개의 대상이있는 소스 만들기
- 4. 두 테이블에 두 개의 열이있는 뷰 만들기
- 5. C++에서 두 개의 다른 코어에서 두 개의 스레드 만들기
- 6. 레일은 독점적으로
- 7. CreateWindowsEx()를 사용하여 두 개의 윈도우 만들기
- 8. 두 개의 작은 UIImages에서 UIImage 만들기
- 9. 파이썬 : 하나의 스크립트로 두 개의 스크립트 만들기
- 10. 주어진 목록에서 두 개의 목록 만들기
- 11. 두 개의 숫자를 더하는 정규 표현식 만들기
- 12. 두 개의 다른 목록에서 목록 만들기
- 13. 두 개의 테이블에서 하나의 FORM 만들기
- 14. 인터페이스에서 두 개의 일반 매개 변수 만들기
- 15. 하나의보기에서 두 개의 작업 시트 만들기
- 16. 두 개의 스프라이트 사이에 거리 버퍼 만들기
- 17. 두 개의 DIV를 같은 높이로 만들기
- 18. 유선 연결 만들기 wmware에서 두 개의 vms
- 19. CSS : 두 개의 플로팅 요소가 겹치도록 만들기
- 20. 두 개의 메인 파일을 가지고있는 파일 만들기
- 21. 한 줄에 두 개의 텍스트가있는 ListView 만들기
- 22. 녹아웃은 독점적으로 이벤트 구동입니까?
- 23. 두 개의 두 차원 배열에서 비트 맵 만들기
- 24. 테이블에서 필드를 독점적으로 선택하십시오.
- 25. 두 개의 partialviews 및 두 개의 모델로보기
- 26. 두 개의 개별 화면에 두 개의 창로드
- 27. UIView : 독점적으로 터치를 제한하는 방법
- 28. 여러 개의 DropDownLists 만들기
- 29. 2 개의 viewController 컨트롤러 만들기
- 30. SSIS - 두 개의 다른 OLE DB 원본에서 CSV 파일 만들기
에 모두 편집 상자 후크 수'당신이 조사해야 할 이벤트가 OnExit', 나는 생각한다. – Pateman
아마도 'OnChange'가 작동 할 것입니다. 나는 두 개의 추가 라디오 버튼을 제공하고 사용자가 하나를 선택하도록 강제 할 것이다. –
나는 Sertac과 함께있다. 하나의 TEdit, 두 개의 라디오 버튼. btw, 그것은 UNC와 로컬 경로의 차이점입니까? – kobik