2.9.8.13 特別なリスト:グラフ

グラフは、1つまたは複数のフィールドの情報をグラフ形式で表示します。現在のバージョンでは、面グラフ、棒グラフ、折れ線グラフ、円グラフ、散布図、等高線グラフが表示できます。詳細は、GraphTypeプロパティの機能オンライン・ヘルプを参照してください。

円グラフは、データを1つのフィールドから表示し、他のグラフは、データを複数のフィールドから表示できます。散布図と等高線グラフは、2つの以上のデータ・フィールドが必要です。

他のリストでは、フィールドは列として表されます。グラフ化されるデータを含む列(数値データ)は、ColumnRole(Data)として定義され、テキスト情報を含む列は、ColumnRole(Label)として定義されます。ColumnRoleは、列を非表示にして無効にするNoneにも設定できます。これは、グラフに複数の列があり、表示されるデータを動的に変更する場合に有効です。

グラフのタイプが違うと、そのスタイル設定も異なります。AreaStyle、BarStyle、LineStyle、PieStyle、ScatterStyle、およびSurfaceStyleプロパティを使用するセットがあります。

最小値、最大値、平均値、合計値をグラフにする場合は、KEEP_XXXXXコマンドを使用して値を計算できます。例えば、#SALARYAVGフィールドを定義し、#SALARYフィールドの平均の値を保存すると、部門ごとの平均の賃金を表示できます。

*(Department loaded and selected previously)

EVTROUTINE HANDLING(#PHBN_1.Click)
   clr_list #grph_1
   select (#section #secdesc) from_file(sectab) with_key(#deptment)
      select #salary from_file(pslmst1) with_key(#deptment #section)
         KEEP_AVG OF_FIELD(#SALARY) IN_FIELD(#SALARYAVG)
      endselect  
      add_entry #grph_1
   endselect  
ENDROUTINE  

 

グラフは、ユーザーがグラフの部門をクリックするとItemGotSelectionイベントを受け取ります。このイベントは、グラフの列の現在のエントリーを設定します。例えば、棒グラフで従業員を表す棒をクリックすると、その従業員がグラフの現在のエントリーになります。この機能を使用してメッセージ・ボックスや他のグラフなどで現在のエントリーに関する詳細な情報を提供できます。

以下の円グラフは、個々の従業員が獲得した合計の賃金の割合を示します。

グラフを実行すると、円グラフの違う部門をクリックすると(ItemGotSelectionイベント)、名字(CurrentItem)が変更されることがわかります。

グラフのソースは以下のようになっています。

FUNCTION OPTIONS(*DIRECT)
 
*Definitions
BEGIN_COM HEIGHT(412) LEFT(218) TOP(160) WIDTH(462)
DEFINE_COM CLASS(#PRIM_GRPH) NAME(#GRAPH)  DISPLAYPOSITION(1) HEIGHT(305) LEFT(32)  PARENT(#COM_OWNER)  TABPOSITION(1) TOP(56) WIDTH(385) PIESTYLE(AUTOARRANGELABELS)
DEFINE_COM CLASS(#PRIM_GRCL) NAME(#GRCL_1) DISPLAYPOSITION(2) PARENT(#GRAPH) SOURCE(#SALARY)
DEFINE_COM CLASS(#PRIM_GRCL) NAME(#GRCL_2) COLUMNROLE(Label) DISPLAYPOSITION(1) PARENT(#GRAPH) SOURCE(#SURNAME)
DEFINE_COM CLASS(#SURNAME.Visual) NAME(#SURNAME) DISPLAYPOSITION(2) HEIGHT(20) LEFT(32) PARENT(#COM_OWNER) TABPOSITION(2) TOP(16) WIDTH(281)
 
*Get data, add it to the graph and set the caption and the type 
EVTROUTINE HANDLING(#graph.initialize)
   CLR_LIST NAMED(#GRAPH)
   SELECT FIELDS(#SALARY #SURNAME) FROM_FILE(PSLMST) WHERE('#SALARY > 90000' )
     ADD_ENTRY TO_LIST(#GRAPH)
   ENDSELECT  
   Set #GRAPH CAPTION('Salaries by Employee' )
   Set #graph GRAPHTYPE(Pie)
ENDROUTINE 
 
END_COM