グラフは、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