(57)【特許請求の範囲】
【請求項１】
各列が列名を有する複数列から構成される表を表データとして記憶する表データ記憶手段と、
前記表データから前記表データの全ての列名を抽出して、この列名を記憶する列名抽出手段と、
前記抽出された全ての列名を列名一覧として前記表データと並列的に同一画面上に表示する表示手段と、
表示された前記列名一覧の中から、前記表データのスクロール列を指定するスクロール列指定手段と、
前記表データのうち、指定された前記スクロール列の前記表データを画面上の所定の位置からスクロール制御して前記表示手段へ表示するスクロール制御手段と、
スクロール表示の設定をされた前記表データの列が前記画面上に全て表示されるか否かを判別する判別手段と、
前記判別手段による判別結果が識別可能な形態となるよう制御して前記列名一覧を前記表示手段へ表示する列名一覧制御手段と、
を備えたことを特徴とする表の表示制御装置。
【請求項２】
各列が列名を有する複数列から構成される表を表データとして記憶する表データ記憶手段と、
前記表データから前記表データの全ての列名と、列名毎に表示または非表示の状態を設定する設定情報とを抽出して記憶する列名抽出手段と、
前記抽出された全ての列名を前記設定情報に基づいて各列毎に表示または非表示が識別可能な形態で列名一覧として前記表データと並列的に、且つ、この列名を横方向に前記表データと同一画面上に表示する表示手段と、
表示された前記列名一覧の中から、１または複数の列名を選択して各列毎に表示または非表示の状態を指定する表示列指定手段と、
前記表示列指定手段の指定に従って、前記列名一覧の各列毎に表示または非表示の状態を設定する前記列名抽出手段の設定情報を更新し、その設定情報に基づいて前記表データのうち、表示の状態を設定された列のデータを前記表示手段へ表示するように制御する列表示制御手段と、
を備えたことを特徴とする表の表示制御装置。
【請求項３】
前記表示手段は、前記表データの各列毎に前記画面上の表示範囲内または表示範囲外かが識別可能な形態となるように前記列名一覧の表示形態を制御する
ことを特徴とする請求項２記載の表の表示制御装置。
【請求項４】
コンピュータに
各列が列名を有する複数列から構成される表データとから前記表データの全ての列名と、列名毎に表示または非表示の状態を設定する設定情報とを抽出する機能と、
前記抽出された全ての列名を前記設定情報に基づいて各列毎に表示または非表示が識別可能な形態で列名一覧として前記表データと並列的に、且つ、この列名を横方向に前記表データと同一画面上に表示する機能と、
表示された前記列名一覧の中から、１または複数の列名を選択して各列毎に表示または非表示の状態を指定する機能と、
前記表示列指定手段の指定に従って、前記列名一覧の各列毎に表示または非表示の状態を設定する前記列名抽出手段の設定情報を更新し、その設定情報に基づいて前記表データのうち、表示の状態を設定された列のデータを前記表示手段へ表示するように制御する機能とを、
実現させるための表示制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、表の表示制御装置、表の表示制御方法、及び表の表示制御プログラムを記憶した記憶媒体に関する。
【０００２】
【従来の技術】
エディタ、ワープロ、及び表計算ソフトなどのソフトウェアの表示においては、スクロールは必須の機能になっている。スクロールは、ディスプレイの１画面にデータを表示しきれないとき、表示画面を上下左右に移動して残りの部分を表示する機能である。すなわち、エディタ、ワープロでは、テキストが複数ページである場合、また、表計算ソフトなどでは、「ワークシート」が複数行×複数列で構成される場合、ユーザは、スクロール操作を行うことによって、所望の行や所望の列を閲覧することができる。
【０００３】
また、該スクロール機能は、会計業務などの帳票の表示にも利用される。該帳票として、図３２に示すような、階層構造を有する「括り表」が知られている。同図は、該括り表の一例である「商品売上実績表」を示す図である。商品の場合、一つの商品が複数のカテゴリに分類され、さらに、各カテゴリーが、複数の実際に販売されている商品に分類されるというように、階層構造で表現される。このような階層構造を表形式で表現したのが括り表である。
【０００４】
同図に示す商品売上実績表２００は、スクロール操作の対象外の領域である固定領域２１０と、スクロール操作の対象領域であるスクロール領域２２０に分かれており、スクロール領域２２０のみでスクロールが可能になっている。すなわち、固定領域２１０は階層構造で表現された商品に関する各項目（「電卓」などの商品項目、「ＤＩＡＲＹ」等の「商品のカテゴリ項目」、及び「０１１２１２３  ＳＦ−４４００」等の商品識別番号並びに商品名）から構成されており、スクロール領域２２０は、固定領域の各行の各データ項目の各種属性データ（「売上金」、「売上数」、「仕入れ数」、「粗利」、「粗率」、「在庫数」、「在庫月」、・・・）の表示が表示される複数の列から構成されている。
【０００５】
図３２に示すような帳票等の表の表示においては、表示画面サイズの制約により、１画面に表全体を表示することは不可能な場合が多い。このため、スクロール領域２２０において、所望の行または列を表示させる操作が必要となる。
【０００６】
上記のような操作として、従来、表の任意の列の表示出力を、「抑制」及び「抑制解除（表示再開）」する方法が知られている。このような「表示抑制」及び「表示再開」は、従来、以下のような操作により指定するようになっている。
【０００７】
▲１▼  まず、表から表示を抑制したい（非表示としたい）列を選択し、次に、メニューで「表示しない」項目を指定する。また、表示抑制を解除して、非表示となっている列を「表示再開」させる場合には、まず、表示抑制（非表示）となっている両側（両端の列）を指定し、次に、メニューで「再表示」項目を指定する。
【０００８】
▲２▼  表全体に有効な「列表示」のダイアログボックスを利用して、各列の表示／非表示を一括指定する。この場合、ダイアログボックス内で、各列毎に、表示または非表示のチェックボックスをチェックする。
【０００９】
【発明が解決しようとする課題】
しかしながら、上記▲１▼、▲２▼の方式には、それぞれ、以下のような問題があった。まず、▲１▼の方式の場合は、表示を抑制した列の抑制解除の操作が、ユーザにとっては、直観的でないため、分かりにくいという問題があった。また、現画面の表示範囲外の表の表示状態を変更するためには、事前に、該当列が表示されるように、スクロール等の操作を行う必要があり、操作の迅速性という観点で問題があった。
【００１０】
また、▲２▼の方式の場合は、ダイアログボックスのような別ウィンドウを利用するので、指定のための操作手順数が多くなり、操作が煩わしいという問題があった。また、複数の列に対して表示／非表示を指定する場合、ダイアログボックスの「ＯＫ」ボタンを操作するまで、指定通りに表が表示できるか確認できないという問題があった。
【００１１】
また、従来の表表示においては、スクロールは１列単位で、順次、行われるようになっていた。このため、例えば、画面上に表示されていない列をスクロールにより表示させようとした場合、表示させるまでに時間がかかり、また、どの程度、スクロールすればよいのかは、実際にスクロールさせてみないと知ることはできず不便であった。
【００１２】
本発明の目的は、表の列の表示／非表示を迅速に指定しながら、リアルタイムで確認でき、また、さらに、現画面に表示されていない列についても、表示／非表示を、容易に指定できるようにすることである。また、さらに、所望の列を即座に所定に位置に表示できるようなスクロールを実現することである。
【００１４】
【課題を解決するための手段】
本発明の請求項１に記載の表の表示制御装置は、各列が列名を有する複数列から構成される表を表データとして記憶する表データ記憶手段と、前記表データから前記表データの全ての列名を抽出して、この列名を記憶する列名抽出手段と、前記抽出された全ての列名を列名一覧として前記表データと並列的に同一画面上に表示する表示手段と、表示された前記列名一覧の中から、前記表データのスクロール列を指定するスクロール列指定手段と、前記表データのうち、指定された前記スクロール列の前記表データを画面上の所定の位置からスクロール制御して前記表示手段へ表示するスクロール制御手段と、スクロール表示の設定をされた前記表データの列が前記画面上に全て表示されるか否かを判別する判別手段と、前記判別手段による判別結果が識別可能な形態となるよう制御して前記列名一覧を前記表示手段へ表示する列名一覧制御手段と、を備えたことを特徴とする。この所定の列位置とは、例えば、表のスクロール領域の左端である。また、前記表示手段は、例えば、表示されている列と表示されていない列とが識別可能となるように列名一覧を表示させる。
【００１７】
本発明の請求項２に記載の表の表示制御装置は、各列が列名を有する複数列から構成される表を表データとして記憶する表データ記憶手段と、前記表データから前記表データの全ての列名と、列名毎に表示または非表示の状態を設定する設定情報とを抽出して記憶する列名抽出手段と、前記抽出された全ての列名を前記設定情報に基づいて各列毎に表示または非表示が識別可能な形態で列名一覧として前記表データと並列的に、且つ、この列名を横方向に前記表データと同一画面上に表示する表示手段と、表示された前記列名一覧の中から、１または複数の列名を選択して各列毎に表示または非表示の状態を指定する表示列指定手段と、前記表示列指定手段の指定に従って、前記列名一覧の各列毎に表示または非表示の状態を設定する前記列名抽出手段の設定情報を更新し、その設定情報に基づいて前記表データのうち、表示の状態を設定された列のデータを前記表示手段へ表示するように制御する列表示制御手段と、を備えたことを特徴とする。
【００１８】
前記表示手段は、例えば、前記設定情報に基づいて各列毎に表示または非表示が識別可能な形態で列名一覧として前記表データと並列的に同一画面上に表示させる。
【００２０】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施形態を説明する。
図１は、本発明の実施形態の表表示制御装置を備えた情報処理装置のシステム構成を示す図である。
【００２１】
同図において、表情報テーブル１０は、表データ記憶部１１、表の行数記憶部１３、及び表の列数記憶部１５から成る。
表データ記憶部１１は、階層構造を有する括り表（以下、単に表と記載する場合もある）のデータを記憶するメモリである。表の行数記憶部１３は、上記括り表の総行数を格納するメモリである。表の列数記憶部１５は、上記括り表の総列数を格納するメモリである。
【００２２】
表データ生成部２０は、該表情報テーブル１０に格納されている情報を基に、上記括り表を表示するために必要な表データ（列見出しデータ、項目行データ等）を生成し、これを表示メモリ３０内に書き込む。
【００２３】
表示メモリ３０は、列見出し部バッファ３１とデータ行部バッファ３２を有する。上記表データ生成部２０によって生成された列見出しデータと項目行データは、それぞれ、列見出し部バッファ３１及びデータ行部バッファ３２に書き込まれる。
【００２４】
表示属性テーブル４０は、上記括り表の各列の属性情報を記憶するメモリである。上記属性情報は、「列名」、「列幅」、「列表示フラグＷ」、「列表示フラグＳ」、「表示状態フラグ」及び「選択状態フラグ」である。
【００２５】
列名は、上記括り表の各列の名称である。列幅は、上記括り表の各列の幅である。列表示フラグＷは、後述する列名一覧コントロール上で選択された上記括り表の各列の表示／非表示指定を示すフラグである。列表示フラグＷが「表示指定」の列は表示され、「非表示指定」の列は非表示（表示抑制）となる。列表示フラグＳは、後述するジャンプスクロール操作後に、表示または非表示となる上記括り表の各列の表示／非表示状態を示すフラグである。列表示フラグＳが「表示」の列は表示され、「非表示」の列は非表示となる。
【００２６】
表示状態フラグは、上記括り表の各列が、現在、表示画面内（表示範囲内）または表示画面外（表示範囲外）にあるかを示すフラグある。ここで、表示範囲内にある列とは、表示装置９０の画面に完全に表示されている左端の列と右端の列、及びそれらの列の間に存在する列を示す。
【００２７】
選択状態フラグは、上記括り表の各列が、現在、選択中または未選択のいずれの状態であるかを示すフラグである。後述するように、本実施形態では列名一覧コントロール上でのマウのドラッグ操作により、表示または非表示とする複数の列を選択可能であり、その後、該複数の列のいずれかをダブルクリック（Ｗクリック）することにより、該複数の列を表示または非表示にすることができる。選択状態フラグは、上記選択操作中において各列が選択（選択中）または未選択の状態にあるかを記憶するフラグである。
【００２８】
上記括り表を構成する各列は、常時、表示される固定列（固定項目の列）とスクロール可能な列（データが表示されるスクロール列）に区分される。そして、スクロール列は、画面に表示されている表示列と、画面に表示されていない非表示列に区分される。このスクロール列の表示／非表示は、後述するように、列表示フラグＷと列表示フラグＳによって制御される。尚、表において、固定列から構成される領域を固定表示領域（もしくは固定項目表示領域）、スクロール列から構成される領域をスクロール領域と呼ぶことにする。
【００２９】
列幅情報テーブル５０は、上記括り表の各列について、画面上での「始点Ｘ座標」と「列幅（Ｘ座標の幅）」を格納するテーブルである。尚、Ｘ軸は、画面の水平方向に平行な軸である。
【００３０】
列名一覧データバッファ６０は、画面に表示される列名一覧コントロール上に一覧表示される列名の一覧データを格納するバッファである。
表示制御部７０は、列名一覧データバッファ６０を参照して、列名一覧コントロールを、表示装置８０の画面の下方に表示させる。また、表データ表示制御部７０は、表示メモリ３０をアクセスし、列見出しバッファ３１から上記括り表の列見出しデータを読みだすと共に、データ行バッファ３２から上記括り表の項目行データの該当表示データを読みだして、これらのデータを基に、表示装置８０の画面に括り表を表示させる。
【００３１】
表示制御部７０は、内部に、上記括り表のスクロール列の最終列の列番号（表の最終列番号）が設定されるレジスタ７１、上記括り表の「有効スクロール幅」が設定されるレジスタ７２、上記括り表のスクロール対象の最左列の列番号（スクロール開始列番号）が設定されるレジスタ７３、及びスクロール領域の左端に表示される列の列番号（現在スクロール領域左端列番号）が設定されるレジスタ７４を備える。
【００３２】
表示制御部７０は、後述するように、これらのレジスタ７１〜７４に設定されている基本情報等を基に、括り表の表示制御を行う。
尚、本実施形態においては、図１に示すように、「表の最終列番号」、「有効スクロール幅」、「スクロール開始列番号」、及び「スクロール開始列番号」に対して、それぞれ、「Ｃｍａｘ」、「Ｗｓｃｒｌ」、「Ｃｓｃｒｌ」、及び「ＧｒｉｄＣｓｃｒｌ」の変数名を割り当てる。
【００３３】
また、表示制御部７０は、図１においては特に図示していないが、表示用の作業メモリとして、後述する論理Ｖｉｅｗエリアを有している。論理Ｖｉｅｗエリアに描画された表示データの内容が表示装置９０に表示される。
【００３４】
表示装置８０は、ＣＲＴディスプレイ、ＬＣＤ、ＦＥＤ（Ｆｉｅｌｄ  Ｅｍｉｓｓｉｏｎ  Ｄｉｓｐｌａｙ），プラズマ・ディスプレイ等のディスプレイである。
【００３５】
入力装置９０は、括り表を生成するための入力や、該括り表へのデータ入力、、該括り表のスクロール領域の各列の表示／非表示の設定、該スクロール領域のジャンプスクロール操作等を行うための入力装置であり、例えば、キーボード、マウス等のポインティングデバイス等から成る。
【００３６】
マウス操作イベント処理部１００は、入力装置９０におけるマウスに対する各種操作（シングルクリック、ダブルクリック、マウスボタンダウン、ドラッグ、マウスボタンアップ等）のイベントの発生を、メッセージにより表示制御部７０に通知する。尚、特には、図示してはいないが、入力装置９０におけるキーボード操作のイベントを、表示制御部７０に通知するイベント処理部も設けられる。
【００３７】
外部記憶装置１１０は、表情報テーブル１０に展開される括り表のデータを記憶する記憶装置であり、ハードディスク装置や光ディスク装置等から成る。
図２は、上記表示属性テーブル４０のデータ構造を示す図である。
同図に示すように、表示属性テーブル４０は、「Ｃ１」、「Ｃ２」、「Ｃ３」、・・・「Ｃｎ」の列番号で表現された各列について、「列名」、「列幅」、「列表示フラグＷ」、「列表示フラグＳ」、「表表示状態フラグ」、及び「選択状態フラグ」の各情報を格納している。すなわち、例えば、列番号「Ｃ１」の列について、「ＸＸＸ」という列名、列幅「Ｗ１」、列表示状態フラグＷ“１”、列表示状態フラグＳ“１”、表示状態フラグ“１”、及び選択状態フラグ“０”を格納している。尚、本実施形態では、列番号は、“０”から始まる連番とする。すなわち、Ｃ１＝０，Ｃ２＝１，・・・Ｃｎ＝ｎ−１とする。
【００３８】
ところで、本実施形態では、「列名」、「列幅」、「列表示フラグＷ」、「列表示フラグＳ」、「表表示状態フラグ」、及び「選択状態フラグ」について、それぞれ、「Ｎａｍｅ」、「Ｗｉｄｔｈ」、「ＳｈｏｗＦｌｇＷ」、「ＳｈｏｗＦｌｇＳ」、「ＤｉｓｐＡｒｅａｆｌｇ」、「ＳｅｌｅｃｔＡｒｅａｆｌｇ」という変数名を割り当てる。そして、これらの変数は、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕（Ｃは列番号）という名称の構造体のメンバとなる。
【００３９】
ＳｈｏｗＦｌｇＷは“１”（Ｔｒｕｅ）のとき「表示指定」、“０”（Ｆａｌｓｅ）のとき「非表示指定（表示抑制指定）」を示す。ＳｈｏｗＦｌｇＳは“１”（Ｔｒｕｅ）のとき「表示中」、“０”（Ｆａｌｓｅ）のとき「非表示中」を示す。後述するように、ＳｈｏｗＦｌｇＷとＳｈｏｗＦｌｇＳは、それぞれ、ダブルクリックとシングルクリックの操作に関係するフラグである。
【００４０】
ＤｉｓｐＡｒｅａｆｌｇは“１”（Ｔｒｕｅ）のとき「表示範囲内」、“０”（Ｆａｌｓｅ）のとき「表示範囲外」を示す。また、ＳｅｌｅｃｔＡｒｅａｆｌｇは“１”（Ｔｒｕｅ）のとき「選択中」、“０”（Ｆａｌｓｅ）のとき「未選択」を示す。
【００４１】
図３は、上記列幅情報テーブル５０のデータ構造を示す図である。
同図に示すように、列幅情報テーブル５０は、「Ｃｉ」（ｉ＝１，２，３，・・・ｎ）の列番号で表現された各列について、表示装置９０の画面上での始点Ｘ座標「Ｘｉ」と表示列幅「Ｗｉ」を格納している。
【００４２】
図４は、上記列名一覧データバッファ６０のデータ構造を示す図である。
同図に示すように、列幅情報テーブル５０、「Ｃｉ」（ｉ＝１，２，３，・・・ｎ）の列番号で表現された各列について、表示装置９０に表示される列名一覧コントロールに一覧表示される列名（列見出し名）を格納している。尚、図３と図４を参照すれば明らかなように、「列見出し名」の表示幅は、「列幅」に等しい。
【００４３】
図５は、表示制御部７０による表の描画方法を説明する概念図である。
図５の上方に示された物理Ｖｉｅｗエリア２１０は、表の全表示データを格納するメモリであり、表示メモリ３０に対応している。したがって、物理Ｖｉｅｗエリア２１０には、表の全列・全行の表示データが描画される。この描画は、表データ生成部２０によって行われる。物理Ｖｉｅｗエリア２１０は、固定項目描画領域２１１とスクロール項目描画領域２１３とから構成される。固定項目描画領域２１１には全ての固定項目（固定列）の表示データが描画され、スクロール項目描画領域２１３には全てのスクロール項目（スクロール列）の表示データが描画される。
【００４４】
一方、論理Ｖｉｅｗエリア２２０は、表示装置９０に実際に表示される表の表示データを格納するメモリであり、物理Ｖｉｅｗエリア２１０と同様に固定項目描画領域２２１とスクロール項目描画領域２２３とから構成される。固定項目描画領域２２１とスクロール項目描画領域２２３には、それぞれ、表示装置９０に表示される表の固定領域の表示データとスクロール領域の表示データが格納される。表示制御部７０は、物理Ｖｉｅｗエリア２１０から表示すべき表の表示データを読み出し、これを論理Ｖｉｅｗエリア２２０に描画する。表示装置９０は、論理Ｖｉｅｗエリア２２０に描画されている表示データを読み出し、その表示データを基に画面に表を表示させる。
【００４５】
論理Ｖｉｅｗエリア２２０の固定項目描画領域２２１に描画される列は（固定列であるため）固定であるが、スクロール項目描画領域２２３に描画されるスクロール列は可変である。これは、後述するように、列名一覧コントロール上でのジャンプスクロール操作や、単一または複数のスクロール列の表示／非表示指定操作に応じて、スクロール項目描画領域２２３に描画されるスクロール列が変化するからである。
【００４６】
論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に描画されるスクロール列の幅の総和はＷｓｃｒｌである。したがって、論理Ｖｉｅｗエリア２２０に描画される物理Ｖｉｅｗエリア２１０のスクロール項目描画領域２１３内のスクロール列の列幅の総和もＷｓｃｒｌである。また、論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３の左端に描画される物理Ｖｉｅｗエリア２１０のスクロール項目描画領域２２３の列の列番号はＧｒｉｄＣｓｃｒｌに設定される。図５は、列番号がＧｒｉｄＣｓｃｒｌの列の左端から列方向に少なくともＷｓｃｒｌの範囲内にあるスクロール列の全てが表示指定である場合の、物理Ｖｉｅｗエリア２１０から論理Ｖｉｅｗエリア２２０への描画を示している。
【００４７】
また、本実施形態においては、表の総行数を（Ｌｍａｘ＋１）とし、表の各行に対し、先頭行から“０”で始まる整数の連番を割り付ける。また、各行のピッチ（セル幅に等しい）をＬｐｉｔｃｈとする。
【００４８】
論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に描画されるスクロール列は、後述するように、表示属性テーブル４０の列表示状態フラグ（ＳｈｏｗＦｌｇＷ）によって決定される。このため、固定項目描画領域２１１に描画されている固定列の表示データは、常に、論理Ｖｉｅｗエリア２２０に描画されるが、スクロール項目描画領域２１３に描画されているスクロール列の表示データは、スクロール操作以外にも、その列のＳｈｏｗＦｌｇＷの値によって、描画されるか否かが決定される。したがって、図５に示すように、スクロール項目描画領域２１３内の連続するスクロール列の表示データが論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に描画されるとは、必ずしも限らない。
【００４９】
また、表示装置９０の画面に表の全ての行を表示することは不可能であるため、物理Ｖｉｅｗエリア２１０内の表示行は、縦スクロールに応じて変化する。図５においては、固定項目描画領域２１１とスクロール項目描画領域２１３の表示領域（論理Ｖｉｅｗエリア２２０に描画される領域）を、それぞれ、網かけ模様の矩形（表示領域２１１Ｄ）と右斜線でハッチングされた矩形（表示領域２１３Ｄ）で示している。
【００５０】
固定項目描画領域２１１内の表示領域２１１Ｄに含まれる行とスクロール項目描画領域２１３内の表示領域２１３Ｄに含まれる行は、横スクロール操作によって変化するので、論理Ｖｉｅｗエリア２２０の内容も、それに応じて変化することになる。また、本実施形態においては、後述する列名一覧コントロール上での操作によって、非表示指定となる列（表示抑制される列）が指定されるので、スクロール項目描画領域２１３内の表示領域２１３Ｄの構成が変化する。このため、スクロール項目描画領域２１３の表示領域２１３Ｄは、必ずしも、１つの矩形となるとは限らず、複数の離散した矩形（複数の離散したスクロール列）で構成される場合もある。
【００５１】
次に、図１の情報処理装置の全体動作を、図６のフローチャートを参照しながら、説明する。
まず、外部記憶装置１１０から括り表に関するデータを読みだして、表情報テーブル１０を生成する（ステップＳ１）。
【００５２】
これにより、表データ記憶部１１に表データが、表の行数記憶部１３に表の総行数が、表の列数記憶部１５に表の総列数が、それぞれ、格納される。
次に、表データ生成部２０が、上記表情報テーブル１０を参照して表データを生成し、表の列見出し部データと表のデータ部データを、それぞれ、列見出し部バッファ３１とデータ行部バッファ３２に格納する（ステップＳ２）。
【００５３】
続いて、表示制御部７０が、表示属性テーブル４０と列幅情報テーブル５０を参照して、表示メモリ３０から表示すべき表データ（列見出し部データとデータ部データ）を読み出して、該表示データを表示装置９０に書き出す（ステップＳ３）。
【００５４】
これにより、表示装置９０に表の初期画面が表示がなされる。
次に、表示制御部７０が、表示属性テーブル４０と列名一覧データバッファ６０を参照して、列名一覧データを列名一覧データバッファ６０内に生成し（ステップＳ４）、該列名一覧データを表示装置９０に書き出す（ステップＳ５）。
【００５５】
これにより、表示装置９０の画面に列名一覧データ（列名一覧コントロール）が表示される。
以上の処理により、表示装置９０には、図２８に示すような初期画面３００が表示される。この初期画面３００においては、画面の左下に列名一覧コントロール３０１が表示される。列名一覧コントロール３０１には、表示装置９０に表示されている表（商品売り上げ実績表）の列名の一覧が表示されると共に、表示列の列名と非表示列（完全に表示されていない列及び全く表示されていない列）の列名が、それぞれ、異なる表示形態で表示される。
【００５６】
本実施形態においては、表示列の列名（「商品コード」〜「在庫数」）は、白を背景として黒で表示される。また、非表示の列名（「在庫月数」〜「０１月」）は、グレーを背景として黒で表示される。また、さらに、表示列の列名の枠は実線で、非表示列の列名の枠は破線（点線）で表示される。
【００５７】
次に、マウス操作イベント処理部１００が、列名一覧コントロールに対するマウス操作のイベントが発生したか判別し（ステップＳ６）、発生していなければ（ステップＳ６、ＮＯ），このステップＳ６の処理を繰り返す。
【００５８】
図７に示すように、本実施形態においては、該マウス操作の種類として、「マウスボタンダウン」（同図（ｂ）参照）、「マウスドラッグ＆マスタボタンアップ」（同図（ｃ）参照）、及び「ダブルクリック（Ｗクリック）」（同図（ｄ）参照）がある。
【００５９】
本実施形態においては、これらのマウス操作により、複数の列を、“表示”かた“非表示”（表示抑制）に、または、“非表示”から“表示”にする選択操作が可能である。ここで、列名一覧コントロールにおける該選択操作の方法を、図７を参照しながら説明する。
【００６０】
同図（ａ）は、列名一覧コントロール３０１の初期表示を示している（図２８参照）。この状態のとき、「粗率」の列から「在庫月数」までの列を“非表示”にする場合には、まず、図７（ｂ）に示すように、列名一覧コントロール３０１の「粗率」の表示部分にマウスカーソル３０３を重ね、マウスボタンをダウンする。
【００６１】
次に、同図（ｃ）に示すように、マウスボタンを押したまま（マウスボタンをダウンしたまま）、マウスカーソル３０３を「在庫月数」の表示部分まで移動した後（ドラッグ操作した後）、マウスボタンを離す（マウスボタンをアップする）。ここまでのマウス操作により、「粗率」の列から「在庫月数」の列までが選択される（このとき、本実施形態では、それらの列名の背景色が青になる）。
【００６２】
続いて、同図（ｄ）に示すように、マウスカーソルを、背景色が青となっている選択範囲内の「在庫数」の表示部分に重ね、ダブルクリックする。
以上のマウス操作により、「粗率」、「在庫数」、及び「在庫月数」の列が「非表示」に指定され、それらのＳｈｏｗＦｌｇＷが、“表示指定”（Ｔｒｕｅ）から“非表示指定”（Ｆａｌｓｅ）に変化する。
【００６３】
この結果、「粗率」及び「在庫数」の列が画面から消え、「仕入れ数」の後に続いて、「当月」以降の列が表示される（「在庫月数」の列は表示されない）。この表の表示の変化に伴い、列名一覧コントロール３０１の表示も変化する。すなわち、非表示指定となった「粗率」、「在庫数」、及び「在庫月数」の列名が、グレーを背景として、太字の白で表示される。また、「粗率」及び「在庫数」の枠も、実線から破線に変化する（「在庫月数」の枠は破線のまま）。
【００６４】
このように、「粗率」、「在庫数」、及び「在庫月数」の列が非表示となった結果、「当月」以降の列が、「粗利」の列に続いて表示されるように、画面の左方向に移動して表示され、新たに、「当月」及び「０３月」までの列が完全に表示されるようになる。この結果、列名一覧コントロール３０１の表示において、「当月」及び「０３月」の列名が、白を背景として黒で表示される。また、これらの列名の枠も破線から実線に変化する。
【００６５】
上述したように、本実施形態においては、列名一覧コントロール３０１に対するマウス操作により、現在、表示されていない列のＳｈｏｗＦｌｇＷの設定を変更することも可能である。また、複数の列のみならず、単一の列の表示／非表示指定も可能である。図８は、そのような単一列の非表示指定の一例を示す図である。
【００６６】
同図は、「０３月」の列のみを“表示指定”から“非表示指定”に変更した場合の表示状態を示している。この場合には、列名一覧コントロール３０１の「０３月」の列名表示部分にマウスカーソルを重ねて、その表示をダブルクリックすればよい。この結果、以後の操作において、左方向に横スクロールを行った場合、「０３月」の列は表示されず、「当月」の列の後には、「０２月」の列が表示される。このように、単一列の表示／非表示指定は、列名一覧コントロール３０１上で列名をダブルクリックするだけのワンタッチ操作で可能である。
【００６７】
再び、図６のフローチャートの説明に戻る。
ステップＳ６で、マウス操作イベントが発生したと判別すると（ステップＳ６、Ｎ０）、ジャンプスクロール操作のイベントであるか判別する（ステップＳ７）。
【００６８】
本実施形態においては、列名一覧コントロール３０１上のマウスカーソルが重なった「列名」をシングルクリックする操作が、該ジャンプスクロール操作に該当する。このジャンプスクロール操作を行うと、シングルクリックされた列名の列が、表の先頭のスクロール項目（最左端に表示される列）となるように、表全体が横スクロールされる。
【００６９】
ステップＳ７において、ジャンプスクロール操作が行われたと判別すると（ステップＳ７，ＹＥＳ）、ジャンプスクロール処理を実行し（ステップＳ８）、その後、ステップＳ６に戻る。
【００７０】
一方、ステップＳ７において、ジャンプスクロール操作ではないと判別すると（ステップＳ７、ＮＯ）、上述した図７の「列の表示／非表示」を指定する操作であるか判別する（ステップＳ９）。そして、列の表示／非表示の指定操作であれば（ステップＳ９、ＹＥＳ）、列の表示／非表示処理を実行し（ステップＳ１０）、その後、ステップＳ６に戻る。
【００７１】
また、ステップＳ９で、列の表示／非表示の指定操作でないと判別すると（ステップＳ９、ＮＯ）、何もせず、ステップＳ６に戻る。
このようにして、システムが起動している間、ステップＳ６〜ステップＳ１０のメッセージループ処理を実行する。
【００７２】
図９は、ステップＳ８のジャンプスクロール処理を説明するフローチャートである。
列名一覧コントロール３０１上で、シングルクリック（Ｓクリック）を行うと、マウス操作イベント処理部１００は、発生イベントがシングルクリック操作であることを示す情報とシングルクリックされた列名の列の列番号が設定されたメッセージを、表示制御部７０に通知する。
【００７３】
表示制御部７０は、このメッセージを受信すると、図９のフローチャートの処理を実行する。
すなわち、表示制御部７０は、まず、上記メッセージに設定された列番号を変数Ｃｓｎｏ及びＧｒｉｄＣｓｃｒｌに設定する（ステップＳ１１）。次に、変数ＣにＣｓｃｒｌの値を設定する（ステップＳ１２）。これにより、ＣｓｎｏにＳクリックされたスクロール列の列番号が設定される。また、ＧｒｉｄＣｓｃｒｌに表のスクロール領域の左端に表示すべきスクロール列の列番号が設定され、Ｃにスクロール開始列の列番号が設定される。
【００７４】
次に、Ｃ＜Ｃｓｎｏであるか判断する（ステップＳ１３）。そして、Ｃ＜Ｃｓｎｏが“Ｔｒｕｅ”であれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＳを“Ｆａｌｓｅ”に設定する（ステップＳ１４）。一方、“Ｆａｌｓｅ”であれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＳを“Ｔｒｕｅ”に設定する（ステップＳ１５）。
【００７５】
ステップＳ１４またはＳ１５の処理の後、変数Ｃの値を“１”インクリメントし（ステップＳ１７）、Ｃ＞Ｃｍａｘであるか判断する（ステップＳ１７）。
そして、Ｃ＞Ｃｍａｘが“Ｆａｌｓｅ”であれば、ステップＳ１３に戻る。
【００７６】
このようにして、列番号がＣｓｎｏより小さい列ＣｉのＣｏｌｍＳｔＴｂｌ〔Ｃｉ〕．ＳｈｏｗＦｌｇＳは“Ｆａｌｓｅ”に、列番号がＣｓｎｏ以上の列ＣｊのＣｏｌｍＳｔＴｂｌ〔Ｃｊ〕．ＳｈｏｗＦｌｇＳは“Ｔｒｕｅ”に設定される。
【００７７】
そして、以上のようにして、各スクロール列のＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＳの設定が終了すると、変数Ｃｓｎｏを引数として、表示対象の表オブジェクトに対して、後述するＳクリック用列表示切替メソッドを呼び出す（ステップＳ１８）。
【００７８】
このＳクリック用列表示切替メソッドの実行により、物理Ｖｉｅｗエリア２１０のスクロール項目描画領域１１３の表示データの論理Ｖｉｅｗエリア２２０への再描画が行われる。そして、図５に示すように、表示装置９０の画面に、上記列名一覧コントロール３０１上で列名がＳクリックされた列が、スクロール領域の先頭に表示されるようにジャンプスクロールされた表が表示される。
【００７９】
ステップＳ１８に続いて、後述する列の表示領域判定ルーチンを呼び出して、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＤｉｓｐｌｙＡｒｅａＦｌｇの値を設定し（ステップＳ１９）、次に、列名一覧コントロール表示ルーチンを呼び出す（ステップＳ２０）。この列名一覧コントロール表示ルーチンの呼び出しにより、列名一覧コントロール３０１が、ステップＳ２２で表示される表の表示形態に対応する形式で表示される。この列名一覧コントロール表示ルーチンの詳細についても、後述する。
【００８０】
図１０は、ステップＳ１０の列の表示／非表示処理の全体フローを示す図である。
このフローにおいて、まず、マウスボタンダウン処理を行う（ステップＳ３１）。このマウスボタンダウン処理においては、図７（ｂ）に示すように、列名一覧コントロール３０１において、マウスボタンダウン操作がなされた列名の背景色を変化させる。このマウスボタンダウン処理ルーチンの詳細は、後述する。
【００８１】
次に、マウスボタンダウン＆マウスムーブ処理を行う（ステップＳ３２）。このマウスボタンダウン＆マウスムーブ処理においては、図７（ｃ）に示すように、列名一覧コントロール３０１において、マウスドラッグ操作に応じて選択される列名の背景色を変化させる。このマウスボタンダウン＆マウスムーブ処理ルーチンの詳細についても、後述する。
【００８２】
続いて、マウスボタンアップ処理を行う（ステップＳ３３）。このマウスボタンアップ処理においては、図７（ｃ）に示すように、列名一覧コントロール３０１において、マウスボタンダウン操作とマウスボタンアップ操作とにより指定された選択範囲内の列名の表示形態を変化させると共に、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．Ｆｌａｇを“Ｔｒｕｅ”（複数列が選択された場合）または“Ｆａｌｓｅ”（単一の列が選択された場合）に設定する。このマウスボタンアップ処理ルーチンの詳細についても、後述する。
【００８３】
そして、最後に、マウスダブルクリック（マウスＷクリック）処理を行う（ステップＳ３４）。このマウスＷクリック処理においては、図７（ｄ）に示すように、列名一覧コントロール３０１上でのダブルクリックによって確定された列のＳｈｏｗＦｌｇＷを変更する。そして、この変更に応じて、列名一覧コントロール３０１の表示形態及び表のスクロール領域の表示内容を変化させる。このマウスボタンＷクリック処理の詳細についても、後述する。
【００８４】
図１１（ａ）は、表示制御部７０が行う表示属性テーブル４０（ＣｏｌｍＳｔＴｂｌ〔Ｃ〕）全体の初期化処理の詳細を示すフローチャートである。この図１１（ａ）のフローチャートの処理は、図６のフローチャートのステップＳ４において行われる。
【００８５】
まず、表情報テーブル１０の表データ記憶部１１から表示対象とする表オブジェクトを読みだして、Ｗｓｃｒｌに有効スクロール幅を、Ｃｓｃｒｌにスクロール対象開始列番号（スクロール対象の最左端の列の列番号）を、Ｃｍａｘに表オブジェクトの最終列番号を、ＧｒｉｄＣｓｃｒｌに現在のスクロール領域の左端の列の番号（この段階では、ＧｒｉｄＣｓｃｒｌ＝Ｃｓｃｒｌである）を設定する（ステップＳ４１）。
【００８６】
次に、変数Ｃを“０”に初期設定し（ステップＳ４２）、続いて、Ｃｓｃｒｌが“０”であるか判別する（ステップＳ４３）。Ｃｓｃｒｌが“０”となる表オブジェクトは、固定列の無い表のオブジェクトである。
【００８７】
続いて、Ｃｓｃｒｌ＝０が“Ｆａｌｓｅ”であれば、各固定列の表示属性を、表オブジェクトから各固定列の表示属性テーブルＣｏｌｍＳｔＴｂｌ〔ｉ〕（ｉは列番号）にセットする（ステップＳ４４）。
【００８８】
本実施形態では、表示属性テーブル４０は、各列の表示属性テーブルＣｏｌｍＳｔＴｂｌ〔ｉ〕から構成されるものとする。この表示属性テーブルＣｏｌｍＳｔＴｂｌ〔ｉ〕は、図１１（ｂ）に模式的に示すような構造体として定義される。この構造体は、メンバとして、Ｎａｍｅ，Ｗｉｄｔｈ，ＳｈｏｗＦｌｇＷ，ＳｈｏｗＦｌｇＳ，ＤｉｓｐＡｒｅａＦｌｇ，及びＳｅｌｅｃｔＡｒｅａＦｌｇを有する。メンバＮａｍｅ，Ｗｉｄｔｈ，ＳｈｏｗＦｌｇＷ，ＳｈｏｗＦｌｇＳ，ＤｉｓｐＡｒｅａＦｌｇ，及びＳｅｌｅｃｔＡｒｅａＦｌｇには、それぞれ、列名、列幅、列表示フラグＷ、列表示フラグＳ、表示状態フラグ、及び選択状態フラグが設定される（図２参照）。
【００８９】
よって、ステップＳ４４において、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．Ｎａｍｅ、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．Ｗｉｄｔｈ、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷ、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＳ、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＤｉｓｐＡｒｅａＦｌｇ、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇに、それぞれ、列番号Ｃの列名、列幅、列表示フラグＷ値（＝Ｔｒｕｅ）、列表示フラグＳ値（＝Ｔｒｕｅ），表示状態フラグ値（＝Ｔｒｕｅ）、選択状態フラグ値（＝Ｆａｌｓｅ）が設定される。
【００９０】
次に、Ｃの値を“１”インクリメントし（ステップＳ４５）、続いて、Ｃ≧Ｃｓｃｒｌであるか判断する（ステップＳ４６）。Ｃ≧Ｃｓｃｒｌが“Ｆａｌｓｅ”（偽）であれば、ステップＳ４３に戻る。
【００９１】
このようにして、Ｃ≧Ｃｓｃｒｌが“Ｔｒｕｅ”（真）となるまで、ステップＳ４３〜Ｓ４６の処理を繰り返し、表示属性テーブル４０の固定列の属性情報を設定する。
【００９２】
そして、ステップＳ４６で、Ｃ≧Ｃｓｃｒｌが“Ｔｒｕｅ”、すなわち、Ｃ＝Ｃｓｃｒｌであると判断すると、スクロール列の表示属性を、表オブジェクトから該スクロール列の表示属性テーブルＣｏｌｍＳｔＴｂｌ〔Ｃ〕に設定する（ステップＳ４７）。
【００９３】
このステップＳ４７の処理は、変数Ｃの値がスクロール列の列番号を示す以外は、上述したステップＳ４３の処理と同様である。
ステップＳ４７に続いて、変数Ｃの値を“１”インクリメントし（ステップＳ４８）、次に、Ｃ＞Ｃｍａｘであるか判断する（ステップＳ４９）。そして、Ｃ＞Ｃｍａｘが“Ｆａｌｓｅ”である間、ステップＳ４７〜Ｓ４９の処理を繰り返し、表示属性テーブル４０の全てのスクロール列（列番号がＣｓｃｒｌ〜Ｃｍａｘの列）の属性情報を設定する。
【００９４】
そして、Ｃ＞Ｃｍａｘが“Ｔｒｕｅ”であると判断すると（ステップＳ４９，ＹＥＳ）、列の表示領域判定ルーチンを呼び出し、表示属性テーブル４０のＤｉｓｐｌｙＡｒｅａＦｌｇの値を設定し（ステップＳ５０）、呼び出し元に戻る。該列の表示領域判定ルーチンの詳細は後述する。
【００９５】
次に、図９のフローチャートのステップＳ２２の「Ｓクリック用列表示切替メソッド」の詳細を、図１２及び図１３のフローチャートを参照しながら説明する。
【００９６】
まず、変数Ｃ（列番号カウウンタ）及び変数Ｃｐｎｏを、共に、“０”に設定する（ステップＳ５１）。
次に、変数ＣとＣｓｃｒｌの値を比較する（ステップＳ５２）。そして、Ｃ＜Ｃｓｃｒｌであれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを判断し（ステップＳ５３）、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”であれば、Ｃｐｎｏの値をＣｏｌｍＳｔＴｂｌ〔Ｃ〕．Ｗｉｄｔｈの値だけ増加する（ステップＳ５４）。そして、Ｃの値を“１”インクリメントし（ステップＳ５５）、ステップＳ５２に戻る。
【００９７】
このようにして、論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３の右端の座標を変数Ｃｐｎｏに設定する。
そして、ステップＳ５２で、Ｃ≧Ｃｓｃｒｌ（この場合、Ｃ＝Ｃｓｃｒｌ）であると判別すると、行番号カウンタとなる変数Ｌと、描画用行座標が設定される変数Ｌｐを、共に、“０”に初期設定する（ステップＳ５６）。次に、変数Ｃに引数Ｃｓｎｏの値を設定すると共に、変数ＣｐにＣｐｎｏの値を設定する（ステップＳ５７）。
【００９８】
これにより、変数Ｃｐに、これから描画すべきセルの論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３上の描画位置の左座標、つまり、シングルクリックされた列のセルの論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３内の描画位置の左座標が設定される。
【００９９】
続いて、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを判断し（ステップＳ５８）、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”であれば、「１セル描画」ルーチンを呼び出して、ＤａｔａＴｂｌ〔Ｃ，Ｌ〕の表示データを、論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に描画する（ステップＳ５９）。
【０１００】
ここで、表は複数のセルから構成されるが、該各セルの表示データは、表示メモリ３０（物理Ｖｉｅｗエリア２１０）内に、ＤａｔａＴｂｌ〔ｉ、ｊ〕（ｉは行番号、ｊは列番号）という配列データとして格納されている。
【０１０１】
図１４は、ステップＳ５９における列番号Ｃ，行番号Ｌのセルの表示データＤａｔａＴｂｌ〔Ｃ、Ｌ〕を、論理Ｖｉｅｗエリア２２０に描画する方法を模式的に示した図である。
【０１０２】
同図に示すように、表データテーブルの各配列データＤａｔａＴｂｌ〔Ｃ、Ｌ〕の論理Ｖｉｅｗエリア２２０上の描画領域は、セル左座標（セルの左枠の列座標を示す描画用列座標）Ｃｐとセル上座標（セルの上枠の行座標を示す描画用行座標）Ｌｐ、セル幅ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．Ｗｉｄｔｈ、及びセル高さＬｐｉｔｃｈによって決定される。
【０１０３】
１セル描画ルーチンは、引数として、Ｃｐ、Ｌｐ、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．Ｗｉｄｔｈ、Ｌｐｉｔｃｈ、及びＤａｔａＴｂｌ〔Ｃ、Ｌ〕を受け取り、図１４に示すようにして、ＤａｔａＴｂｌ〔Ｃ、Ｌ〕を、論理Ｖｉｅｗエリア２２０の当該領域に描画する。
【０１０４】
ステップＳ５９に続いて、Ｃｐの値を、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．Ｗｉｄｔｈの値だけ増加する（ステップＳ６０）。そして、Ｃの値を“１”インクリメントし（ステップＳ６１）、次に、ＣとＣｍａｘの値を比較し（ステップＳ６２）、Ｃ≦Ｃｍａｘであれば、ステップＳ５８に戻る。
【０１０５】
また、ステップＳ５８で“Ｆａｌｓｅ”であれば、ＤａｔａＴｂｌ〔Ｃ、Ｌ〕の描画は行わず、ステップＳ６１に進む。
ステップＳ６２で、Ｃ＞Ｃｍａｘと判別すれば、Ｌｐの値をＬｐｉｔｃｈだけ増加し（ステップＳ６３）、続いて、Ｌの値（行番号）を“１”インクリメントする（ステップＳ６４）。そして、ＬとＬｍａｘ（最終行番号）とを比較し（ステップＳ６５）、Ｌ≦Ｌｍａｘであれば、ステップＳ５７に戻る。一方、ステップＳ６５でＬ＞Ｌｍａｘと判別すれば、呼び出し元に戻る。
【０１０６】
このようにして、ステップＳ５８〜Ｓ６２のループ処理により、シングルクリックされた列（列番号Ｃｎｏの列）以降の列の論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に対する描画が、１行単位で行われる。この描画は、第０行（行番号が“０”の行）から、行番号順に行われる。
【０１０７】
また、ステップＳ５７〜Ｓ６５のループ処理により、シングルクリックされた列（列番号Ｃｎｏの列）以降の列の論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に対する描画が、全ての行に対して行われる。これにより、シングルクリックによるジャンプスクロール操作が行われた場合、シングルクリックされた列がスクロール領域の左端に表示され、その左端から有効スクロール幅Ｗｓｃｒｌの範囲内に、該シングルクリックされた列に後続する列（但し、ＣｏｌｍＣｔｒｌ．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”に設定されている列）が、連続して表示される。これは、ステップＳ５８の判別により、論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３には、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”となっている列のセルのみが描画されるからである。
【０１０８】
尚、列表示切替メソッドが使用する基本情報（Ｃｍａｘ、Ｌｍａｘ、Ｌｐｉｔｃｈ）は、表情報テーブル１０に、予め、格納されており、表示制御部７０は、表情報テーブル１０から、これらの基本情報を読みだして、Ｓクリック用列表示切替メソッドを実行する。
【０１０９】
このようにして、Ｓクリック用列表示切替メソッドにより、図５に示す論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に、シングルクリックされた列以降の表示指定となている列の表示データが描画される。そして、表示装置９０に、例えば、図２９に示すような画面４００が表示される。
【０１１０】
画面４００は、図２８に示す初期表示画面３００において、列名一覧コントロール３０１上で「在庫月数」をシングルクリックした場合に表示される画面である。このシングルクリック操作により、画面４００に示されているように、「在庫月数」の列が表のスクロール領域の左端に表示されるようなスクロール表示制御が行われる。このように、本実施形態では、列名一覧コントロール３０１上で、あるスクロール列の列名をシングルクリックすることにより、そのスクロール列が表のスクロール領域の左端に表示されるように制御する。
【０１１１】
したがって、ユーザは、列名一覧コントロール３０１上で列名をシングルクリックするだけの簡単な操作で、それまで、画面に表示されていなかった列を即座に表示させたり、表の所望する列や列群を、自分が見やすい位置に表示させたりすることができる。
【０１１２】
また、本実施形態においては、表の画面表示の変化に応じて、列名一覧コントロール３０１上のスクロール列の列名に係わる表示形態も変化させる。例えば、初期画面３００から画面４００に変化した場合には、列名一覧コントロール３０１において、「売上金」〜「在庫数」までの列名の上下の枠線が“実線”から“破線”に変化し、逆に、「在庫月数」〜「０１月」までの列名の上下の枠線が“破線”から“実線”に変化する。このことにより、ユーザは、画面に表示されている左端の列よりも左方の列が存在するか否かを、列名一覧コントロール３０１の表示により、容易に認識できる。これらの表示制御は、以下に述べる処理によって実行される。
【０１１３】
図１５は、図９のステップＳ１９の「列の表示領域判定」ルーチンの詳細を説明するフローチャートである。
まず、表の基本情報であるＷｓｃｒｌ，Ｃｓｃｒｌ、Ｃｍａｘ、ＧｒｉｄＣｓｃｒｌを、レジスタ７１〜７４から読みだす（ステップＳ７１）。
【０１１４】
次に、変数ＣにＣｓｃｒｌの値を代入し、変数Ｃｓｕｍを“０”に初期設定する（ステップＳ７２）。これにより、変数Ｃにスクロール開始列の列番号が設定される。変数Ｃｓｕｍは、スクロール領域の列幅の累計を求める変数である。
【０１１５】
続いて、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＳを判断する（ステップＳ７３）。そして、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＳが“Ｆａｌｓｅ”であればステップＳ７８に進むが、“Ｔｒｕｅ”であれば、次に、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを判断する（ステップＳ７４）。
【０１１６】
ステップＳ７４で、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”であると判断すると、ＣｓｕｍとＣｏｌｍＳｔＴｂｌ〔Ｃ〕．Ｗｉｄｔｈの加算結果を、Ｃｓｕｍに代入する（ステップＳ７５）。
【０１１７】
次に、Ｃｓｕｍ≦Ｗｓｃｒｌであるか判断し（ステップＳ７６）、Ｃｓｕｍ≦Ｗｓｃｒｌが“Ｔｒｕｅ”であれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＤｉｓｐＡｒｅａＦｌｇに“Ｔｒｕｅ”を設定し（ステップＳ７７）、Ｃｓｕｍ≦Ｗｓｃｒｌが“Ｆａｌｓｅ”であれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＤｉｓｐＡｒｅａＦｌｇに“Ｆａｌｓｅ”を設定する（ステップＳ７８）。
【０１１８】
続いて、変数Ｃの値を“１”インクリメントし（ステップＳ７９）、次に、Ｃ＞Ｃｍａｘであるか判断する（ステップＳ８０）。そして、Ｃ＞Ｃｍａｘが“Ｆａｌｓｅ”であれば、ステップＳ７３に戻る。
【０１１９】
以上のようにして、ＳｈｏｗＦｌｇＳとＳｈｏｗＦｌｇＷが、共に、“Ｔｒｕｅ”となっているスクロール領域の列について、スクロール対象の開始列から順に、その列幅Ｗｉｄｔｈを累算していく。そして、その累積値Ｃｓｕｍが有効スクロール幅Ｗｓｃｒｌを越えないか否かを判断基準として、表示範囲内にあるスクロール列を決定する。そして、表示範囲内にあるスクロール列については、その表示状態フラグＤｉｓｐＡｒｅａＦｌｇを“Ｔｒｕｅ”に設定し、表示範囲外にあるスクロール列については、その表示状態フラグＤｉｓｐＡｒｅａＦｌｇを“Ｆａｌｓｅ”に設定する。
【０１２０】
ステップＳ８９で、Ｃ＞Ｃｍａｘが“Ｔｒｕｅ”であれば、スクロール領域の全ての列について、ＤｉｓｐＡｒｅａＦｌｇを設定する処理が終了したので、呼び出し元に戻る。
【０１２１】
この結果、スクロール列の中で、ＳｈｏｗＦｌｇＳとＳｈｏｗＦｌｇＷが、共に、“Ｔｒｕｅ”であるスクロール列のみが，ＤｉｓｐＡｒｅａＦｌｇが“Ｔｒｕｅ”に設定される。
【０１２２】
図１６は、図９のフローチャートのステップＳ２０の列名一覧コントロール表示ルーチンの詳細を示すフローチャートである。
この処理において、まず、変数Ｃを“０”に初期設定する（ステップＳ９１）。次に、列名一覧コントロール３０１の左端の枠線を実線で描画する（ステップＳ９２）。
【０１２３】
続いて、引数をＣとして、列名一覧コントロール列単位表示ルーチンを呼び出し、列番号が引数Ｃの値に等しい列の列名を列名一覧コントロール３０１に描画する（ステップＳ９３）。続いて、Ｃの値を“１”インクリメントし（ステップＳ９４）、Ｃ＞Ｃｍａｘであるか判断する（ステップＳ９５）。そして、Ｃ＞Ｃｍａｘが“Ｆａｌｓｅ”であれば、ステップＳ９３に戻る。
【０１２４】
以上のようにして、列名一覧コントロール３０１の描画を行い、ステップＳ９５で、Ｃ＞Ｃｍａｘが“Ｔｒｕｅ”、すなわち、列名一覧コントロール３０１の描画が最終の列名まで終了したと判断すると、ＣｏｌｍＳｔＴｂｌ〔Ｃｍａｘ〕．ＤｉｓｐＡｒｅａＦｌｇを判断し（ステップＳ９６）、ＣｏｌｍＳｔＴｂｌ〔Ｃｍａｘ〕．ＤｉｓｐＡｒｅａＦｌｇか“Ｔｒｕｅ”であれば、列名一覧コントロール３０１の右端の枠線を実線で描画する（ステップＳ９７）。一方、“Ｆａｌｓｅであれば、列名一覧コントロール３０１の右端の枠線を点線（破線）で描画する（ステップＳ９８）。そして、ステップＳ９７またはＳ９８の処理終了後、呼び出し元に戻る。
【０１２５】
図１７は、ステップＳ９３の列名一覧コントロール単位表示ルーチンの詳細フローチャートである。
同図のフローチャートにおいて、ステップＳ１０１〜Ｓ１０９は表示範囲内の列に関する処理であり、ステップＳ１１０〜Ｓ１１７は表示範囲外の列に関する処理である。
【０１２６】
まず、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＤｉｓｐＡｒｅａＦｌｇを判断し（ステップＳ１０１）、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＤｉｓｐＡｒｅａＦｌｇが“Ｔｒｕｅ”であれば、列番号Ｃの列名の上下の枠線を実線で描画する（ステップＳ１０２）。次に、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを判断し（ステップＳ１０３）、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”であれば、続いて、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇを判断する（ステップＳ１０４）。
【０１２７】
そして、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇが“Ｔｒｕｅ”であれば、列番号Ｃの列名を背景色を青として黒で描画する（ステップＳ１０５）。一方、“Ｆａｌｓｅ”であれば、列番号Ｃの列名を背景色を白として黒で描画する（ステップＳ１０６）。
【０１２８】
また、ステップＳ１０３で“Ｆａｌｓｅ”であれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇを判断し（ステップＳ１０７）、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇが“Ｔｒｕｅ”であれば、列番号Ｃの列名を背景色を青として白の太字で描画する（ステップＳ１０８）。一方、“Ｆａｌｓｅ”であれば、列番号Ｃの列名を背景色をグレーとして白の太字で描画する（ステップＳ１０９）。
【０１２９】
以上の処理により、表示範囲内の列であって、かつ表示指定となっている列の列名は、全て、黒で表示されるが、現在、選択状態にあるか否かに応じて、背景が青（選択）と白（非選択）の色で、区別して表示される。また、表示範囲内の列であって、かつ非表示指定となっている列の列名は、全て、白の太字で表示されるが、現在、選択状態にあるか否かに応じて、背景が青（選択）と白（非選択）で、区別して表示される。
【０１３０】
このようにして、列名一覧コントロール３０１の表示において、表示範囲内にある列の列名が、現在、表示指定または非表示指定であるか、また、選択されているか非選択であるかの４種類の状態に応じて、４種類の形態で表示される。ステップＳ１０５、Ｓ１０６，Ｓ１０８，またはＳ１０９の処理終了後、呼び出し元に戻る。
【０１３１】
また、ステップＳ１０１で“Ｆａｌｓｅ”であれば、列番号Ｃの列名の上下の枠線を点線で描画する（ステップＳ１１０）。次に、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｆａｌｓｅ”であるかを判断し（ステップＳ１１１）、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”であれば、続いて、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇを判断する（ステップＳ１１２）。
【０１３２】
そして、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇが“Ｔｒｕｅ”であれば、列番号Ｃの列名を背景色を青として黒で描画する（ステップＳ１１３）。一方、“Ｆａｌｓｅ”であれば、列番号Ｃの列名を背景色をグレーとして黒で描画する（ステップＳ１１４）。
【０１３３】
また、ステップＳ１１１でＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷ“Ｆａｌｓｅ”であれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇを判断する（ステップＳ１１５）。そして、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇが“Ｔｒｕｅ”であれば、列番号Ｃの列名を背景色を青として白の太字で描画する（ステップＳ１１６）。一方、“Ｆａｌｓｅ”であれば、列番号Ｃの列名を背景色をグレーとして白の太字で描画する（ステップＳ１１７）。
【０１３４】
そして、ステップＳ１１３、Ｓ１１４、Ｓ１１６、またはＳ１１７の処理の後、呼び出し元に戻る。
このようにして、表示範囲外のスクロール列についても、ＳｈｏｗＦｌｇＷ及びＳｅｌｅｃｔＡｒｅａＦｌｇの真偽値に応じて、列名が４種類の形態で表示される。表示範囲外にある、すなわち、現在、表示されていない列の列名は、全て、上下の枠線が点線で表示される。また、表示範囲外の列において、表示指定となっている列の列名は全て黒で表示されるが、現在、選択状態であるか否かに応じて、背景が青（選択）とグレー（非選択）によって、区別されて表示される。また、表示範囲外の列において、非表示指定となっている列の列名は白の太字で表示されるが、現在、選択状態であるか否かに応じて、背景が青（選択）とグレー（非選択）によって、区別されて表示される。また、さらに、本実施形態においては、表示指定であって、かつ、選択状態にない列について、その列が表示範囲内にあるか否かを、背景の色を変化させることにより識別可能にしている。すなわち、列名の背景色が、表示範囲内であれば白で、表示範囲外であればグレーで表示されるようになっている。
【０１３５】
以上のように、列名一覧コントロール３０１の表示においては、表示範囲内であるか否かを問わず、現在、選択状態にある列の列名は、青を背景として表示される。したがって、列名一覧コントロール３０１に表示される列名の背景色により、選択されている列と選択されていない列とを識別できる。また、表示指定となっている列と非表示指定となっている列とは、列名一覧コントロール３０１に表示される列名の文字色により識別できる。また、表示指定となっており、かつ選択状態となっていない列であっても、その列が表示範囲内の列であるか否かは、列名一覧コントロール３０１に表示される列名の背景色によって識別できる。
【０１３６】
尚、上記表示形態は一例にすぎず、その他の表示形態により、各列の状態を識別できるようにすることも可能である。
次に、図１０のフローチャートのステップＳ３１の「マウスボタン処理」ルーチンの詳細を、図１８のフローチャートを参照しながら説明する。
【０１３７】
マウスボタン処理ルーチンは、引数として、列名一覧コントロール３０１上でマウスボタンをダウン操作された列名の列番号を受け取る。そして、まず、既存の選択キャンセルルーチンを呼び出し、全てのＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌａｇを“Ｆａｌｓｅ”に設定する（ステップＳ１２１）。この既存の選択キャンセルルーチンの詳細は後述する。
【０１３８】
次に、列名一覧選択表示ルーチンを呼び出し、列名一覧コントロール３０１の表示を、例えば、図７（ｂ）に示すような形態に変化させる処理を実行する。列名一覧選択表示ルーチンを呼び出す際、上記引数として受け取った列番号を、列名一覧選択表示ルーチンに第１及び第２引数として渡す（ステップＳ１２２）。この列名一覧選択表示ルーチンの詳細も後述する。
【０１３９】
続いて、ＣｏｌｍＣｔｒｌ．Ｓｔａｒｔに、上記引数として受け取った列番号を設定して（ステップＳ１２３）、呼び出し元に戻る。
図１９は図１８のステップＳ１２１の既存の選択キャンセルルーチンの詳細を示すフローチャートである。
【０１４０】
まず、ＣｏｌｍＣｔｒｌ．Ｆｌｇを判断する（ステップＳ１３１）。そして、ＣｏｌｍＣｔｒｌ．Ｆｌｇが“Ｆａｌｓｅ”であれば、呼び出し元に戻る。一方、“Ｔｒｕｅ”であれば、「表示属性テーブルの選択クリア」ルーチンを呼び出し、全ての列について、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇを“Ｆａｌｓｅ”に設定する（ステップＳ１３２）。この「表示属性テーブルの選択クリア」ルーチンの詳細は後述する。
【０１４１】
次に、ＣｏｌｍＣｔｒｌ．Ｆｌｇを“Ｆａｌｓｅ”に設定し（ステップＳ１３３）、呼び出し元に戻る。
ここで、ステップＳ１３２の「表示属性テーブルの選択クリア」ルーチンの詳細を、図２０のフローチャートを参照しながら説明する。
【０１４２】
まず、変数Ｃを“０”に初期設定する（ステップＳ１４１）。次に、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇを“Ｆａｌｓｅ”に設定し（ステップＳ１４２）、続いて、変数Ｃの値を１だけインクリメントする（ステップＳ１４３）。そして、変数ＣとＣｍａｘの値を比較し（ステップＳ１４４）、Ｃ＞Ｃｍａｘであれば呼び出し元に戻るが、Ｃ≦ＣｍａｘであればステップＳ１４２に戻る。
【０１４３】
このようにして、ＣｏｌｍＳｔＴｂｌ〔０〕．ＳｅｌｅｃｔＡｒｅａＦｌｇ〜ＣｏｌｍＳｔＴｂｌ〔Ｃｍａｘ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇを、全て、“Ｆａｌｓｅ”に設定し、この設定が終了すると、ステップＳ１４４でＣ＞Ｃｍａｘであると判断されて、呼び出し元に戻る。
【０１４４】
次に、図１０のフローチャートのステップＳ３２の「マウスボタンダウン＆マウスムーブ処理」ルーチンの詳細を、図２１のフローチャートを参照しながら説明する。
【０１４５】
「マウスボタンダウン＆マウスムーブ処理」ルーチンは、呼び出し元から、現在、マウスボタンがダウンされている状態のときにあって、マウスカーソルが指している列名一覧コントロール３０１上の列名の列番号を、引数として受け取る。そして、この列番号を第２引数、ＣｏｌｍＣｔｒｌ．Ｓｔａｒｔを第１引数として、列名一覧選択表示ルーチンを呼び出して、図７（ｃ）に示すような列名一覧コントロール３０１の表示制御を行う（ステップＳ１５１）。
【０１４６】
図２２は、列名一覧選択表示ルーチンの詳細を示すフローチャートである。
まず、上述した「表示属性テーブルの選択クリア」ルーチンを呼び出す（ステップＳ１５１）。これにより、全ての列のＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇが“Ｆａｌｓｅ”に設定される。
【０１４７】
次に、第１引数であるＳｔａｒｔと第２引数であるＥｎｄを比較する（ステップＳ１５３）。上述したように、ＳｔａｒｔはＣｏｌｍＣｔｒｌ．Ｓｔａｒｔ（マウスボタンがダウンされた時に、マウスカーソルが指していた列名一覧コントロール３０１上の列名の列の列番号）に等しく、Ｅｎｄは、現在、マウスカーソルが指している列名一覧コントロール３０１上の列名の列番号に等しい。
【０１４８】
続いて、ＳｔａｒｔとＥｎｄを比較する（ステップＳ１５２）。そして、Ｓｔａｒｔ≦Ｅｎｄであれば、変数Ｃ０にＳｔａｒｔの値を、変数Ｃ１にＥｎｄの値を、それぞれ設定する（ステップＳ１５３）。一方、Ｓｔａｒｔ＞Ｅｎｄであれば、変数Ｃ０にＥｎｄの値を、変数Ｃ１にＳｔａｒｔの値を、それぞれ設定する（ステップＳ１５４）。
【０１４９】
この処理は、列名一覧コントロール３０１上でのマウスのドラッグ操作方向として、左方から右方及び右方から左方の両方を考慮しているためである。よって、左方から右方であればステップＳ１５３の処理が、右方から左方であればステップＳ１５４の処理が実行される。そして、ステップＳ１５３またはＳ１５４の処理により、列名一覧コントロール３０１上で列名がドラッグ操作がなされた場合における左端の列名の列の列番号と右端の列名の列の列番号が、それぞれ、Ｃ０とＣ１に設定される。
【０１５０】
次に、変数ＣにＣ０の値を設定する（ステップＳ１５５）。続いて、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇに“Ｔｒｕｅ”を設定し（ステップＳ１５６）、変数Ｃの値を“１”インクリメントする（ステップＳ１５７）。
【０１５１】
そして、ＣとＣ１の値を比較し（ステップＳ１５８）、Ｃ≦Ｃ１であれば、ステップＳ１５６に戻る。このようにして、ステップＳ１５６〜Ｓ１５８のループ処理を、ステップＳ１５８でＣ＞Ｃ１であると判断するまで繰り返す。そして、ステップＳ１５８でＣ＞Ｃ１であると判断すると、上述した図１６の列名一覧コントロール表示ルーチンを呼び出す（ステップＳ１５９）。
【０１５２】
上述したステップＳ１５６〜Ｓ１５８のループ処理により、列名一覧コントロール３０１上で列名がドラッグ操作された場合、それらの列名の列のＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌｇのみが“Ｔｒｕｅ”に設定される。したがって、ステップＳ１５９の処理により、列名一覧コントロール３０１の表示において、該ドラッグ操作された列名の背景色が青に変化する。また、ドラッグ操作の後に、マウスボタンがアップされた場合には、マウスボタンがダウンされた列名とマウスボタンがアップされた列名、及びそれらの列名の間の列名のの背景色が青に表示される。また、さらに、ドラッグ操作されたものの、マウスボタンがダウンされた列名とマウスボタンがアップされた列名が同一であった場合には、ステップＳ１５５〜Ｓ１５８の処理が１回のみ行われ、その列名の背景色のみが青で表示される。
【０１５３】
次に、図１０のフローチャートのステップＳ３３のマウスボタンアップ処理の詳細を、図２３のフローチャートを参照しながら説明する。
このマウスボタンアップ処理ルーチンは、引数として、列名一覧コントロール３０１上でマウスボタンがアップされた時にマウスカーソルが指していた列名の列番号を受け取る。列名一覧コントロール３０１上で列名がドラッグされた場合には、マウスボタンがドロップ（離された）ときにマウスカーソルが指していた列名の列番号が該引数となる。
【０１５４】
そして、まず、該列番号とＣｏｌｍＣｔｒｌ．Ｓｔａｒｔを比較する（ステップＳ１６１）。そして、両者が異なれば、ＣｏｌｍＣｔｒｌ．Ｅｎｄに該列番号を設定し、ＣｏｌｍＣｔｒｌ．Ｆｌｇを“Ｔｒｕｅ”に設定する（ステップＳ１６２）。一方、両者が一致すれば、ＣｏｌｍＣｔｒｌ．Ｅｎｄに該列番号を設定し、ＣｏｌｍＣｔｒｌ．Ｆｌｇに“Ｆａｌｓｅ”を設定する（ステップＳ１６３）。
【０１５５】
ステップＳ１６２の処理は、列名一覧コントロール３０１上でのマウスのドラッグ操作により複数の列名が指定された場合の処理に該当する。一方、ステップＳ１６３の処理は、マウスのドラッグ操作により単一の列名が指定された場合の処理に該当する。
【０１５６】
ステップＳ１６２またはＳ１６３の処理を実行した場合、上述した図２２の列名一覧選択表示ルーチンを呼び出し（ステップＳ１６４）、呼び出し元に戻る。このステップＳ１６４の処理により、ユーザがマウスのドラッグ操作により、列名一覧コントロール３０１上で選択した列名が最終的に決定され、それらの列名が青の背景色で表示される。
【０１５７】
次に、図１０のフローチャートのステップＳ３４のマウスＷクリック処理の詳細を、図２４乃至図２７のフローチャートを参照しながら説明する。
マウスＷクリック処理ルーチンは、引数として、列名一覧コントロール３０１上でＷクリックされた列名の列の列番号を受け取る。そして、まず、ＣｏｌｍＣｔｒｌ．Ｆｌｇを判断し（ステップＳ２０１）、ＣｏｌｍＣｔｒｌ．Ｆｌｇが“Ｆａｌｓｅ”であればステップＳ２１１へ、“Ｔｒｕｅ”であればステップＳ２０９に進む。
【０１５８】
ＣｏｌｍＣｔｒｌ．Ｆｌｇが“Ｆａｌｓｅ”であることは、列名一覧コントロール３０１上で表示／非表示指定として選択された列が一個（単一選択）であることを示している（図２３のフローチャートのステップＳ１６３参照）。一方、ＣｏｌｍＣｔｒｌ．Ｆｌｇが“Ｔｒｕｅ”であることは、列名一覧コントロール３０１上で表示／非表示指定として選択された列が複数であること（複数選択中）を示している（図２３のフローチャートのステップＳ１６２参照）。
【０１５９】
尚、本実施形態では、列名一覧コントロール３０１上でドラッグ操作無しに、直接、ある列名がＷクリックされた場合、ＣｏｌｍＣｔｒｌ．ＳｔａｒｔとＣｏｌｍＣｔｒｌ．Ｅｎｄにその列名の列番号が設定され、さらに、ＣｏｌｍＣｔｒｌ．Ｆｌａｇが“Ｆａｌｓｅ”に設定されて、ステップＳ３１〜Ｓ３３の処理をスキップして、ステップＳ３４のマウスＷクリック処理ルーチンが実行されるものとする。よって、本実施形態では、列名一覧コントロール３０１上で、単一の列名を、直接、Ｗクリックすることによっても、単一の列を選択し、その列の表示／非表示を指定することが可能である。
【０１６０】
単一選択の場合、上述したように列名一覧コントロール３０１上で「表示」から「非表示」、または「非表示」から「表示」に変化させる単一の列がＷクリックされることになる。ステップＳ２０１で“Ｆａｌｓｅ”であると判断されると、変数Ｃｎｏに引数の列番号を設定する（ステップＳ２０２）。次に、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを判断し（ステップＳ２０３）、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”であれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを“Ｆａｌｓｅ”に設定する（ステップＳ２０４）。一方、“Ｆａｌｓｅ”であれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを“Ｔｒｕｅ”に設定する（ステップＳ２０５）。
【０１６１】
このようにして、列名一覧コントロール３０１上で、列名がＷクリックされた列のＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷの真偽値を反転させる。
続いて、表示対象の表オブジェクトに対して、Ｃｎｏを引数として、Ｗクリック用列表示切替メソッドを呼び出す（ステップＳ２０６）。このＷクリック用列表示切替メソッドの呼び出しにより、論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３の更新が行われる（上記Ｗクリック操作により列名が指定されたスクロール列が表示指定から非表示指定に、または非表示指定から表示指定に変化し、これに伴い表のスクロール領域に表示される列も変化する）。このＷクリック用列表示切替メソッドの処理の詳細は、後述する。
【０１６２】
次に、上述した列の表示領域判定ルーチンを呼び出し（ステップＳ２０７）、続いて、同じく、上述した列名一覧コントロール表示ルーチンを呼び出して（ステップＳ２０８）、呼び出し元に戻る。上記ステップＳ２０７、Ｓ２０８の処理により、列名一覧コントロール３０１の表示形態が変化する。すなわち、列名一覧コントロール３０１上において、Ｗクリックにより、ある列の指定が「表示」から「非表示」に変更された場合は、その列の列名は黒文字から白文字に変化する。逆に、「非表示」から「表示」に変更された場合は、その列の列名は白文字から黒文字に変化する。
【０１６３】
このように、本実施形態では、列名一覧コントロール３０１上である列の「列名」をＷクリックすることにより、その列を「表示」から「非表示」、または「非表示」から「表示」に、簡単に変化させることができる。
【０１６４】
ステップＳ２０１で“Ｔｒｕｅ”と判断した場合には（列名一覧コントロール３０１上で複数の列が選択されたと判断した場合は）、受け取った引数を、そのまま引数として、「列名一覧コントロールＷクリック処理」ルーチンを呼び出し（ステップＳ２０９）、呼び出し元に戻る。この列名一覧コントロールＷクリック処理ルーチンの詳細は後述する。
【０１６５】
次に、ステップＳ２０６で呼び出す「Ｗクリック用列表示切替メソッド」の詳細を、図２５及び図２６のフローチャートを参照しながら説明する。
まず、列番号カウウンタとなる変数Ｃ，及び変数Ｃｐｎｏを、共に、“０”に初期設定する（ステップＳ２２１）。
【０１６６】
次に、変数Ｃと引数Ｃｎｏの値を比較する（ステップＳ２２２）。そして、Ｃ＜Ｃｎｏであれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷまたはＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＳが“Ｆａｌｓｅ”であるか判断し（ステＳ２２３）、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷとＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＳが、共に、“Ｔｒｕｅ”であれば、Ｃｐｎｏの値をＣｏｌｍＳｔＴｂｌ〔Ｃ〕．Ｗｉｄｔｈの値だけ増加する（ステップＳ２２４）。そして、Ｃの値を“１”インクリメントし（ステップＳ２２５）、ステップＳ２２２に戻る。一方、ステップＳ２２３でＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷまたはＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＳが“Ｆａｌｓｅ”であれば、ステップＳ２２５に進む。
【０１６７】
このようにして、「表の先頭列」から「Ｗクリックされた列の直前までの列」の中で、“表示指定”（ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷ＝Ｔｒｕｅ）となっており、かつ、ジャンプスクロール操作により非表示となっていない列の列幅の合計を変数Ｃｐｎｏに設定する。これにより、Ｃｐｎｏには、列名一覧コントロール３０１上で列名が選択された左端の列（単一選択の場合は、Ｗクリックされた列）の表示データが描画されるべき論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３内の描画位置の座標が設定される。
【０１６８】
尚、本実施形態では、ジャンプスクロール操作とＷクリック操作を統合的に処理しているため、このような処理をおこなっているが、ステップＳ２２３の判断は、あくまでも、一つの実施例であり、他の実施例にしてもよい。本実施形態では、ステップＳ２２６以降の処理により、ジャンプスクロール操作により画面から消えた列の中に、表示指定の列がある場合、Ｗクリック操作により、それらの列の再表示を可能にしている。すなわち、ジャンプスクロール操作により消えた列の中で、Ｗクリック操作により選択された列以降の（後述するＷクリック操作により複数の列が選択された場合は、選択された左端の列以降）の表示指定となっている列（ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”となっている列）は、再表示されるようになる。
【０１６９】
ステップＳ２２２で、Ｃ≧Ｃｎｏであると判別すると、行番号カウンタとなる変数Ｌと、描画用行座標が設定される変数Ｌｐを、共に、“０”に初期設定する（ステップＳ２２６）。次に、変数Ｃに引数Ｃｎｏの値を設定すると共に、変数Ｃｐに変数Ｃｐｎｏの値（描画用列座標）を設定する（ステップＳ２２７）。
【０１７０】
これにより、変数Ｃｐに、これから描画すべきセル（上記選択された左端の列のセル）の論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３内の描画用列座標が設定される。
【０１７１】
続いて、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを判断し（ステップＳ２２８）、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”であれば、「１セル描画」ルーチンを呼び出して、データテーブルＤａｔａＴｂｌ〔Ｃ，Ｌ〕の表示データを、論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に描画する（ステップＳ２２９）。この「１セル描画」ルーチンは、上述した図１３のステップＳ５９で呼び出されるルーチンと同様のものである。
【０１７２】
ステップＳ２２９に続いて、Ｃｐの値を、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．Ｗｉｄｔｈの値だけ増加する（ステップＳ２３０）。そして、Ｃの値を“１”インクリメントし（ステップＳ２３１）、次に、ＣとＣｍａｘの値を比較し（ステップＳ２３２）、Ｃ≦Ｃｍａｘであれば、ステップＳ２２８に戻る。
【０１７３】
また、ステップＳ２２８で“Ｆａｌｓｅ”であれば、ＤａｔａＴｂｌ〔Ｃ、Ｌ〕の描画は行わず、ステップＳ２３１に進む。
ステップＳ２３２で、Ｃ＞Ｃｍａｘと判別すれば、Ｌｐの値をＬｐｉｔｃｈだけ増加し（ステップＳ２３３）、続いて、Ｌの値（行番号）を“１”インクリメントする（ステップＳ２３４）。そして、ＬとＬｍａｘ（最終行番号）とを比較し（ステップＳ２３５）、Ｌ≦Ｌｍａｘであれば、ステップＳ２２７に戻る。
【０１７４】
このようにして、ステップＳ２２８〜Ｓ２３２のループ処理により、列名一覧コントロール３０１上で列名がＷクリックされた列（列番号Ｃｎｏの列）以降の表示指定となっている列の論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に対する描画が、１行単位で行われる。この描画は、第０行（行番号が“０”の行）から、行番号順に行われる。このように、ステップＳ２２８の判別により、論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３には、“表示指定”となっている列のセルのみが描画される。
【０１７５】
また、ステップＳ２２７〜Ｓ２３５のループ処理により、上記Ｗクリックされた列（列番号Ｃｎｏの列）以降の表示指定となっている列の論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に対する描画が、全ての行に対して行われる。
【０１７６】
尚、Ｗクリック用列表示切替メソッドが使用する基本情報（Ｃｍａｘ、Ｌｍａｘ、Ｌｐｉｔｃｈ）は、表情報テーブル１０に、予め、格納されおり、表示制御部７０は、表情報テーブル１０から、これらの基本情報を読みだして、Ｗクリック用列表示切替メソッドを実行する。
【０１７７】
図２７は、図２６のフローチャートのステップＳ２０９の列名一覧コントロールＷクリック処理ルーチンの詳細を示すフローチャートである。
この列名一覧コントロールＷクリック処理ルーチンは、列名一覧コントロール３０１上で複数の列名が選択された場合の処理を行い、引数として、列名一覧コントロール３０１上で列名がＷクリックされた列の列番号を受け取る。
【０１７８】
このルーチンは、まず、ＣｏｌｍＣｔｒｌ．ＳｔａｒｔとＣｏｌｍＣｔｒｌ．Ｅｎｄの値を比較する（ステップＳ２４１）。この結果、ＣｏｌｍＣｔｒｌ．Ｓｔａｒｔ≦ＣｏｌｍＣｔｒｌ．Ｅｎｄであれば、変数Ｃ０にＣｏｌｍＣｔｒｌ．Ｓｔａｒｔの値を、変数Ｃ１にＣｏｌｍＣｔｒｌ．Ｅｎｄの値を設定する（ステップＳ２４２）。一方、ＣｏｌｍＣｔｒｌ．Ｓｔａｒｔ＞ＣｏｌｍＣｔｒｌ．Ｅｎｄであれば、変数Ｃ０にＣｏｌｍＣｔｒｌ．Ｅｎｄの値を、変数Ｃ１にＣｏｌｍＣｔｒｌ．Ｓｔａｒｔの値を設定する（ステップＳ２４３）。
【０１７９】
ステップＳ２４１〜Ｓ２４３の処理は、列名一覧コントロール３０１上のドラッグ操作の方向が左から右、もしくは右から左である場合を想定した処理であり、ステップＳ２４２またはＳ２４３の処理により、Ｃ０に列名一覧コントロール３０１上でのドラッグ＆ドロップ操作により選択された左端の列の列番号が、Ｃ１に列名一覧コントロール３０１上でのドラッグ操作＆ドロップ操作により選択された右端の列番号が設定される（Ｃ０＜Ｃ１となる）。
【０１８０】
次に、引数として受け取った「列番号」がＣ０以上で、かつＣ１以下である条件を満足するか判断する（ステップＳ２４４）。そして、その判断結果が“Ｔｒｕｅ”（該条件を満足する）であればステップＳ２４５に進み、“Ｆａｌｓｅ”（該条件を満足しない）であればステップＳ２５４に進む。このステップＳ２４４の処理は、列名一覧コントロール３０１上でＷクリックされた列名が選択された列名であるかを判断する処理である。この処理により、列名一覧コントロール３０１上で選択された列名以外の列名がＷクリックされた場合、その操作は無効とされる。
【０１８１】
ステップＳ２４５では、変数ＣにＣ０の値を代入し（ステップＳ２４５）、続いて、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを判断する（ステップＳ２４６）。そして、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”であればＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを“Ｆａｌｓｅ”に設定する（ステップＳ２４７）。一方、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｆａｌｓｅ”であれば、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷを“Ｔｒｕｅ”に設定する（ステップＳ２４８）。
【０１８２】
このステップＳ２４７とＳ２４８の処理は、列名一覧コントロール３０１上で選択された列のＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷの真偽値を反転させる処理である。この反転処理により、該選択列の表示指定が“表示”から“非表示”に、または“非表示”から“表示”に変化する。
【０１８３】
ステップＳ２４７またはステップＳ２４８の処理の後、Ｃの値を“１”インクリメントし（ステップＳ２４９）、続いて、ＣとＣ１の値を比較する（ステップＳ２５０）。そして、Ｃ≦Ｃ１であればステップＳ２４６に戻る。
【０１８４】
このようにして、ステップＳ２４６〜Ｓ２５０のループ処理を繰り返し、選択された全ての列のＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷの真偽値を反転させる。
【０１８５】
上記反転処理等を終了すると、ステップＳ２５０でＣ＞Ｃ１であると判断すると、次に、Ｃ０とＧｒｉｄＣｓｃｒｌを比較する（ステップＳ２５１）。そして、Ｃ０≧ＧｒｉｄＣｓｃｒｌであればＣｎｏにＣ０の値を設定するが（ステップＳ２５２）、Ｃ０＜ＧｒｉｄＣｓｃｒｌであればＣｎｏにＧｒｉｄＣｓｃｒｌの値を設定する（ステップＳ２５３）。
【０１８６】
これにより、論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３の左端に描画する列の列番号がＣｎｏに設定される。すなわち、列名一覧コントロール３０１上で選択された左端の列が、表示範囲内の列であった場合にはＣｎｏにその列の列番号が設定されるが、表示範囲外の列であった場合にはＣｎｏにＧｒｉｄＣｓｃｒｌ（ジャンプスクロール操作により指定された、現在、左端に表示されている列の列番号）が設定される。尚、これは、あくまでも、一実施例であり、別の実施例とすることも可能である。
【０１８７】
次に、Ｃｎｏを引数として、上述した図２５及び図２６のＷクリック用列表示切替えメソッドを呼び出す（ステップＳ２５４）。これにより、Ｗクリック操作により選択された左端の列以降の列であって、表示範囲内にある表示指定となっている列（ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｔｒｕｅ”である列）の表示データのみが、論理Ｖｉｅｗエリア２２０のスクロール項目描画領域２２３に描画される。そして、Ｗクリック操作により選択された左端の列以降の列であって、表示範囲内にある列であっても、非表示指定となっている列（ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷが“Ｆａｌｓｅ”である列）の表示データは描画されない。これにより、表示範囲内にあった列の中で、表示指定から非表示指定となった列は画面から消え、逆に、非表示指定から表示指定となった列は再表示される。この場合、列は左詰めで表示される。
【０１８８】
また、表示／非表示指定の変更がなされた列が表示範囲内よりも左方の列のみであった場合には、表の表示は変化せず、列名一覧コントロール３０１の表示形態が、変更結果に応じて変化するのみである（表示／非表示の指定が変更された列の列名の表示色が変化するのみである）。
【０１８９】
ステップＳ２５４の次に、上述した図１５の列の表示領域判定ルーチンを呼び出す（ステップＳ２５５）。これにより、表のスクロール領域の各列のＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＤｉｓｐＡｒｅａＦｌｇが設定される。すなわち、列番号の小さいスクロール列から順に、ＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＷ及びＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｈｏｗＦｌｇＳが調べられ、表示範囲内にあるスクロール列のＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＤｉｓｐＡｒｅａＦｌｇが“Ｔｒｕｅ”に設定される。すなわち、新たな、表示範囲が設定される。
【０１９０】
続いて、上述した図１９の既存の選択キャンセルルーチンを呼び出す（ステップＳ２５６）。これにより、表の全ての列のＣｏｌｍＳｔＴｂｌ〔Ｃ〕．ＳｅｌｅｃｔＡｒｅａＦｌａｇが“Ｆａｌｓｅ”に設定される。すなわち、現在、選択中の列がキャンセルされる。
【０１９１】
次に、上述した図１６の列名一覧コントロール表示ルーチンを呼び出す（ステップＳ２５７）。これにより、例えば、図３０に示すような画面５００が表示される。画面５００は、図２８の表の初期画面３００において、図７に示す操作と同様なマウスのドラッグ＆ドロップ操作とＷクリックで、「粗利」と「粗率」を「非表示」に設定した場合に表示される画面５００である。
【０１９２】
この場合、図３０に示すように、画面５００においては、初期画面３００の表の表示から「粗利」と「粗率」の列の表示が消え、「仕入数」の列の後には、「在庫数」以降の列が表示される。このような表の表示の変化に応じて、列名一覧コントロール３０１の表示形態も変化している。すなわち、「粗利」と「粗率」の表示が黒文字から白文字に変化している。また、画面５００においては、表のスクロール領域に「売上金」から「０３月」までの列が表示されるようになり表示範囲が変化したたので、列名一覧コントロール３０１の上枠と下枠の実線表示が「商品名」から「０３月」の列名まで延長して表示されるようになっている。
【０１９３】
したがって、ユーザは画面５００の列名一覧コントロール３０１の表示を閲覧することにより、画面上では表示されていないが、「仕入数」と「在庫数」の両列の間に、実際は、「粗利」と「粗率」が存在することを列名の表示形態から認識することができる。また、枠線の表示形態から、「０２月」と「０１月」が画面５００上では部分表示または未表示となっていることを、即座に、知ることができる。
【０１９４】
画面５００において、初期画面３００に列名一覧コントロール３０１上で「粗利」と「粗率」の列名に対し、再び、マウスのドラッグ操作とＷクリック操作を行うことにより、「粗利」と「粗率」の列は再び「表示」指定となり、表示装置９０の表示は画面５００から画面３００に切り替わる。
【０１９５】
このように、本実施形態では、列名一覧コントロール３０１上で、マウスのドラッグ操作とＷクリック操作を行うことにより、一度に、複数の連続する列を「表示」から「非表示」に、または「非表示」から「表示」に変化させることができる。また、列名一覧コントロール３０１上で単一の列名をドラッグ操作せずに直接Ｗクリックすることにより、単一の列の表示／非表示指定が可能である。
【０１９６】
図３１は、上記実施形態を実現するコンピュータ６００のハードウェア構成を示すブロック図である。
該コンピュータ６００は、ＣＰＵ６０１と、該ＣＰＵ６００とバス６０９によって接続されたＲＯＭ６０２，ＲＡＭ６０３，外部記憶装置６０４、記録媒体駆動装置６０５、入出力装置６０７、及び通信インターフェース６０８から構成される。
【０１９７】
ＣＰＵ６０１は、バス６０９を介して上記各構成要素６０２〜６０８にアクセス可能であり、システム全体を制御する。本発明の実施形態のアルゴリズムを実現するプログラムは、例えば、ＲＯＭ６０２、外部記憶装置６０４、または可搬記録媒体６０６に格納される。
【０１９８】
ＲＯＭ６０２や外部記憶装置６０４に格納された上記プログラムは、ＲＡＭ６０３上に、ＣＰＵ６０１が実行可能な形式に展開されて、ＣＰＵ６０１により実行される。また、可搬記録媒体６０６に格納されている上記プログラムは、該可搬記録媒体６０６が記録媒体駆動装置６０５に装着されることにより、記録媒体駆動装置６０５により読み取られ、ＲＡＭ６０３上に、ＣＰＵ６０１が実行可能な形式に展開されて、ＣＰＵ６０１により実行される。
【０１９９】
また、上記プログラムは、コンピュータ６００とネットワーク７００を介して接続された情報提供者８００が保有していてもよく、この場合には、通信インターフェース７００が、ネットワーク４００を介して、情報提供者８００が保有していている上記プログラムを、外部記憶装置６０４にダウンロードする。そして、この外部記憶装置６０４にダウンロードされた上記プログラムは、上述した方法により、ＣＰＵ６０１により実行される。
【０２００】
入出力装置６０７は、図１の入力装置９０及び表示装置８０に該当し、ユーザが入出力装置６０７の表示画面に表を初期表示させるためのコマンドの入力や、画面表示されている表の列名一覧コントロール３０１に対するマウス操作等のために利用される。また、該マウス操作等に応じた表の表示を行う。
【０２０１】
外部記憶装置６０４は、図１の外部記憶装置１１０に該当する。ＲＡＭ６０３は、図１の表情報テーブル１０、表示メモリ３０、表示属性テーブル４０、列幅情報テーブル５０、及び列名一覧データバッファ６０等に該当する。ＲＡＭ６０３には、レジスタ７１〜７４やＣＰＵ６０１のワーク領域等が確保される。
【０２０２】
また、情報提供者８００が、上記プログラムを実行可能なコンピュータ、及び表情報テーブル１０を格納している外部記憶装置を備えている場合には、ユーザが入出力装置６０７から、上記プログラムを遠隔実行するためのコマンドを入力することにより、通信インターフェース６０８及びネットワーク７００を介して、上記プログラムを、情報提供者８００が保有するコンピュータで遠隔実行させることも可能である。この場合、情報提供者８００が保有するコンピュータで得られた表や列名一覧コントロール３０１の表示データを、コンピュータ６００が、ネットワーク７００及び通信インターフェース６０８を介して受信することが可能であり、該受信された表示データは入出力装置６０７から、ユーザが視覚可能な形式で表示される。
【０２０３】
尚、可搬記録媒体６０６は、フロッピーディスク、ＣＤ−ＲＯＭ，ＣＤ−ＲＡＭ、各種規格のＤＶＤ，光磁気記録方式もしくは相変化型の光ディスク、ＩＣカード等である。また、外部記憶装置６０４は、ハードディスクやディスクアレイ等である。また、入出力装置６０７は、キーボードやマウス等のポインティング・デバイス、及びＣＲＴディスプレイ、もしくは液晶ディスプレイ、プラズマ・ディスプレイ、有機ＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｅｎｃｅ）ディスプレイ等の薄型ディスプレイである。
【０２０４】
また、ネットワーク７００は、ＬＡＮ、ＭＡＮ、ＷＡＮ、もしくはインターネット等である。
上記実施形態では、操作対象を列としているが、本実施形態を応用して、行の表示抑制や行のジャンプスクロール操作を実現するように構成することも可能である。この場合、列名一覧コントロール３０１に対応するものとして、行名一覧コントロールを表示する構成とする。尚、括り表などのように行数が多くなる階層構造の表においては、大項目、中項目などのような上位階層の項目については全項目名を表示させ、小項目などのような下位階層の項目については代表項目名（例えば、先頭の項目名など）のみを行名一覧コントロールに表示させるようにしてもよい。
【０２０５】
また、本実施形態では列名一覧コントロール３０１を一行に表示するようにしているが表の列数に応じて、適宜、列名一覧コントロール３０１の行数を変えるようにしてもよい。尚、この場合においても、列名の表示順序は、表の列順に対応させるのが好ましい。また、複数の列を選択する場合、連続する複数の列ではなく、離散する複数の列名を選択するように構成してもよい。また、本発明は、ファイルのディレクトリなどのような一画面には収まらない木構造表示の参照にも適用可能である。この場合、例えば、各階層名の一覧を表示させるようにし、該階層名を選択するようにする。
【０２０６】
また、本実施形態では列の非表示指定により、表の表示形式を変更できるので、画面上で、元の表を加工して、多様な形式の表を作成することが可能である。したがって、この加工により得られた表を保存できるような構成とすることも可能である。上記のような各種変形例の実装は、当業者であれば、本実施形態から容易に着想できるものである。
【０２０７】
【発明の効果】
請求項１に記載の発明によれば、複数列から構成される表データを表示する際、前記表データの表示と並列的に同一画面上に前記表データの全ての列名を一覧表示することにより、表示画面上に表示されていない列名を前記表データと同一画面上の列名一覧上で確認することができる。すなわち列名一覧の表示を見るだけで表の全体の構成を直感的に把握することができる。そして画面上に前記表データとして表示されている列名も表示されていない列名も全て列名一覧に表示されているので、前記画面上に表示されていない列も含めてスクロールする列の指定が可能となり、スクロールする列の確認及び変更が確実且つ迅速にできる。また、スクロール表示の結果、表データの列が前記画面上に全て表示されたか否かを前記表データと同一画面上の列名一覧上で直感的に確認することができる。
請求項２に記載の発明によれば、複数列から構成される表データを表示する際、前記表データの表示と並列的に同一画面上に前記表データの全ての列名を、表示指定となっている列と非表示指定となっている列とが識別可能となるような形態で横方向に一覧表示することにより、画面上に表示されていない列名を前記表データと同一画面上の列名一覧上で直感的に確認することができる。すなわち列名一覧を見るだけで表データの全体の構成と、表データを構成する各列が表示されているか否かを、表示形態の違いにより直感的に把握することができる。また、列名一覧上で１または複数の列名を指定することにより、指定された列名について前記表データの列の表示／非表示の状態を変更できるので、ユーザは、簡易かつスピーディーな操作で、前記表データの列表示の状態を思いのままに制御することができる。
【図面の簡単な説明】
【図１】本発明の実施形態のシステムの全体構成を示すブロック図である。
【図２】表示属性テーブルのデータ構造を示す図である。
【図３】列幅情報テーブルのデータ構造を示す図である。
【図４】列名一覧データバッファのデータ構造を示す図である。
【図５】物理Ｖｉｅｗエリアと論理Ｖｉｅｗエリアを用いた表の描画方法を示す概念図図である。
【図６】本実施形態の全体動作を説明するフローチャートである。
【図７】」列名一覧コントロール上で列名を複数選択し、それらの列名の列の表示／非表示を指定する操作方法を説明する図である。
【図８】表示範囲外の列の表示を抑制した場合の、列名一覧コントロールの表示形態を示す図である。
【図９】ジャンプスクロール処理を説明するフローチャートである。
【図１０】列の表示／非表示処理を説明するフローチャートである。
【図１１】（ａ）は表示属性テーブル全体の初期化処理を説明するフローチャートであり、（ｂ）は各列の表示属性テーブルのデータ構造を示す図である。
【図１２】Ｓクリック用列表示切替メソッドを説明するフローチャート（その１）である。
【図１３】Ｓクリック用列表示切替メソッドを説明するフローチャート（その２）である。
【図１４】１セル描画を説明する図である。
【図１５】列の表示領域判定ルーチンを説明するフローチャートである。
【図１６】列名一覧コントロール表示ルーチンを説明するフローチャートである。
【図１７】列名一覧コントロール列単位表示ルーチンを説明するフローチャートである。
【図１８】マウスボタン処理ルーチンを説明するフローチャートである。
【図１９】既存の選択キャンセルルーチンを説明するフローチャートである。
【図２０】表示属性テーブルの選択クリアルーチンを説明するフローチャートである。
【図２１】マウスボタン＆マウスムーブ処理ルーチンを説明するフローチャートである。
【図２２】列名一覧選択表示ルーチンを説明するフローチャートである。
【図２３】マウスボタンアップ処理ルーチンを説明するフローチャートである。
【図２４】マウスＷクリック処理ルーチンを説明するフローチャートである。
【図２５】Ｗクリック用列表示切替メソッドを説明するフローチャート（その１）である。
【図２６】Ｗクリック用列表示切替メソッドを説明するフローチャート（その２）である。
【図２７】列名一覧コントロールＷクリック処理ルーチンを説明するフローチャートである。
【図２８】初期画面を示す図である。
【図２９】図２８の初期画面において、列名一覧コントロール上で「在庫月数」を指定してジャンプスクロール操作を行った場合に表示される画面を示す図である。
【図３０】図２８の初期画面において、列名一覧コントロール上で「粗利」と「粗率」を選択してＷクリック操作を行った場合に表示される画面を示す図である。
【図３１】本発明の実施形態を実現するコンピュータのハードウェア構成を示すブロック図である。
【図３２】従来の括り表の表示形態を示す図である。
【符号の説明】
１０  表情報テーブル
１１    表データ記憶部
１３    表の行数記憶部
１５    表の列数記憶部
２０  表データ生成部
３０  表示メモリ
３１  列見出し部バッファ
３２  データ行部バッファ
４０  表示属性テーブル４０
５０  列幅情報テーブル
６０  列名一覧データバッファ
７０  表示制御部
７１  表の最終列番号設定レジスタ
７２  有効スクロール幅レジスタ
７３  スクロール開始列番号設定レジスタ
７４  現在スクロール領域最左列番号設定レジスタ
８０  表示装置
９０  入力装置
１００  スクロール制御部
１０１Ａ、１０１Ｂ、１０１Ｃ  列名一覧表示
１０３Ｕ  上行スクロールボタン
１０３Ｄ  下行スクロールボタン
１０５Ｌ  左列スクロールボタン
１０５Ｒ  右列スクロールボタン
１１１  現在表示先頭行カウンタ
１１３  固定部
１１５  スクロール部
２１０  物理Ｖｉｅｗエリア
２１１  固定項目描画領域
２１１Ｄ  表示領域
２１３  スクロール項目描画領域
２１３Ｄ  表示領域
２２０  論理Ｖｉｅｗエリア
２２１  固定項目描画領域
２２３  スクロール項目描画領域
【図１】
0003744270.tif 000002
【図２】
0003744270.tif 000003
【図３】
0003744270.tif 000004
【図４】
0003744270.tif 000005
【図５】
0003744270.tif 000006
【図６】
0003744270.tif 000007
【図７】
0003744270.tif 000008
【図８】
0003744270.tif 000009
【図９】
0003744270.tif 000010
【図１０】
0003744270.tif 000011
【図１１】
0003744270.tif 000012
【図１２】
0003744270.tif 000013
【図１３】
0003744270.tif 000014
【図１４】
0003744270.tif 000015
【図１５】
0003744270.tif 000016
【図１６】
0003744270.tif 000017
【図１７】
0003744270.tif 000018
【図１８】
0003744270.tif 000019
【図１９】
0003744270.tif 000020
【図２０】
0003744270.tif 000021
【図２１】
0003744270.tif 000022
【図２２】
0003744270.tif 000023
【図２３】
0003744270.tif 000024
【図２４】
0003744270.tif 000025
【図２５】
0003744270.tif 000026
【図２６】
0003744270.tif 000027
【図２７】
0003744270.tif 000028
【図２８】
0003744270.tif 000029
【図２９】
0003744270.tif 000030
【図３０】
0003744270.tif 000031
【図３１】
0003744270.tif 000032
【図３２】
0003744270.tif 000033