2010-10-08 70 views
3

這是我的代碼使用SendMessage功能填補一個TextBox?如何將光標移動到文本的末尾(Delphi)?</p> <p>現在,我怎樣才能將光標移動到文本的結尾:

+0

哎喲!不是很特別的德爾福。我認爲TextBox是**不是** Delphi組件? – 2010-10-08 05:16:13

+0

SendMessage函數是一個API,沒有規則只爲我們的項目使用Windows API。例如我們使用這個函數來填充雅虎信使文本框,編輯框,框,字段。完全:「文本框」是我們用鍵盤輸入的計算機上的虛擬框! – Kermia 2010-10-08 05:40:27

回答

15

如果你真的想與信息做到這一點看看:

  1. EM_SETSEL
  2. EM_EXSETSEL

也有你要編輯的完整參考:

http://msdn.microsoft.com/en-us/library/ff485923%28v=VS.85%29.aspx

在代碼(沒有消息),你會做這樣的事情:

Edit1.SelLength := 0; 
Edit1.SelStart := 0; // set caret before first character 
... 
Edit1.SelStart := 1; // set caret before second character 
... 
Edit1.SelStart := Length(Edit1.Text) // set caret after the last character 

隨着消息:

SendMessage(h1, EM_SETSEL, Length(C), Length(C)); 
+0

謝謝你亞軍。但盒子不適合我的項目!我想用外部應用程序來做到這一點。 – Kermia 2010-10-08 05:50:22

1

我覺得你的代碼是錯誤的。你必須使用「EM_SETSEL」參數。我的問題與此代碼解決:

//Set a value for external textbox 
    SendMessage(h1, WM_SETTEXT, 0, Integer(PChar(C))); 
    //move the cursor to end of the textbox(editbox,field,...) 
    SendMessage(h1, EM_SETSEL, length(C), length(C)); 

謝謝您,反正:)

+0

對不起,忘了改變消息常量。儘管我發佈了正確的鏈接。感謝您指出,我會立即修復它。 – Runner 2010-10-08 06:32:16

相關問題