我有兩個TEdit框用於指定文件路徑,一個用於UNC路徑,另一個用於本地路徑。但是,如果用戶只能在一個框中輸入文本,我希望它。如果他們在一個框中輸入文本,則應該清除另一個文本。我應該如何去做這件事?此外,不知道我是否應該使用OnEnter,OnChange或其他方法。使兩個TEdits獨佔
回答
你可以很簡單地做到這一點。創建一個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'屬性確實會觸發'OnChange'事件,所以你可以忽略遞歸預防。 'Edit.Clear'雖然觸發OnChange! – NGLN 2012-01-13 18:00:24
如果我記得正確的話,有幾個版本的Delphi確實叫它(儘管我可能是錯的)。儘管如此,它不會損害任何東西,以確保它不會出現問題。 :)清理/恢復事件處理程序沒有任何開銷。 – 2012-01-13 18:03:19
如果你想保留兩個編輯框,這是我將如何做到這一點。
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;
您希望進行值檢查,以便在用戶選項卡通過字段時不會意外擦除值。
你可以大鉤編輯框下面的按鍵響應事件
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Sender = Edit1 then
Edit2.clear
else
if Sender = Edit2 then
Edit1.clear;
end;
你不需要類型轉換; Sender = Edit1'的平等性沒有它,因爲你正在比較兩個TObject指針的地址。 – 2012-01-13 21:34:02
好抓,固定。 – 2012-01-13 23:34:06
- 1. 在同一個表上是否有兩個獨佔鎖
- 2. MySQL:獨佔鎖
- 3. 從兩個獨佔表中選擇合併結果集
- 4. ng-repeat使用兩個獨佔的JSON變量對一列進行排序
- 5. NHibernate:獨佔鎖定
- 6. mySQL獨佔記錄
- 7. Python獨佔循環
- 8. 在多個文本框中獨佔RequiredFieldValidation
- 9. 如何使複選框獨佔?
- 10. 在COM接口中獨佔使用VARIANT
- 11. QButtonGroup沒有使複選框獨佔
- 12. 做兩個協議的方法獨佔(實現一個或另一個,而不是兩個)
- 13. 獨立兩個字
- 14. SQL Server 2000獨佔鎖定
- 15. 插入獨佔鎖定
- 16. Socat對PTY的獨佔鎖
- 17. web.xml獨佔網址模式
- 18. 全屏獨佔模式JDesktopPane
- 19. Java全屏獨佔模式
- 20. 在UITableViewCell中獨佔的UISwitch
- 21. SQL獨佔或插入
- 22. SQLite非獨佔RESERVED鎖?
- 23. 在XOR中獨佔是否真的適用於兩個以上的輸入?
- 24. 連接兩個列,由兩個獨立的表,並使用SQL
- 25. 錨定 - 讓兩個組件佔用面板的各佔一半
- 26. SQL:兩個獨立的行
- 27. 兩個SWT表戰鬥搶佔空間
- 28. 兩張桌子,兩個獨特的ID?
- 29. 2個單獨的UIGestureRecognizer委託在兩個獨立的VC
- 30. LINQ查詢將獨佔返回重複
'OnExit'是你應該考慮的情況下,我想。 – Pateman 2012-01-13 15:48:36
可能'OnChange'會起作用。我只是簡單地提供兩個額外的單選按鈕並強制用戶選擇一個.. – 2012-01-13 15:48:49
我與Sertac合作。一個TEdit,兩個單選按鈕。順便說一句,這是UNC和本地路徑之間的區別? – kobik 2012-01-13 15:57:49