セレクタトリガに文字列を設定する
Top > Tips > SelectorTrigger

セレクタトリガは、タップすることにより何らかの選択画面やリストを表示し、 選択された結果を表示するコントロールですが、 選択された結果の表示は自前でやる必要があります。

セレクタトリガに文字列を設定するには、 CtlGetLabel関数 によりラベル文字列のポインタを取得し、 文字列をコピーします。
これでセレクタトリガに文字列を設定することができるのですが、 セレクタトリガを文字列の幅に合わせるために、 CtlSetLabel関数 を呼び出す必要があります。

セレクタトリガの横幅を可変にする必要が無いならば、 FrmCopyLabel関数 を使用する方が簡単です。

サンプル画面

ヘッダファイル
#define MainForm            1000
#define SelectorTrigger     1001

リソースファイル
FORM ID MainForm AT (0 0 160 160)
NOFRAME
BEGIN
  TITLE "SelectorTrigger"
  SELECTORTRIGGER "99/99" ID SelectorTrigger AT (2 17 152 AUTO) FONT 0
END

イベントハンドラー
Boolean MainFormHandleEvent(
    EventPtr pEvent)    /* I:イベント */
{
    Boolean     handled = false;
    FormPtr     pForm;
    ControlPtr  pCtrl;
    CharPtr     pLabel;

    switch (pEvent->eType)
    {
    case frmOpenEvent:     /* フォームオープンイベント */
        pForm = FrmGetActiveForm();

        pCtrl = FrmGetObjectPtr(pForm, FrmGetObjectIndex(pForm, SelectorTrigger));
        pLabel = (CharPtr)CtlGetLabel(pCtrl);
        StrCopy(pLabel, "2/17");
        CtlSetLabel(pCtrl, pLabel);

        FrmDrawForm(pForm);
        handled = true;
        break;

    default:
        break;
    }

    return handled;
}

'06/2/17 新規作成