SetFocus 函式

適用於: 畫布應用程式 模型導向應用程式

將輸入焦點移至特定的控制項。

Description

SetFocus 函式讓控制項成為輸入焦點。 接著該控制項會收到使用者的擊鍵,允許他們在文字輸入控制項中鍵入或使用 Enter 鍵選取按鈕。 使用者也可以使用 Tab 鍵、觸控筆、滑鼠或其他筆勢自行移動輸入焦點。 Tab 鍵行為是由 TabIndex屬性 管轄。

使用 SetFocus 函式設定焦點 (每個請參閱下列範例):

  • 新揭開或啟用的輸入控制項引導使用者進入下一步和快速資料輸入。
  • 驗證表單時會聚焦和顯示討厭的輸入控制項,以快速解決問題。
  • 畫面隨即顯示,聚焦第一個輸入控制項 ScreenOnVisible 屬性。

具有焦點的控制項可能會根據 FocusedBorderColorFocusedBorderThickness 屬性而有不同的視覺效果。

限制

SetFocus 只能與下列搭配使用:

您無法將焦點設定至 Gallery 控制項的控制項、Edit form 控制項或 元件 SetFocus 可以與可滾動畫面中的控制項搭配使用。

您不能將焦點設為Container控制項內的控制項。

您只能將焦點設定至與包含 SetFocus 呼叫的公式相同畫面上的控制項。

嘗試將焦點設定至其 DisplayMode 屬性設為 Disabled 的控制項不會有任何影響。 焦點會保留在先前的位置。

在 Apple iOS 上,只有在直接使用者動作啟動 SetFocus 時,才會自動顯示螢幕小鍵盤。 例如,從按鈕的 OnSelect 屬性中進行呼叫時,會在從畫面的 OnVisible 進行喚醒呼叫時顯示軟鍵盤。

您只能在 行為公式 中使用 SetFocus

語法

SetFocus (Control)

  • Control – 必要。 要給予輸入焦點的控制項。

範例

焦點放在最新公開或啟用的輸入控制項上

許多購物車允許客戶使用運送位址做為帳單位址,所以您需要輸入兩次相同的資訊。 如果想要不同的帳單位址,則會啟用帳單位址文字方塊,並將其引導至可讓使用者使用這些新啟用的控制項,以便快速輸入資料。

選擇使用自訂帳單地址的動畫,並將焦點移至帳單名稱輸入控制項,因此會關閉與裝運地址的自動同步處理。

這裡有許多要播放的公式,但是移動焦點的是在 Check box 控制項的 OnUncheck 屬性上:

SetFocus( BillingName )

也可以使用 Tab 鍵從一個欄位快速地將焦點移至另一個欄位。 若要更好地闡釋,動畫中不會使用 Tab 鍵。

若要建立此範例:

  1. 建立新的應用程式。
  2. 新增帶有文字「出貨地址」、「名稱:」、「地址:」、「帳單位址」、「名稱:」及「地址:」的 Label controls 控制項,並將它們定位為動畫中顯示的位置。
  3. 新增 Text Input 控制項,並將其重新命名為 ShippingName
  4. 新增 Text Input 控制項,並將其重新命名為 ShippingAddress
  5. 新增 Check box 控制項 ,並將它重新命名為 SyncAddresses
  6. 將此控制項的 Text 屬性設定為 "Use Shipping address as Billing address" 公式。
  7. 新增 Text Input 控制項,並將其重新命名為 BillingName
  8. 將此控制項的 Default 屬性設定為 ShippingName 公式。
  9. 將此控制項的 DisplayMode 屬性設定為 If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ) 公式。 這會根據檢查方塊控制項的狀態自動啟用或停用此控制項。
  10. 新增 Text Input 控制項,並將其重新命名為 BillingAddress
  11. 將此控制項的 Default 屬性設定為 ShippingAddress 公式。
  12. 將此控制項的 DisplayMode 屬性設定為 If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ) 公式。 這會根據檢查方塊控制項的狀態自動啟用或停用此控制項。
  13. 將此檢查方塊的 Default 屬性設定為 true 公式。 這會預設帳單位址使用與送貨位址相同的值。
  14. 將此檢查方塊的 OnCheck 屬性設定為 Reset( BillingName ); Reset( BillingAddress ) 公式。 如果使用者選擇同步處理運費和帳單地址,這將會清除帳單地址欄位中的任何使用者輸入,允許每個使用者的 Default 屬性從對應的送貨地址欄位中提取值。
  15. 將此檢查方塊的 OnUncheck 屬性設定為 SetFocus( BillingName ) 公式。 如果使用者選擇使用不同的帳單地址,這會將焦點移至帳單地址中的第一個控制項。 因為控制項的 DisplayMode 屬性,所以控制項已經被啟用。

