檢視原始碼 wxTextCtrl (wx v2.4.3)
文字控制項允許顯示和編輯文字。
它可以是單行或多行。請注意,文字控制項的許多方法都在基礎的 wxTextEntry
(在 wx 中未實作) 類別中找到,這個類別是 wxTextCtrl
和其他使用單行文字輸入欄位的控制項 (例如 wxComboBox
) 的通用基礎類別。
樣式
此類別支援以下樣式
wxTE_PROCESS_ENTER: 控制項將會產生
wxEVT_TEXT_ENTER
事件,該事件可以由程式處理。否則,也就是說,如果完全沒有指定此樣式,或者使用了此樣式,但是沒有此事件的事件處理常式,或者事件處理常式呼叫了wxEvent:skip/2
來避免覆寫預設處理,則按下 Enter 鍵將由控制項內部處理,或者用於啟動對話方塊的預設按鈕(如果有的話)。wxTE_PROCESS_TAB: 通常,TAB 鍵用於鍵盤導覽,在控制項中按下它會將焦點切換到下一個控制項。使用此樣式,則不會發生這種情況,並且如果 TAB 沒有以其他方式處理 (例如,由
wxEVT_CHAR
事件處理常式處理),則會在控制項中插入一個字面 TAB 字元。請注意,在使用 wxGTK 時,此樣式對單行文字控制項沒有任何作用。wxTE_MULTILINE: 文字控制項允許多行。如果未指定此樣式,則不應在控制項的值中使用換行符號。
wxTE_PASSWORD: 文字將回顯為星號。
wxTE_READONLY: 文字將無法由使用者編輯。
wxTE_RICH: 在 MSW 下使用 RTF 文字控制項,這允許控制項中包含超過 64KB 的文字。此樣式在其他平台上會被忽略。
wxTE_RICH2: 在 MSW 下使用 2.0 或更高版本的 RTF 文字控制項,此樣式在其他平台上會被忽略。
wxTE_AUTO_URL: 反白顯示 URL,並在滑鼠事件發生在其上方時產生 wxTextUrlEvents。
wxTE_NOHIDESEL: 預設情況下,Windows 文字控制項在沒有焦點時不會顯示選取範圍 - 使用此樣式來強制它始終顯示選取範圍。它在其他平台下不會執行任何操作。
wxHSCROLL: 將建立並使用水平捲軸,以便不會換行文字。在 wxGTK1 下沒有效果。
wxTE_NO_VSCROLL: 僅適用於多行控制項:永遠不會建立垂直捲軸。這將控制項中可以輸入的文字量限制為在 wxMSW 下可以在其中顯示的文字量,但在 wxGTK 或 wxOSX 下則沒有此限制。目前未在其他平台上實作。
wxTE_LEFT: 控制項中的文字將靠左對齊 (預設)。
wxTE_CENTRE: 控制項中的文字將置中對齊 (wxMSW, wxGTK, wxOSX)。
wxTE_RIGHT: 控制項中的文字將靠右對齊 (wxMSW, wxGTK, wxOSX)。
wxTE_DONTWRAP: 與 wxHSCROLL 樣式相同:完全不換行,而是顯示水平捲軸。
wxTE_CHARWRAP: 僅適用於多行控制項:在任何位置換行顯示過長的行 (wxUniv, wxGTK, wxOSX)。
wxTE_WORDWRAP: 僅適用於多行控制項:在單字邊界換行顯示過長的行 (wxUniv, wxMSW, wxGTK, wxOSX)。
wxTE_BESTWRAP: 僅適用於多行控制項:在單字邊界或任何其他字元處換行顯示過長的行 (如果有單字長度大於視窗寬度時) (這是預設值)。
wxTE_CAPITALIZE: 在 PocketPC 和 Smartphone 上,會導致第一個字母大寫。請注意,對齊樣式 (wxTE_LEFT, wxTE_CENTRE 和 wxTE_RIGHT) 可以在 wxMSW、wxGTK 和 wxOSX 上在建立控制項後動態變更。wxTE_READONLY、wxTE_PASSWORD 和換行樣式可以在 wxGTK 下動態變更,但不能在 wxMSW 下動態變更。其他樣式只能在建立控制項期間設定。
wxTextCtrl 文字格式
多行文字控制項始終將文字儲存為以 '\n'
字元分隔的行序列,也就是說,即使在非 Unix 平台上,也採用 Unix 文字格式。這允許使用者程式碼忽略平台之間的差異,但需要付出代價:控制項中的索引 (例如 getInsertionPoint/1
或 getSelection/1
傳回的索引) 不能
用作 getValue/1
傳回的字串的索引,因為對於使用 "\\r\\n"
作為分隔符號的平台 (如 Windows),它們會稍微偏移。
相反地,如果您需要在從控制項取得的 2 個索引之間取得子字串 (藉由上述函數的協助),則應該使用 getRange/3
。並且這些索引本身只能傳遞給其他方法,例如 setInsertionPoint/2
或 setSelection/3
。
總而言之:永遠不要將 (多行) wxTextCtrl
傳回的索引用作其包含字串的索引,而只能將其作為參數傳遞回其他 wxTextCtrl
方法。但是,對於控制項中的索引與值字串中的位置相對應的單行平台,不會發生此問題。
wxTextCtrl 位置和座標
可以使用線性位置 (也就是說,大致 (但不
總是精確,如上一節所述) 控制項中包含的文字中字元的索引) 或 X-Y 座標 (也就是說,字元的欄和行) 來使用此類別,並且它提供了函數 positionToXY/2
和 xYToPosition/3
來在兩者之間轉換。
此外,控制項中的位置可以使用 PositionToCoords()
(在 wx 中未實作) 轉換為其像素座標,這對於例如在給定字元附近顯示快顯功能表很有用。並且,在另一個方向上,可以使用 HitTest()
(在 wx 中未實作) 來尋找給定像素座標之下或附近的字元。
更精確地說,位置實際上是指字元之間的間隙,而不是字元本身。因此,位置 0 是控制項中第一個字元之前的位置,即使控制項為空,它也是有效的位置。並且如果控制項包含單個字元,則它有兩個有效位置:0 在此字元之前,1 在此字元之後。因此,當各種函數的文件提及「無效位置」時,它不認為該行的最後一個字元之後的位置是無效的,只有超出該位置的位置 (例如,單個字元範例中的 2 或更大) 才是實際無效的。
wxTextCtrl 樣式。
多行文字控制項支援樣式設定,也就是說,可以為其中的個別字元設定顏色和字型 (請注意,在 Windows 下,樣式支援需要 wxTE_RICH
樣式)。要使用樣式,您可以在插入文字之前呼叫 setDefaultStyle/2
,或者稍後呼叫 setStyle/4
來變更控制項中已有的文字樣式 (第一個解決方案效率更高)。
在任何一種情況下,如果樣式未指定某些屬性 (例如,您只想設定文字顏色,而不變更字型或文字背景),則會使用預設樣式的值。如果沒有預設樣式,則會使用文字控制項本身的屬性。
因此,以下程式碼正確描述了它的作用:第二次呼叫 setDefaultStyle/2
不會變更文字前景顏色 (仍為紅色),而最後一次呼叫不會變更背景顏色 (仍為灰色)
wxTextCtrl 和 C++ 串流
此類別從 std::streambuf
多重繼承 (除非使用非標準 iostream 程式庫的一些非常舊的編譯器),允許如下程式碼
請注意,即使您的 wxWidgets 組建不支援此功能 (符號 wxHAS_TEXT_WINDOW_STREAM
的值為 0),您仍然可以以類似串流的方式使用 wxTextCtrl
本身
但是,如果需要將採用 std::ostream
作為參數的函式的輸出重新導向到文字控制項,則建立與 wxTextCtrl
相關聯的 std::ostream
的可能性可能會很有用。
另一個常見的要求是將 std::cout
重新導向到文字控制項。這可以透過以下方式完成
但是,wxWidgets 提供了一個方便的類別來使其更簡單,因此您可以執行以下操作
請參閱 wxStreamToTextRedirector
(在 wx 中未實作) 以取得更多詳細資料。
事件處理。
下列命令由 wxTextCtrl
中的預設事件處理常式處理:wxID_CUT
、wxID_COPY
、wxID_PASTE
、wxID_UNDO
、wxID_REDO
。當控制項具有焦點時,也會自動處理相關的 UI 更新事件。
請參閱:create/4
此類別衍生自以下類別,並且可以使用以下類別的函數
wxWidgets 文件:wxTextCtrl
事件
此類別發出的事件類型
摘要
函數
將文字附加到文字控制項的末尾。
如果可以將選取範圍複製到剪貼簿,則傳回 true。
如果可以將選取範圍剪下到剪貼簿,則傳回 true。
如果可以將剪貼簿的內容貼到文字控制項中,則傳回 true。
如果有可用的重做工具,並且可以重做上次操作,則傳回 true。
如果有可用的復原工具,並且可以復原上次操作,則傳回 true。
設定新的文字控制項值。
清除控制項中的文字。
將選取的文字複製到剪貼簿。
建立文字控制項以進行兩步驟建構。
將選取的文字複製到剪貼簿,並將其從控制項中移除。
銷毀物件
重設內部已修改旗標,如同已儲存目前的變更。
此函數將字元插入到控制項中,如果給定的按鍵事件發生在文字控制項中,則會插入該字元。
傳回目前用於新文字的樣式。
傳回插入點或游標位置。
傳回文字控制項中最後一個位置的從零開始的索引,該索引等於控制項中的字元數。
取得指定行的長度,不包括任何尾隨換行符號。
傳回文字控制項中指定行的內容,不包含任何尾隨的換行字元。
傳回文字控制項緩衝區中的行數。
傳回一個字串,其中包含從控制項中位置 from
開始到 to
的文字。
取得目前的選取範圍。
取得目前在控制項中選取的文字。
傳回文字控制項中此位置的樣式。
取得控制項的內容。
如果使用者可以編輯控制項的內容則傳回 true (請注意,始終可以透過程式變更)。
如果文字已被使用者修改則傳回 true。
如果這是多行編輯控制項則傳回 true,否則傳回 false。
如果這是單行編輯控制項則傳回 true,否則傳回 false。
載入並顯示指定的檔案,如果該檔案存在的話。
將文字標記為已修改 (dirty)。
預設建構子。
建構子,建立並顯示文字控制項。
將剪貼簿中的文字貼到文字項目中。
將指定的位置轉換為以零為基礎的欄、行號配對。
如果存在重做功能且可以重做上一個操作,則重做上一個操作。
移除從第一個給定位置開始到最後一個位置的字元(但不包含)的文字。
將從第一個位置開始到最後一個位置的字元(但不包含)的文字,替換為給定的文字。
將控制項的內容儲存到文字檔案中。
變更將用於新增至控制項的新文字的預設樣式。
使文字項目可編輯或唯讀,覆寫 wxTE\_READONLY
旗標。
將插入點設定在給定的位置。
將插入點設定在文字控制項的結尾。
此函式設定使用者可以輸入到控制項中的最大字元數。
選取從第一個位置開始到最後一個位置的字元(但不包含)的文字。
變更給定範圍的樣式。
設定新的文字控制項值。
showPosition(This, Pos)
undo(This)
writeText(This, Text)
xYToPosition(This, X, Y)
將給定的以零為基礎的欄和行號轉換為位置。
-type wxTextCtrl() :: wx:wx_object().
檢視原始碼
-spec appendText(This, Text) -> ok when This :: wxTextCtrl(), Text :: unicode:chardata().
將文字附加到文字控制項的末尾。
此函式的連結
備註:在附加文字後,插入點將位於文字控制項的結尾。如果不需要此行為,程式設計人員應使用 getInsertionPoint/1
和 setInsertionPoint/2
。
-spec canCopy(This) -> boolean() when This :: wxTextCtrl().
如果可以將選取範圍複製到剪貼簿,則傳回 true。
-spec canCut(This) -> boolean() when This :: wxTextCtrl().
如果可以將選取範圍剪下到剪貼簿,則傳回 true。
-spec canPaste(This) -> boolean() when This :: wxTextCtrl().
如果可以將剪貼簿的內容貼到文字控制項中,則傳回 true。
請參閱:writeText/2
-spec canRedo(This) -> boolean() when This :: wxTextCtrl().
如果有可用的重做工具,並且可以重做上次操作,則傳回 true。
-spec canUndo(This) -> boolean() when This :: wxTextCtrl().
如果有可用的復原工具,並且可以復原上次操作,則傳回 true。
-spec changeValue(This, Value) -> ok when This :: wxTextCtrl(), Value :: unicode:chardata().
設定新的文字控制項值。
在某些平台 (Motif、GTK) 上,這是一個近似值,如果控制項可編輯則傳回 true,否則傳回 false。
它還將控制項標記為未修改,這表示在呼叫 changeValue/2
後,IsModified() 會立即傳回 false。
此函式將插入點設定為控制項的開頭 (即位置 0)。
此函式不會產生 wxEVT_TEXT
事件,但除此之外與 setValue/2
完全相同。
請參閱 overview_events_prog 以取得更多資訊。
-spec clear(This) -> ok when This :: wxTextCtrl().
清除控制項中的文字。
自:2.7.1
-spec copy(This) -> ok when This :: wxTextCtrl().
將選取的文字複製到剪貼簿。
-spec create(This, Parent, Id) -> boolean() when This :: wxTextCtrl(), Parent :: wxWindow:wxWindow(), Id :: integer().
-spec create(This, Parent, Id, [Option]) -> boolean() when This :: wxTextCtrl(), Parent :: wxWindow:wxWindow(), Id :: integer(), Option :: {value, unicode:chardata()} | {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()} | {validator, wx:wx_object()}.
建立文字控制項以進行兩步驟建構。
請注意,此函式將產生 wxEVT_TEXT
事件,即其效果與呼叫 SetValue
("") 相同。
-spec cut(This) -> ok when This :: wxTextCtrl().
將選取的文字複製到剪貼簿,並將其從控制項中移除。
-spec destroy(This :: wxTextCtrl()) -> ok.
銷毀物件
-spec discardEdits(This) -> ok when This :: wxTextCtrl().
重設內部已修改旗標,如同已儲存目前的變更。
-spec emulateKeyPress(This, Event) -> boolean() when This :: wxTextCtrl(), Event :: wxKeyEvent:wxKeyEvent().
此函數將字元插入到控制項中,如果給定的按鍵事件發生在文字控制項中,則會插入該字元。
如果控制項建立時使用了預設建構子,則應呼叫此方法。其參數的含義與非預設建構子的參數相同。
event
物件應與 wxWidgets 先前傳遞給 EVT_KEY_DOWN
處理常式的物件相同。請注意,此函式目前並非在所有平台上針對所有按鍵都能正常運作,但 MSW 除外。
-spec getDefaultStyle(This) -> wxTextAttr:wxTextAttr() when This :: wxTextCtrl().
傳回目前用於新文字的樣式。
傳回:如果事件導致控制項發生變更則傳回 true,否則傳回 false。
-spec getInsertionPoint(This) -> integer() when This :: wxTextCtrl().
傳回插入點或游標位置。
這定義為插入點右側字元位置的以零為基礎的索引。例如,如果插入點位於單行文字控制項的結尾,則它等於 getLastPosition/1
。
請注意,插入位置一般而言與游標在 getValue/1
傳回的字串中的字元位置的索引不同。雖然單行控制項始終是這種情況,但多行控制項可以使用兩個字元 "\\r\\n"
作為行分隔符號 (這在 MSW 下尤其如此),這表示控制項及其字串值中的索引對於每一行都偏移 1。
-spec getLastPosition(This) -> integer() when This :: wxTextCtrl().
傳回文字控制項中最後一個位置的從零開始的索引,該索引等於控制項中的字元數。
-spec getLineLength(This, LineNo) -> integer() when This :: wxTextCtrl(), LineNo :: integer().
取得指定行的長度,不包括任何尾隨換行符號。
因此,若要正確取得目前游標位置的字元,並考慮到如果游標位於字串結尾則可能沒有字元,您可以執行下列操作
-spec getLineText(This, LineNo) -> unicode:charlist() when This :: wxTextCtrl(), LineNo :: integer().
傳回文字控制項中指定行的內容,不包含任何尾隨的換行字元。
傳回:行的長度,如果 lineNo
無效則傳回 -1。
-spec getNumberOfLines(This) -> integer() when This :: wxTextCtrl().
傳回文字控制項緩衝區中的行數。
傳回:行的內容。
傳回的數字是邏輯行數,即控制項中換行字元數 + 1 的計數,對於 wxGTK 和 wxOSX/Cocoa 連接埠,它是實際顯示在控制項中的行數計數,也就是 wxMSW 中的物理行數。由於這種差異,不建議使用此函式。
-spec getRange(This, From, To) -> unicode:charlist() when This :: wxTextCtrl(), From :: integer(), To :: integer().
傳回一個字串,其中包含從控制項中位置 from
開始到 to
的文字。
備註:請注意,即使是空的文字控制項也有一行 (插入點所在的位置),因此 getNumberOfLines/1
永遠不會傳回 0。
-spec getSelection(This) -> {From :: integer(), To :: integer()} when This :: wxTextCtrl().
取得目前的選取範圍。
這些位置必須是由另一個 wxTextCtrl
方法傳回的。請注意,多行 wxTextCtrl
中的位置 不
對應於 getValue/1
傳回的字串中的索引,因為換行符號的表示方式不同 (CR
或 CR
LF),因此應使用此方法來取得正確的結果,而不是擷取整個值的一部分。它也可能更有效率,尤其是在控制項包含大量資料時。
-spec getStringSelection(This) -> unicode:charlist() when This :: wxTextCtrl().
取得目前在控制項中選取的文字。
如果傳回的值相等,則沒有選取範圍。請注意,傳回的索引可以與其他 wxTextCtrl
方法一起使用,但不一定代表在 Windows (至少) 下的多行控制項中,getValue/1
傳回的字串的正確索引,您應該使用 getStringSelection/1
來取得選取的文字。
-spec getStyle(This, Position, Style) -> boolean() when This :: wxTextCtrl(), Position :: integer(), Style :: wxTextAttr:wxTextAttr().
傳回文字控制項中此位置的樣式。
如果沒有選取範圍,則傳回的字串為空。
並非所有平台都支援此函式。
傳回:成功則傳回 true,如果發生錯誤則傳回 false (這也可能表示此平台不支援樣式)。
-spec getValue(This) -> unicode:charlist() when This :: wxTextCtrl().
取得控制項的內容。
wxTextAttr
-spec isEditable(This) -> boolean() when This :: wxTextCtrl().
如果使用者可以編輯控制項的內容則傳回 true (請注意,始終可以透過程式變更)。
請注意,對於多行文字控制項,這些行將由 (Unix 樣式) \n
字元分隔,即使在 Windows 下,它們在原生控制項中由 \r\n
序列分隔也是如此。
-spec isModified(This) -> boolean() when This :: wxTextCtrl().
如果文字已被使用者修改則傳回 true。
換句話說,如果控制項先前未透過呼叫 setEditable/2
進入唯讀模式,則此函式會傳回 true。
請注意,呼叫 setValue/2
不會使控制項被修改。
-spec isMultiLine(This) -> boolean() when This :: wxTextCtrl().
如果這是多行編輯控制項則傳回 true,否則傳回 false。
請參閱:markDirty/1
-spec isSingleLine(This) -> boolean() when This :: wxTextCtrl().
如果這是單行編輯控制項則傳回 true,否則傳回 false。
傳回:成功則傳回 true,如果發生錯誤則傳回 false (這也可能表示此平台不支援樣式)。
-spec loadFile(This, Filename) -> boolean() when This :: wxTextCtrl(), Filename :: unicode:chardata().
-spec loadFile(This, Filename, [Option]) -> boolean() when This :: wxTextCtrl(), Filename :: unicode:chardata(), Option :: {fileType, integer()}.
載入並顯示指定的檔案,如果該檔案存在的話。
isMultiLine/1
-spec markDirty(This) -> ok when This :: wxTextCtrl().
將文字標記為已修改 (dirty)。
傳回:成功則傳回 true,否則傳回 false。
-spec new() -> wxTextCtrl().
預設建構子。
-spec new(Parent, Id) -> wxTextCtrl() when Parent :: wxWindow:wxWindow(), Id :: integer().
等同於 new(Parent, Id, [])
。
-spec new(Parent, Id, [Option]) -> wxTextCtrl() when Parent :: wxWindow:wxWindow(), Id :: integer(), Option :: {value, unicode:chardata()} | {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()} | {validator, wx:wx_object()}.
建構子,建立並顯示文字控制項。
請參閱:isModified/1
請參閱:create/4
-spec paste(This) -> ok when This :: wxTextCtrl().
將剪貼簿中的文字貼到文字項目中。
-spec positionToXY(This, Pos) -> Result when Result :: {Res :: boolean(), X :: integer(), Y :: integer()}, This :: wxTextCtrl(), Pos :: integer().
將指定的位置轉換為以零為基礎的欄、行號配對。
備註:水平捲軸 (wxHSCROLL 樣式旗標) 只會針對多行文字控制項建立。如果沒有水平捲軸,不適合控制項大小的文字行將會換行 (但不會插入換行字元)。單行控制項沒有水平捲軸,文字會自動捲動,以便插入點始終可見。
傳回:成功則傳回 true,失敗則傳回 false (最有可能的原因是位置參數太大)。
-spec redo(This) -> ok when This :: wxTextCtrl().
如果存在重做功能且可以重做上一個操作,則重做上一個操作。
請參閱:xYToPosition/3
-spec remove(This, From, To) -> ok when This :: wxTextCtrl(), From :: integer(), To :: integer().
移除從第一個給定位置開始到最後一個位置的字元(但不包含)的文字。
如果沒有重做功能則不做任何動作。
-spec replace(This, From, To, Value) -> ok when This :: wxTextCtrl(), From :: integer(), To :: integer(), Value :: unicode:chardata().
將從第一個位置開始到最後一個位置的字元(但不包含)的文字,替換為給定的文字。
如果沒有重做功能則不做任何動作。
-spec saveFile(This) -> boolean() when This :: wxTextCtrl().
等同於 saveFile(This, [])
。
-spec saveFile(This, [Option]) -> boolean() when This :: wxTextCtrl(), Option :: {file, unicode:chardata()} | {fileType, integer()}.
將控制項的內容儲存到文字檔案中。
此函式會將目前的插入點位置設定為 to
,作為副作用。
-spec setDefaultStyle(This, Style) -> boolean() when This :: wxTextCtrl(), Style :: wxTextAttr:wxTextAttr().
變更將用於新增至控制項的新文字的預設樣式。
傳回:如果操作成功則傳回 true,否則傳回 false。
這適用於透過程式設計使用 writeText/2
或 appendText/2
新增的文字,以及使用者以互動方式輸入的文字。
如果在 style
中未設定字型、前景或背景色彩,則會使用先前預設樣式的值。如果先前的預設樣式也沒有設定它們,則會使用文字控制項本身的整體字型或色彩作為後備。
並非所有平台都支援此函式。
但是,如果 style
參數是預設的 wxTextAttr
,則預設樣式只會重設 (而不是與新樣式組合,這樣根本不會變更)。
-spec setEditable(This, Editable) -> ok when This :: wxTextCtrl(), Editable :: boolean().
使文字項目可編輯或唯讀,覆寫 wxTE\_READONLY
旗標。
-spec setInsertionPoint(This, Pos) -> ok when This :: wxTextCtrl(), Pos :: integer().
將插入點設定在給定的位置。
-spec setInsertionPointEnd(This) -> ok when This :: wxTextCtrl().
將插入點設定在文字控制項的結尾。
請參閱:isEditable/1
-spec setMaxLength(This, Len) -> ok when This :: wxTextCtrl(), Len :: integer().
此函式設定使用者可以輸入到控制項中的最大字元數。
這等同於使用 getLastPosition/1
引數呼叫 setInsertionPoint/2
。
如果 len
為 0,則會捨棄先前設定的最大長度限制(如果有的話),使用者可以輸入的文字量將取決於底層的原生文字控制元件所支援的量(通常至少為 32KB)。如果使用者嘗試在文字控制元件已達到最大長度時輸入更多字元,則會發送 wxEVT_TEXT_MAXLEN
事件通知程式(使其可以顯示說明訊息等),並且多餘的輸入將被捨棄。
請注意,在 wxGTK 中,此函數只能用於單行文字控制元件。
-spec setSelection(This, From, To) -> ok when This :: wxTextCtrl(), From :: integer(), To :: integer().
選取從第一個位置開始到最後一個位置的字元(但不包含)的文字。
如果兩個參數都等於 -1,則會選取控制元件中的所有文字。
請注意,此函數會將插入點移動到 from
。
-spec setStyle(This, Start, End, Style) -> boolean() when This :: wxTextCtrl(), Start :: integer(), End :: integer(), Style :: wxTextAttr:wxTextAttr().
變更給定範圍的樣式。
如果 style
中的任何屬性未設定,則會使用來自 getDefaultStyle/1
的對應屬性。
並非所有平台都支援此函式。
傳回:成功則傳回 true,如果發生錯誤則傳回 false (這也可能表示此平台不支援樣式)。
-spec setValue(This, Value) -> ok when This :: wxTextCtrl(), Value :: unicode:chardata().
設定新的文字控制項值。
它也會將控制元件標記為未修改,這表示在呼叫 setValue/2
後,IsModified() 會立即傳回 false。
除非控制元件的值完全沒有變更,否則此函數會將插入點設定在控制元件的開頭(即位置 0),在這種情況下,插入點會保留在其原始位置。
請注意,與大多數其他變更控制元件值的函數不同,此函數會產生 wxEVT_TEXT
事件。為了避免這種情況,您可以使用 changeValue/2
來替代。
-spec showPosition(This, Pos) -> ok when This :: wxTextCtrl(), Pos :: integer().
showPosition(This, Pos)
-spec undo(This) -> ok when This :: wxTextCtrl().
undo(This)
如果沒有復原功能,則不會執行任何動作。
-spec writeText(This, Text) -> ok when This :: wxTextCtrl(), Text :: unicode:chardata().
writeText(This, Text)
備註:文字字串中的換行符號是唯一允許的控制字元,它們會導致適當的換行。請參閱 operator<<() 和 appendText/2
,以取得更方便的視窗寫入方式。寫入操作後,插入點將位於插入文字的末尾,因此後續的寫入操作將會附加。若要在使用者可能與控制元件互動後附加文字,請在寫入之前呼叫 setInsertionPointEnd/1
。
-spec xYToPosition(This, X, Y) -> integer() when This :: wxTextCtrl(), X :: integer(), Y :: integer().
xYToPosition(This, X, Y)
傳回值:位置值,如果 x 或 y 無效,則傳回 -1。