Tutorials and Guide to Samples (v11)

レッスン 1:Delphi で ActiveX を使用する

このセクションでは、ActiveX インターフェイスをインストールして Delphi で操作する方法について説明します。作業項目は以下のとおりです。

Delphi IDE に ActiveX インターフェイスをインストールする

  1. Delphi のオンライン ヘルプまたはマニュアルの指示に従い、Delphi のメイン メニューから[コンポーネント]をクリックして[ActiveX コントロールの取り込み]を選択します。
  2. [ActiveX の取り込み]ダイアログ ボックスの一覧から、"Pervasive ActiveX Data Source(Version 1.0)" をクリックします。



  3. [インストール]をクリックし、指示に従ってコントロールとそのメンバー用の Delphi のラッパーを生成します。
  4. このインポートの終了後、"Pervasive Bound controls(Version 1.0)" に対して同じ操作を繰り返します。



  5. データ ソース コントロールとバウンド コントロールが、Delphi コンポーネント パレットの[ActiveX]ページに表示されていることを確認します。

Delphi で VAccess コントロールを使用する

  1. このコントロールをフォームまたはデータ モジュールに追加します。
    1. Delphi IDE で、ActiveX インターフェイスを含むコンポーネント パレットのタブをクリックします。デフォルトでこのタブは、[ActiveX]という名前になっています。ActiveX のアイコンがパレットに表示されます。



    2. コントロールを選択してクリックします。
    3. フォーム上で、コントロールを挿入する場所をクリック、またはマウスをドラッグしてコントロールのサイズと形を指定します。
  2. このコントロールの Btrieve File プロパティを設定します。
    1. VAccess コントロールのプロパティ ダイアログ ボックスを開きます。Delphi 3 IDE の場合は、ActiveX コントロールを使用しているフォームを表示させます。コントロールを右クリックしてショートカット メニューから[プロパティ]を選択、またはそのコントロールをダブルクリックします。



      [File Information]タブで、以下のプロパティを設定します。
  3. [Settings]タブをクリックして[IndexNumber]の値を確認します。
  4. ボックスから、Btrieve ファイルのインデックスを選択します。



  5. コードを追加してコントロールを初期化(クリア)します。Delphi のランタイム環境では、フォーム作成中に VAccess コントロールにアクセスしていない限り、バウンド コントロールは正しく初期化されません。
    1. Delphi IDE で、VAccess コントロールを使用しているフォームを選択します。
    2. フォームのバックグラウンドをダブルクリックして FormCreate メソッドのコードを編集します。
    3. エディターで、次のコードの VAccess1 の部分を自分のコントロールの名前に置き換え、プロシージャの begin ステートメントと end ステートメントの間に追加します。
      VAccess1.Clear;


      メモ

      複数の VAccess コントロールを使用している場合は、各 VAccess コンポーネントに対して次のようなステートメントを begin ステートメントと end ステートメントの間に追加する必要があります。


      VAccess2.Clear; 
      VAccess1.Clear; 
      
  6. Extended オペレーションを使用するかどうかを選択します。
    1. VAccess コントロールのプロパティ ダイアログ ボックスを開きます。
    2. [Extended Operations]タブをクリックします。Extended オペレーションを開く場合は、[ExtendedOps]チェック ボックスをオンにし、使用しない場合は、このチェック ボックスをオフにします。



  7. 必要に応じて、初期化クエリのコードを追加します。
    1. 再度フォームを選択し、[オブジェクト インスペクタ]の[イベント]タブをクリックします。
    2. "OnActivate" イベントの横にあるボックス内でダブルクリックし、新しい FormActivate イベント ハンドラーを作成します。この操作により、コード エディターも使用可能になります。
    3. 次のコードの VAccess1 の部分を自分のコントロールの名前に置き換え、プロシージャの begin ステートメントと end ステートメントの間に追加します。
      VAccess1.GetFirst(0);. 
      

