2017-05-03 11 views
0

多くのページ(AdvPage1、AdvPage2、AdvPage3 ...)でTAdvToolBarPagerを使用しています。各ページには多くの編集、ナビゲータなどがあります。つまり、ADMINではすべてのページ(1,2,3)を表示したいのですが、USERの場合はページ(1,2)または(1)のみを表示したいと考えています。デルファイのページの可視プロパティを動的に設定

以下のコードを使用して、すべての編集、ナビゲータを無効にすることができます。いくつかの方法は、TAdvToolBarPager visbleのページを制約に基づいてどのように設定するかを支援することができます。これを達成するための他の方法。前もって感謝します!

Procedure SetForm(Form: TForm; enabled: Boolean); 
var PropInfo : PPropInfo; 
i  : Integer; 
begin 
    for i := 0 to Pred(Form.ComponentCount) do 
    begin 
    if (Form.Components[i] is TDBEdit) or (Form.Components[i] is DBNavigator) then 
    begin 
    PropInfo := GetPropInfo(Form.Components[i].ClassInfo, 'Enabled'); 
    if PropInfo <> nil then 
     SetOrdProp(Form.Components[i], PropInfo, Ord(enabled)); 
    end; 
    end; 
end; 
+1

はあなただけTabVisibleプロパティを設定することはできません3ページのFalse?ページを表示するが選択できないようにするには、代わりにTabEnabledをFalseに設定します。 –

+0

はい、私は言及を使用してそれを行うことができます。どのように反復し、TAdvToolBarPagerのAdvPageにTabVisible/TabEnabledを設定することができますか? Form.AdvToolBarPager1.AdvPages [1] .TabVisible:= False; Form.AdvToolBarPager1.AdvPages [2] .TabVisible:= False; Form.AdvToolBarPager1.AdvPages [1] .TabVisible:= False; しかし、私は動的に設定したいと思います。 –

+0

「動的に設定する」という意味を説明できますか?上記のSetFormプロシージャをどのように呼び出すでしょうか? –

答えて

1

質問へのご意見によると、管理ページは常に三番目であると仮定すると、この単純化された手順は、あなたが欲しいものを行う必要があります。

Procedure SetForm(Form: TForm; enabled: Boolean); 
var 
    i: Integer; 
begin 
    for i := 0 to Form.ComponentCount - 1 do begin 
    if (Form.Components[i] is TAdvToolBarPager) then begin 
     TAdvToolBarPager(Form.Components[i]).AdvPages[2].TabVisible := enabled; 
     Exit; // probably only one AdvToolBarPager available 
    end; 
    end; 
end; 
+0

ありがとう、ほぼ動作します。しかし、もし私がページ2、3をユーザーに、1,2,3をadminに表示したい場合は失敗します。 –

+0

コードを調整するのはかなり簡単です。管理ページが各フォームで異なると、手間がかかることがあります。それで私の最初の質問。どのページを表示するかを決定する共通の条件が必要です。あなたがこの状態を完全に明言していない限り、我々は推測することができます。 –

+0

どのページを表示するかを決定するために、このプロシージャで別のパラメータを渡しました。 私はこのコードを使用して別の問題に直面しています。 TAdvToolBarPager(Form.Components [i])を作成すると、AdvPages [0] .TabVisible:= falseになります。ページは表示されませんが、ページ内のコンテンツが表示されます –

関連する問題