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');