Spreadのテキストセルで入力する文字数をバイト数で制限する方法について、
Shift-JISエンコーディングのバイト配列処理メソッドを使って行います。
バイト数制限というのは、ほぼShift-JISに由来する考え方で、 データベースの文字列定義をShift-JISにしておくと オラクルのVARCHAR2のデータ型でもバイト数制限は必要でした。
以下にソースを示しますが、少し説明します。
最初にフォームロード時に、Shift-JISの文字エンコーディングを生成し、 Spreadの編集モードセルのテキスト変更時イベント処理と、 データモデルに変更時イベント処理を宣言しています。
また、両方のイベントで使う、文字列の最後の漢字の泣き別れを防ぐ関数導入しました。 既に入力された文字が"あいうえ1"の場合に、さらに漢字で"お"と入力されても "お"の文字の前半分が残らない様にしています。
最後の「漢字の泣き別れ」処理関数ですが、 上の例で既入力が"あいうえ1"でさらに漢字で"お"と入力した場合は、 2行目の str は"あいうえ1・"となり、 最後の文字が漢字の中点になってしまいます。
結果 GetByteCount すると1バイト増えて nLen よりも必ず大きい値になります。 それでこの場合に、最初にバイト配列化した長さを nLen-1 にして文字列化することで "あいうえ1"となります。
■関連記事
.NET開発テクノロジ入門2016年版Visual Studio 2015対応版
⇒VB.NET:SpreadでのEnter時にセルを右移動させる方法
⇒VB.NET:Spreadでフォーカスを持っていない時にセル枠を表示しない設定
⇒VB.NET:Spreadのヘッダカラム及び、通常のカラムの連結
⇒VB.NET:Spreadのシートへの簡単な一覧データの設定について
⇒VB.NET:Spreadのシートのセルにボタン、テキスト、チェックボックスのセルタイプの設定
⇒VB.NET:Spreadのセルのボタンクリック時のイベント処理
⇒VB.NET:Spreadのセルへのデータ設定の描画速度アップ
⇒VB.NET:Spreadのセルのチップウインドウで別に設定された文字列を表示する
⇒VB.NET:Spreadでデータ一覧表示を簡単に行う方法について
⇒VB.NET:Spreadデータ一覧表示での行選択処理(CellDoubleClickイベント , KeyDownイベント)
⇒VB.NET:Spreadデータ一覧表示での行選択処理(CellDoubleClickイベント , KeyDownイベント)その2
⇒VB.NET:Spreadデータ一覧表示での自動ソート実行時に複数のソート条件を指定する方法について
⇒VB.NET:Spreadで異なるSPREADコントロール間でシートデータのコピーを行う方法
⇒VB.NET:SpreadでのCSV出力とCSV入力を使って、異なるSPREADコントロール間でシートデータのコピーを行う方法
⇒VB.NET:SpreadシートのPDF出力と表示を行う方法
⇒VB.NET:2個のSpread間での[Enter]キー、矢印キーなどでフォーカス移動を行う方法
⇒VB.NET:Spreadの数値セルタイプを使ってデータメンテナンスのプログラムに使う方法
⇒VB.NET:Spreadのチェックボックス型セルにはCheckChangedイベントを、ボタン型セルにはClickイベントの発生方法
バイト数制限というのは、ほぼShift-JISに由来する考え方で、 データベースの文字列定義をShift-JISにしておくと オラクルのVARCHAR2のデータ型でもバイト数制限は必要でした。
以下にソースを示しますが、少し説明します。
最初にフォームロード時に、Shift-JISの文字エンコーディングを生成し、 Spreadの編集モードセルのテキスト変更時イベント処理と、 データモデルに変更時イベント処理を宣言しています。
また、両方のイベントで使う、文字列の最後の漢字の泣き別れを防ぐ関数導入しました。 既に入力された文字が"あいうえ1"の場合に、さらに漢字で"お"と入力されても "お"の文字の前半分が残らない様にしています。
最後の「漢字の泣き別れ」処理関数ですが、 上の例で既入力が"あいうえ1"でさらに漢字で"お"と入力した場合は、 2行目の str は"あいうえ1・"となり、 最後の文字が漢字の中点になってしまいます。
結果 GetByteCount すると1バイト増えて nLen よりも必ず大きい値になります。 それでこの場合に、最初にバイト配列化した長さを nLen-1 にして文字列化することで "あいうえ1"となります。
■関連記事
.NET開発テクノロジ入門2016年版Visual Studio 2015対応版
⇒VB.NET:SpreadでのEnter時にセルを右移動させる方法
⇒VB.NET:Spreadでフォーカスを持っていない時にセル枠を表示しない設定
⇒VB.NET:Spreadのヘッダカラム及び、通常のカラムの連結
⇒VB.NET:Spreadのシートへの簡単な一覧データの設定について
⇒VB.NET:Spreadのシートのセルにボタン、テキスト、チェックボックスのセルタイプの設定
⇒VB.NET:Spreadのセルのボタンクリック時のイベント処理
⇒VB.NET:Spreadのセルへのデータ設定の描画速度アップ
⇒VB.NET:Spreadのセルのチップウインドウで別に設定された文字列を表示する
⇒VB.NET:Spreadでデータ一覧表示を簡単に行う方法について
⇒VB.NET:Spreadデータ一覧表示での行選択処理(CellDoubleClickイベント , KeyDownイベント)
⇒VB.NET:Spreadデータ一覧表示での行選択処理(CellDoubleClickイベント , KeyDownイベント)その2
⇒VB.NET:Spreadデータ一覧表示での自動ソート実行時に複数のソート条件を指定する方法について
⇒VB.NET:Spreadで異なるSPREADコントロール間でシートデータのコピーを行う方法
⇒VB.NET:SpreadでのCSV出力とCSV入力を使って、異なるSPREADコントロール間でシートデータのコピーを行う方法
⇒VB.NET:SpreadシートのPDF出力と表示を行う方法
⇒VB.NET:2個のSpread間での[Enter]キー、矢印キーなどでフォーカス移動を行う方法
⇒VB.NET:Spreadの数値セルタイプを使ってデータメンテナンスのプログラムに使う方法
⇒VB.NET:Spreadのチェックボックス型セルにはCheckChangedイベントを、ボタン型セルにはClickイベントの発生方法