VAList ボックス コントロールを使用する

  1. フォームにコントロールを追加します。このコントロールをフォームまたはデータ モジュールに追加します。を参照してください。
  2. バウンド コントロールの VAccess プロパティを設定します。
    1. バウンド コントロールのプロパティ ダイアログ ボックスを開きます。
    2. [VAccessName]ボックスの矢印をクリックします。
    3. ドロップダウン リストからコントロールを選択します。



  3. 表示させるフィールドを選択します。
    1. 1 つのフィールドを表示させる場合は、[VAFieldName]ボックスの矢印をクリックします。ドロップダウン リストからフィールドを選択します。
    2. 複数のフィールドを表示させる場合は、[VAFieldName]ボックスのテキスト フィールドをクリックします。表示させるフィールドをセミコロン(;)で区切って入力、または[VAFieldName]ボックスの横の[...]ボタンをクリックしてダイアログ ボックスからフィールドを選択します。
  4. 列幅を設定します。
    1. [ColumnWidth]ボックスの横にある[...]ボタンをクリックします。
    2. 編集ボックス内で、VAList ボックスの最初の列の任意の右端をダブルクリックします。最後の列以外のすべての列に対してこの操作を繰り返します。この操作の終了後は、列の線を新しい位置までドラッグできます。



  5. VAAutoScroll プロパティを設定します。
    このプロパティを False に設定することにより、リストがオートフィル レコード リストとして使用されている場合(VARecordList = True)、リスト内で現在選択されている項目が、自動的にそのリストの一番上にスクロールされなくなります。
    レコード リスト VAList ボックスのデフォルト(VARecordList = True)の動作では、リスト ボックスやその他の方法(スクロール バーや GetEqual コマンドなど)によって位置が変更された場合でも、現在のレコードが必ずリストの一番上に表示されます。
    VAAutoScroll が False の場合、このデフォルトは無効になり、リスト ボックス自体以外のソースによって位置が変更された場合にのみ、現在のレコードがリストの一番上に表示されます。たとえば、リスト ボックス内の項目をクリックすると VAccess コントロールの位置が変更されますが、リスト ボックス内の項目の位置は変更されません。
  6. VARecordList プロパティを設定します。
    このプロパティを True に設定した場合は、リスト ボックス コントロールまたはコンボ ボックス コントロールのモードが、フィールド連結コントロールからレコード ブラウザーに切り替わります。
    VARecordList プロパティにより、できるだけ多くのレコードをリスト コントロールに入力することが可能になります。リスト内の一番上の項目は、現在のレコードです(ただし、VAAutoScroll プロパティが False に設定されている場合は、選択されているリスト項目が現在のレコード)。
    VARecordList = True の場合は、追加機能を使用することができ、この追加機能には、設計時にプロパティ ページのボタンを使用してアクセスできます。VAFieldName プロパティおよび VAFormat プロパティには、それぞれセミコロンで区切られたフィールドと書式のリストを含めることができます。ただし、コントロールがフィールド バウンド モードの場合(VARecordList プロパティが False の場合)は、1 つのエントリに制限されます。また、VAAutoScroll プロパティと ColumnWidth プロパティが使用可能になります。

VAText コントロールを使用する

  1. コントロールをフォームに追加します。このコントロールをフォームまたはデータ モジュールに追加します。を参照してください。
  2. バウンド コントロールの VAccess プロパティを設定します。を参照してください。
    1. バウンド コントロールのプロパティ ダイアログ ボックスを開きます。
    2. [VAccessName]ボックスの矢印をクリックします。
    3. ドロップダウン リストからコントロールを選択します。



  3. VAFieldName プロパティを設定します。
    1. バウンド コントロールのプロパティ ダイアログボックスを開きます。
    2. [VAFieldName] ボックスの矢印をクリックします。
    3. ドロップダウン リストからフィールドを選択します。
  4. VASearch プロパティを設定します。
    このプロパティを True に設定した場合、VAccess コントロールは、データ ソースのIndexNumber プロパティによって指定されたインデックスの最初のセグメントのテキスト ボックスの値を使用し、そのテキストが変化するごとに GetGreaterOrEqual メソッドを実行します。VAFieldName プロパティの設定は、無効になります。
    1. バウンド コントロールのプロパティ ダイアログ ボックスを開きます。
    2. このプロパティを True に設定する場合は、[VASearch]チェック ボックスをオンにします。
    3. False に設定する場合は、このチェック ボックスをオフにします。



2 つの VAccess コントロールを結合する

VAccess コントロールの Join プロパティにより、キー値を使用して 2 つのファイルをリンクさせることが可能になり、たとえば、最初の(マスター)ファイルでのレコードの位置を変更した場合、その変更は 2 番目の(スレーブ)ファイルから取得されたレコードにも反映されます。Join プロパティは、リレーショナル データベースを参照するための簡単な機能を提供します。

スレーブ コントロール内の結合されたフィールドは、インデックス フィールドである必要があります。またこのフィールドのデータは、マスター コントロール内の対応するフィールドと同じ未処理データである必要があります。マスター コントロール内のフィールドは、インデックスである必要はありません。スレーブ コントロールの IndexNumber プロパティは、この結合に関連があるインデックスに設定されたままであることが条件で、設定されていない場合、この結合は解除されます。

1 対 1、多対 1、1 対多のすべての結合が使用できます。スレーブ VAccess コントロールの ExtendedOps プロパティが True に設定されている場合は、1 対多の関係が最も有効です。この場合、スレーブ コントロールは、キー値に一致するすべてのレコードをマスター コントロールから自動的に取得し、その RowColumnValue プロパティからフィールド データにアクセス可能になります。このデータは、VAccessName プロパティをスレーブ コントロールの名前に、また VAFieldName プロパティを表示されるフィールドにそれぞれ設定することにより、レコード リスト モードで VAList ボックスに表示させることができます。

  1. スレーブ コントロールの Join プロパティを設定します。
  2. スレーブ コントロールのプロパティ ダイアログ ボックスを開きます。
    Delphi 3 IDE では、ActiveX コントロールを使用しているフォームを表示させ、そのコントロールを右クリックしてショートカット メニューから[プロパティ]を選択、またはそのコントロールをダブルクリックします。
  3. [File Information]タブの[Join]をクリックします。
  4. [To VAccess]ボックスの矢印をクリックします。
  5. ドロップダウン リストからマスター ファイルを選択します。
  6. [Where]ボックスで、マスター ファイルをリンクさせるスレーブ ファイルのインデックスを選択します。
  7. [Fields]ボックスで、スレーブ ファイルのリンク先となるマスター ファイルのフィールドをダブルクリックします。
  8. [OK]をクリックして[Join Controls]ダイアログ ボックスを閉じます。

Pervasive PSQL を Delphi で使用

レッスン 2:Delphi で Btrieve API を使用する