1

6i に Oracle のタブ付きフォームがあり、最初のタブにテキスト項目があります。タブを変更すると項目が現在のタブに移動するコードを設定したいと考えています。つまり、アイテムが現在アクティブなタブのみを移動または表示する必要があるということです。アイテムが最初のタブにあり、2 番目のタブを選択すると、最初のタブのアイテムが 2 番目のタブに配置されます。

4

2 に答える 2

1

タブ間でアイテムを移動することはできないと思いますが、このようなものが必要でした。ボタンやテキスト ラベルを使用せずに、現在表示されているデータの種類をタブ ラベルから確認できると便利です。複数のブロックを作成したくないが、where 句のみを変更するか、他のプロパティを変更する場合は、

  1. BLOCK_A.NAME (TAB1) のアイテムを例に取り、アイテムを BLOCK_A.NAME_2 として複製します。
  2. 複製されたアイテムでアイテム プロパティと同期を使用し、リストから NAME アイテムを選択します。
  3. Set TAB 重複した項目を表示したい。

WHEN-TAB-PAGE-CHANGED トリガーは次のようになります。

declare
   curr_tab varchar2(30);
begin
    if :SYSTEM.CURRENT_BLOCK in ('BLOCK_A') then
        curr_tab := get_canvas_property('MYTABPAGE',topmost_tab_page); 
        if curr_tab = 'TAB1' then
            --Set WHERE 1, execute_query;
            go_item('BLOCK_A.NAME');--Navigate to TAB1
        else
            --Set WHERE 2, execute_query;
            go_item('BLOCK_A.NAME_2');--Navigate to TABX
        end if;
    end if;
end;

このようにして、同じデータソースで異なるプロパティを持つ複数のアイテムを持つことができます。直接移動するには、適切な項目に移動して、必要な TAB を表示します。

于 2014-02-25T16:31:07.023 に答える
0

あなたを助けるかもしれないトリガー「WHEN-TAB-PAGE-CHANGED」がありますが...

...別の「ベース」キャンバスの上にタブ付きのキャンバスが必要なように聞こえます。常にベースキャンバスに表示したいこのフィールドを配置すると、常に表示され、タブ間でデータを移動する必要がなくなります。

于 2012-07-04T04:39:41.900 に答える