Develop2K 6.0常見問題解答
2024-07-21 02:38:15
供稿:網友
 
             
  問:如何在FORM中同時加入水平與垂直滾動條? 
                                                                                                答:首先,必須將畫布類型設置為“堆疊式”畫布,其它類型的畫布不能顯示滾動條。將畫布類型設置為“堆疊式”之后,該畫布屬性選項板的“物理屬性”子類會出現“顯示水平滾動條”與“顯示垂直滾動條”兩項內容,將其同時設置為“是”,則可以同時顯示水平與垂直滾動條。 
  
    問:如何在告警框內顯示message信息? 
    答:當使用系統缺省設置,不進行任何設定時,message信息將在FORM窗口的底部以小字顯示。假如希望引起用戶注重,可以將message信息顯示在告警框中。例如,假如用戶輸入的數據類型錯誤,則彈出一個告警窗口,并在其中顯示message信息:“輸入數據類型不符”,這樣,可以更加清楚地提醒用戶輸入有誤,并答應用戶及時地改正錯誤。 
  
    在告警框中顯示message信息,只需要創建一個警告(alert)與一個ON_ERROR觸發器,由于引用的是系統錯誤信息,所以不需要程序員自己編寫捕捉錯誤并彈出相關警告信息的程序,從而提供了極大的便利。 
  
    在告警框內顯示message信息的過程如下所述: 
  
    1. 創建一個只具有一個按鈕的警告“general_error_alert”。 
  
    2. 在FORM一級創建ON_ERROR觸發器,在出現錯誤時,將錯誤代碼與信息顯示在告警框中,程序如下: 
  
    declare 
  
    v_button number; 
  
    v_message varchar2(255); 
  
    begin 
  
    --將不需要顯示的mesage信息屏蔽掉 
  
    if error_code in (0,40100,40400,40401,41051,40350) 
  
    then null; 
  
    else 
  
    --將錯誤代碼與錯誤信息聯系起來 
  
    v_message:=error_type  '-'  to_char(error_code)  ':'  error_text; 
  
     --將錯誤信息顯示為告警信息 
  
    set_alert_PRoperty('general_error_alert',alert_message_text,v_message); 
  
    v_button:=show_alert('general_error_alert'); 
  
    end if; 
  
    raise form_trigger_failure; 
  
    end; 
  
    問:如何一次退出所有FORM? 
    答:假如重復調用并打開了多個FORM,希望在點擊任何一個FORM選單上的“退出”按鈕時同時退出所有的FORM,需要在每一個FORM中設置一個全局變量global.quit_all,同時在選單條上加入一個“退出”按鈕,并建立以下觸發器: 
  
    1.在每一個FORM上建立WHEN_NEW_FORM_INSTANCE觸發器: 
  
    :global.quit_all := 'N'; 
  
    2.在每一個FORM上建立WHEN_WINDOW_ACTIVATED觸發器: 
  
    if :global.quit_all = 'Y' 
  
    then exit_form; 
  
    end if; 
  
    3.在選單條的“退出”按鈕上建立WHEN_BUTTON_PRESSED觸發器: 
  
    :global.quit_all := 'Y'; 
  
    exit_form; 
  
    注重,要么使用OPEN_FORM打開FORM,要么使用CALL_FORM打開FORM,不能兩者混合使用,否則輕易發生錯誤,無法一次退出所有的FORM。 問:如何在FORM與REPORT之間傳遞參數? 
    答:由于FORM與REPORT是兩項獨立的產品,不可能使用全局變量傳遞數據,所以它們之間的數據無法共享。假如希望REPORT繼續FORM中的一些數據,可以將FORM中的有關數據作為參數,以參數列表的形式傳遞給REPORT。 
  
    例如,可以根據用戶在FORM中的選擇,在REPORT中動態生成符合查詢條件的數據,方法是將FORM中的查詢條件,作為參數傳遞給REPORT,從而在REPORT中動態生成查詢結果。 
  
    在FORM與REPORT之間傳遞參數的程序如下所示: 
  
    declare 
  
    pl_id ParamList; 
  
    begin 
  
    —獲取tmpdep的參數列表值 
  
    pl_id := Get_Parameter_List( 'tmpdep' ); 
  
    —假如參數列表pl_id已存在,則刪除它,然后重建。假如不刪除當前pl_id,則無法創建參數列表,并在運行FORM時出現錯誤提示:參數列表已存在,無法重建 
  
    if Not Id_Null( pl_id ) 
  
    then Destroy_Parameter_List(pl_id); 
  
    end if; 
  
    --創建參數列表tmpdep 
  
    pl_id:=Create_Parameter_List('tmpdep' ); 
  
    --在參數列表pl_id中加入參數w_clause,同時對w_clause賦值 
  
    where deptno=:dept_deptno。
                          
  
    Add_Parameter( pl_id,'w_clause', TEXT_Parameter, 'where deptno=:dept.deptno'); 
  
    --運行報表,并將現有參數列表pl_id與值傳遞給報表report1 
  
    run_prodUCt(reports,'C:/report/report1',synchronous,runtime,filesystem,pl_id); 
  
    end ; 
  
    問:從FORM調用REPORT時,如何使REPORT以滿屏方式顯示? 
    答:當從FORM調用REPORT時,REPORT將按缺省窗口大小(420×360)顯示,假如希望REPORT以滿屏方式顯示,需要加入如下代碼: 
  
    add_parameter(pl_id,maximize',TEXT_PARAMETER,'yes'); 
  
    問:如何關閉REPORT運行時的參數窗口? 
    答:當FORM調用REPORT時,首先會彈出一個參數窗口,顯示所有FORM傳遞給REPORT的參數,待點擊該窗口中的“運行”后,才運行REPORT。我們也可以不顯示該參數窗口,方法是在FORM中加入如下代碼: 
  
    Add_Parameter(pl_id,'w_clause',TEXT_Parameter,'NO');