複数行のイベント

イベントの情報を2行以上表示するには、どのようにしますか?

シードコードカレンダーは以下の通り、複数行のイベントの表示をサポートしています。

動作や使い方の概要を以下に記載します。

概要

ポイントは、改行を含むフィールドを「Source No X」レイアウト上の「Summary」に割り当てることです( 統合の11.3でこの設定が済んでいます)。リターンを含むフィールドは、扱いが異なり、複数行を表示できます。

上に示すスクリーンショットでは、連絡先の名前、電話番号、メールアドレスが、それぞれ改行で区切られている計算フィールドを割り当てています。カレンダーでイベントを表示する際には、イベントに十分な表示スペースがあればそれぞれが別の行に配置されます。

注意:summaryに複数行のフィールドを割り当てると、1行だけのフィールドの場合よりもどうしても処理速度が落ちます。また計算結果を保存しないフィールドをsummaryとして割り当てると、計算結果を保存するフィールドよりも処理速度が落ちることがあります。ホスティングサービス業者からインターネット経由でカレンダーを開くときにおそらく速度が遅くなる傾向がありますが、それほど問題にはならないかもしれません。ただし、サーバやホストの動作をテストしてください。

イベントに時間が設定されていない(終日のイベントである)場合や、表示しているタブに継続時間が表示されていない場合(シンプル表示や「月」表示には表示されません)には、表示が異なります。割り当てたフィールド中の改行は「...」で置き換えられ、割り当てたフィールドの内容全体が1行で表示されます。「月」表示では内容が一部しか見えないかもしれません(フィールドの幅が短いため)が、「Simple Day」表示ではおそらくもっと多くの内容が表示されるでしょう。またどの表示でもマウスのポインタを合わせると、割り当てたフィールドの内容全体がポップアップヒントとして表示されます。

自分でこのように設定したい場合は、表示したい情報を含む計算フィールドをイベントのテーブルに作ります。そしてこのフィールドを、「Source No X」レイアウト上の「Summary」に割り当てます。これができたら「pon Opening」スクリプトを実行します。すると変更が反映されます。

計算式についてのアドバイス

できればここで使用する計算式には索引を作成するとよいのですが、このフィールドに対して実際に検索をするわけではないので、索引は必須ではありません。

上のスクリーンショットでは、一部のイベントは1行目に連絡先の名前が表示されています。他のイベントではここにはイベントのタイトルが表示されています。これは、「List()」関数を使ってsummaryに割り当てる計算式を作ることにより実現しています。この計算式は、サンプルファイルの「SampleEvents::z_AlternateSummaryCalc」で確認できます。以下のように設定されています。

List (
        TextStyleAdd ( SampleContacts::NameFull ; Bold ) ;
        SampleContacts::Phone ;
        SampleContacts::Email ;
        Summary ;
        Description
        )

「List()」関数のよいところは、改行の入っているフィールドの内容を、値が空欄である箇所に別のリターンを追加せずに分離することです。したがって上述の計算式では、イベントに関連する内容がない場合、先頭に表示されるのはイベントのSummaryです。

表示を変更する

終日イベントの値の間に別のセパレータを使用したい場合は(デフォルトでは「...」)、「Read iCal Event by Number ( Source ; Number )」スクリプトを編集します。「Summary」のコメントを見つけ、このコメントの後にある「Set Variable」ステップで、「separator」に割り当ててある値を編集します。

制限

カレンダーには、イベントの長さが十分であれば、summaryに割り当てられているフィールドの中にあるリターンで区切られたそれぞれの値が、それぞれの行に配置されます。値のうちの1つが長い文章である場合、カレンダーはこれを複数行に分割することはありません(画面、ひいてはカレンダー上のフィールドは、任意の幅にできるからです)。そのため、Summaryに割り当てたフィールドに長文の行がある場合、先頭の一部だけが表示されます。ただし、その行にマウスのポインタを合わせると、残りの部分がポップアップヒントとして表示されます。