簡體   English   中英

如何在嵌入框架中設置標簽順序? (C++ FMX、C++ 生成器)

[英]How to set tab order in embedded frames? (C++ FMX, C++ Builder)

我正在嘗試為主窗體中框架中的字段設置 Tab 鍵順序,但是,編輯框永遠不會被激活。 我唯一可以激活頂部編輯字段的是當我使用 SetFocus function 時。 我錯過了什么?

相關代碼

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Frame31->Edit1->TabOrder = 0;
    Frame21->Rectangle1->TabOrder = 1;
    Frame22->Rectangle1->TabOrder = 2;
    Button1->TabOrder = 3;
}

帶有標簽的應用截圖

在此處輸入圖像描述

組件層次結構

在此處輸入圖像描述

參考

http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Controls.TControl.TabOrder

編輯

更新了問題以反映應用程序的設計; 在應用程序屏幕截圖中包含組件層次結構圖像和更新的標簽。

TabOrder每個父母有效。 窗體是框架和按鈕的父級。 所以,設置

Frame31->Taborder = 0;
Frame21->Taborder = 1;
Frame22->Taborder = 2;
Button1->TabOrder = 3;

所有TEdit控件都有單獨的父級,因此可以保留默認值

TabOrder = 1;`.
TabStop = True;

如果在任何框架上存在多個TEdit (或其他控件),則必須指定這些控件之間的TabOrder


編輯

我必須為框架的TabStop = False道歉。 在這種情況下它沒有效果。 因此,只需將它們保留為默認True

我可以確認,當您有一個TRectangle作為TEdit的父級時, TEdit將不會被標記。 我無法解釋為什么會這樣,我也沒有立即在 Embarcaderos 質量報告系統上找到任何相關信息。

也許您可以刪除矩形,或者直接將TEdit重新排列為TFrame的子級,然后將其放在TRectangle上,這樣它在視覺上看起來就像是TRectangle的一部分。 這樣做的缺點是您不能使用TRectangle移動TEdit

在此處輸入圖像描述

我有點晚了,但我遇到了同樣的問題。 解決方案是將 Rectangle 的未發布 TabOrder 屬性設置為 0。

一切順利,

阿吉85

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM