C#:SPREADのセルに入りきらない文字をポップアップする

C#, ITSPREAD

SPREADにおいて【備考】列など長い文章が入る列の場合、
文章がセルに入りきらないケースが多々あります。
セルを複数行表示できるように変更する方法もありますが、
そうすると行の高さがバラバラになり美しくありません。
マウスオーバーすると入りきらなかった文章がポップアップするように設定していきます。


マウスオーバーでポップアップするようSPRADを設定

//マウスオーバー時セルの左上にポップアップ
SPREAD名.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.Fixed;
//セルにフォーカスがある状態でマウスオーバー時、セルの左上にポップアップ
SPREAD名.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.FixedFocusOnly;
//マウスカーソル位置にポップアップ
SPREAD名.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.Floating;
//セルにフォーカスがある状態でマウスオーバー時、マウスカーソル位置にポップアップ
SPREAD名.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.FloatingFocusOnly;
//セルに入りきらない文字をポップアップしない
SPREAD名.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.Off;

デフォルトはOffのポップアップしない設定になっているので、
SPREAD名.TextTipPolicyをOff以外に設定してあげれば、
セルに入りきらない文章をポップアップするようになります。
個人的に好きなのはFloating。
セルにフォーカスがないとポップアップしてくれないのはけっこう不便なため、
FixedFocusOnlyとFloatingFocusOnlyはお勧めしません。


マウスオーバーからポップアップテキストを表示するまでの時間の設定

SPREAD名.TextTipDelayプロパティに数値(ミリ秒)を設定することで調整できる。

//マウスオーバー時、
//ポップアップテキストを表示するまでの時間を100ミリ秒に設定
fpSpread1.TextTipDelay = 100;

ポップアップテキストが一定の幅を超えた場合、複数行にしたい


デフォルトの設定だと、
ポップアップテキストは一行で全てを表示しようとします。
上図のような感じです。
一行が長くなると見辛いのである程度の長さで折り返したくなります。
その場合、文字をポップアップした時に発生するイベントを使用することで、
ポップアップ表示部をカスタマイズして対処します。

対象SPREADを選択し、
イベントのTextTipFetchをダブルクリック。
作成されたイベントハンドラの中身を弄っていきます。

private void SPREAD名_TextTipFetch(object sender, FarPoint.Win.Spread.TextTipFetchEventArgs e)
{
    //ポップアップテキストの幅が300を超えたら
    if (e.TipWidth > 300)
    {
        //ポップアップテキストを複数行表示する。
        e.WrapText = true;
        //ポップアップテキスト幅を300に設定
        e.TipWidth = 300;
    }
}

イベントハンドラの引数であるFarPoint.Win.Spread.TextTipFetchEventArgsを弄ることで、
ポップアップテキストのカスタマイズができます。
上記の例だと、テキスト幅が300を超えたら複数行表示しています。


まとめ

セルに入りきらない文字を表示してよ、という要望は、
お客様からよく挙がるので覚えておいて損はしないと思います。

C#, ITSPREAD

Posted by raishin