Tips

4D Serverでコンポーネントメソッドを実行する方法

日付2009/06/26
ID75811 (英語原文参照)
バージョン11.4
プラットフォームMac & Win

4D Serverでコンポーネントメソッドを実行する方法はいくつか存在します。まず、ホストデータベースのメソッドからコンポーネントメソッドを呼び出すのであれば、ホストデータベースをメソッドを普通に呼び出すように、Execute on server関数でそのコンポーネントメソッドを実行します。

もし、あるコンポーネントメソッドから別のコンポーネントメソッドを呼び出し、しかも4D Serverで実行するのであれば、次のいずれかの方法が考えられます。

1. コンポーネントメソッドでExecute on serverを使用して別のコンポーネントメソッドを実行する。

2. メソッドプロパティの「サーバで実行」を有効にする。

たとえば、コンポーネントにふたつのメソッド、MC_execute_on_serverとMC_Method1が存在したとしましょう。ホストデータベースはMC_Method1を実行し、次いでMC_Method1がMC_execute_on_serverをサーバで実行するという構図です。

MC_execute_on_serverには簡単なコードが記述されています。

` MC_execute_on_server method
` brings up an alert on 4D Server
ALERT("Hello ON SERVER from my component!")

前者の方法を採用するのであれば、これを呼び出すMC_Method1は次のようになります。

C_LONGINT($proc)
$proc:=Execute on server("MC_execute_on_server";128000;"server_proc_from_component")

この場合、MC_execute_on_serverは「コンポーネントとホストで共有する」設定になっていなければなりません。

一方、後者を採用するのであれば、「コンポーネントとホストで共有する」設定は不要であり、その代わりに「サーバで実行」プロパティを有効にすることになります。そしてMC_Method1は次のようになります。

MC_execute_on_server

コードはシンプルになりますが、MC_execute_on_serverはかならずサーバで実行されるメソッドになります。この場合、MC_execute_on_serverは、ホストデータベースと共有する必要がないので、ホストデータベースからは隠されたメソッドにすることができます。