聚焦於驗證問題

Note

雖然此範例看起來像是 Edit form 控制項,但是該控制項尚不支援此控制項的 SetFocus。 相反地,此範例使用可捲動畫面控制項來承載輸入控制項。

驗證表單時,不僅在發生問題時才會顯示訊息,也有助於讓使用者進入發生衝突的欄位。 如果問題欄位是捲出畫面而看不到,它就會非常有用。

驗證資料輸入表單並不僅會顯示訊息,也會將輸入焦點設定為令人討厭的輸入控制項 (即使它滾出畫面) 的動畫。

在此動畫中,會重複按鍵驗證按鈕,直到所有欄位都已正確填入為止。 請注意,滑鼠指標不會從畫面控制項頂端向下移動。 而 SetFocus 函式已將輸入焦點移至需要注意此公式的控制項:

If( IsBlank( Name ),
        Notify( "Name requires a value", Error ); SetFocus( Name ),
    IsBlank( Street1 ),
        Notify( "Street Address 1 requires a value", Error ); SetFocus( Street1 ),
    IsBlank( Street2 ),
        Notify( "Street Address 2 requires a value", Error ); SetFocus( Street2 ),
    IsBlank( City ),
        Notify( "City requires a value", Error ); SetFocus( City ),
    IsBlank( County ),
        Notify( "County requires a value", Error ); SetFocus( County ),
    IsBlank( StateProvince ),
        Notify( "State or Province requires a value", Error ); SetFocus( StateProvince ),
    IsBlank( PostalCode ),
        Notify( "Postal Code requires a value", Error ); SetFocus( PostalCode ),
    IsBlank( Phone ),
        Notify( "Contact Phone requires a value", Error ); SetFocus( Phone ),
    Notify( "Form is Complete", Success )
)

若要建立此範例:

  1. 建立新的空白手機應用程式。
  2. Insert 功能表選取 New screen,然後選取 Scrollable
  3. 在畫面的中部區段中,新增 Text input控制項並將它們命名為 NameStreet1Street2CityCountyStateProvincePostalCodePhone。 在每個控制項上方新增 Label 控制項,以找出欄位。 如果區段的時間不夠,無法容納所有控制項,您可能需要調整區段的大小。
  4. 在畫面上方的可捲動區段上方,新增檢查記號的 Icon 控制項
  5. 將圖示控制項的 OnSelect 屬性設為以下公式 If( IsBlank( ...

顯示畫面時的焦點

Note

雖然此範例看起來像是 Edit form 控制項,但是該控制項尚不支援此控制項的 SetFocus。 相反地,此範例使用可捲動畫面控制項來承載輸入控制項。

與公開輸入控制項類似,顯示資料輸入畫面時,將第一個輸入控制項集中於更快速資料輸入是非常實用的。

動畫顯示了使用 SetFocus 相對於的並排比較,而不是在顯示資料輸入畫面時使用。

在此動畫中,左邊的資料輸入畫面不使用 SetFocus。 當顯示時無輸入控制項具有焦點時,要求使用者使用索引標籤鍵、觸摸、滑鼠或使用其他方式在 Name 欄位具有焦點,才能在其中輸入值。

在右邊,我們有與資料輸入畫面的 OnVisible 屬性設定為設為此公式的相同應用程式:

SetFocus( Name )

這會自動將焦點設定至 Name 欄位。 使用者可以開始輸入並在欄位之間進行切換,立即不需執行先前的動作。

若要建立此範例:

  1. 建立以上的「專注於驗證問題」應用程式。
  2. 在此畫面上,將此 OnVisible 屬性設定為 SetFocus( Name ) 公式。
  3. 新增第二畫面控制項。
  4. 新增 Button control
  5. 將此控制項的 OnSelect 屬性設定為 Navigate( Screen1 ) 公式。
  6. 從此畫面預覽應用程式。 請按此按鈕。 OnVisible 公式將會進行評估,而 Name 欄位會自動成為焦點。