2011-12-23 68 views
2

如何選擇TEdit1的所有文字,只要它的用戶點擊或單擊以選中的一些文本TEdit onclick選擇全部?

+0

我很困惑。請澄清你的問題。你想知道如何將TEdit設置爲適當的行爲或如何以編程方式執行它? – menjaraz 2011-12-23 13:32:33

回答

8

如何選擇TEdit1的所有文字,只要它

選擇EDIT1用戶點擊在VCL編輯,然後雙擊在OnClick事件:

enter image description here

procedure TForm13.Edit1Click(Sender: TObject); 
begin 
    Edit1.SelectAll; 
end; 

您也可以將此事件鏈接到另一個控件,如按鈕。
選擇按鈕,選擇並點擊V箭頭以選擇要鏈接的事件。

enter image description here

現在無論Edit1.OnClickButton1.OnClick鏈接到同一事件。

+0

這只是一個事件處理程序。它必須連線到某個地方纔能觸發。 – menjaraz 2011-12-23 13:25:23

+0

我的意思是連線到VCL組件的事件屬性。大概Edit1從它的名字來判斷,但它也可能不是這樣。 – menjaraz 2011-12-23 13:34:54

+0

@Johan你有沒有嘗試過使用這樣的編輯控件。嘗試用鼠標放置插入符號。 – 2011-12-23 14:03:18

3

如何選擇TEdit1的一些文字,每當它的用戶點擊:

procedure TForm1.Edit1Click(Sender: TObject); 
begin 
    Edit1.SelStart:= 1; 
    Edit1.SelLength:= 2; 
end; 
18

它可以是相當危險的做任何事情超出了TEdit控件的默認行爲。您的用戶知道標準Windows控件的行爲方式,如果與此有任何偏差都可能導致混淆。

默認情況下,AutoSelect屬性設置爲True

確定編輯控件獲取焦點時是否自動選擇編輯控件中的所有文本。

設置AutoSelect當編輯控件獲得焦點時選擇所有文本。 AutoSelect僅適用於單行編輯控件。

使用自動選擇當用戶更有可能替換編輯控件中的文本而不是追加到它。

當此屬性爲True時,通過鍵盤操作獲取焦點時,會選擇編輯控件的全部內容。如果控件通過鼠標單擊獲得焦點,則內容不會全部被選中。在這種情況下,您只需按CTRL + A即可全選。雙擊將選擇鼠標下方的單詞。這是底層Windows控件實現的所有標準行爲。


如果你改變選擇響應OnClick事件,按照當前選定的答案,那麼你會發現這是不可能用鼠標點擊移動插入符號。這是非常違反直覺的行爲。

這就是爲什麼你需要非常小心從改變其默認的控制行爲的典型例子。在測試時不要錯過特定用例,但是當用戶獲得該程序時,他們肯定會發現所有這些皺紋。

您可以安全地做的是從OnDblClick撥打SelectAll。這樣做,我相信沒有惱人的副作用。

另一種選擇是在焦點切換到編輯控件時調用SelectAll,但不是每次單擊控件時。這對用戶來說可能會感覺有點奇怪,但我個人認爲採取這種行動是合理的。如果你想這樣做,你需要處理編輯控件的OnEnter事件:

procedure TForm1.Edit1Enter(Sender: TObject); 
begin 
    PostMessage(Edit1.Handle, EM_SETSEL, 0, -1); 
end; 
+4

+1。明智的回答一個瘋狂的問題。 – 2011-12-23 14:14:59

+0

很好的解釋和意見文章。 – Johan 2011-12-23 21:37:35

+0

我剛要問一個類似的問題,但是先找到了。優秀!多謝你們。 – Capfka 2017-02-19 12:54:00