またまたお世話になります。
Access2000+VB.NET2003です。
サブフォームを使ってデータを入力しているのですが、メインフォームはテキストボックスやコンボボックスを使っているので、FEPの設定はできるのですが、サブテーブル入力にはデータグリッドを使って直接データを入力しているので、いちいち(日本語←→英数)を切り替えねばならず不便してます。
カーソルがそのフィールドにいったとき、漢字入力が必要なFEP on、不必要ならoffになるように予め設定しておくってできないのでしょうか?
もしいい方法がありましたらご教示ください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
このスレが役に立つと思います。
http://okwave.jp/kotaeru.php3?q=2142818
http://okwave.jp/kotaeru.php3?q=2062060
DataGridTextBoxColumnを作成しつつ、その中のDataGridTextBoxに対しIMEを設定することができます。
'----------------------------------------------------------------------------
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'--データテーブル構造作成
Dim dt As New DataTable("aaa")
dt.Columns.AddRange(New DataColumn() { _
New DataColumn("日付", GetType(DateTime)), _
New DataColumn("整数", GetType(Integer)), _
New DataColumn("半角", GetType(String)), _
New DataColumn("全角", GetType(String)) _
})
'--データテーブルへデータを追加
dt.Rows.Add(New Object() {System.DateTime.Now.AddDays(0), 1000, "A", "あ"})
dt.Rows.Add(New Object() {System.DateTime.Now.AddDays(1), 2000, "B", "い"})
dt.Rows.Add(New Object() {System.DateTime.Now.AddDays(2), 3000, "C", "う"})
dt.Rows.Add(New Object() {System.DateTime.Now.AddDays(3), 4000, "D", "え"})
dt.Rows.Add(New Object() {System.DateTime.Now.AddDays(4), 5000000, "E", "お"})
'--データグリッドへ反映
DataGrid1.DataSource = dt
'データグリッドテーブルスタイルの設定
Dim ts As New DataGridTableStyle()
ts.MappingName = dt.TableName
ts.GridColumnStyles.AddRange(New DataGridColumnStyle() { _
取得_TextBoxColumn日付(dt.Columns(0), 120), _
取得_TextBoxColumn整数(dt.Columns(1)), _
取得_TextBoxColumn文字(dt.Columns(2), , ImeMode.Disable), _
取得_TextBoxColumn文字(dt.Columns(3), , ImeMode.Hiragana) _
})
DataGrid1.TableStyles.Add(ts)
End Sub
#Region "TextBoxColumn関係"
#Region "TextBoxColumn関係:日付用"
Private Function 取得_TextBoxColumn日付( _
ByVal p_dc As DataColumn, _
Optional ByVal p_width As Integer = -1 _
) As DataGridTextBoxColumn
Dim l_tbc As DataGridTextBoxColumn = 取得_TextBoxColumn(p_dc, p_width, HorizontalAlignment.Left, ImeMode.Disable)
'--日付用の書式を設定
l_tbc.Format = "yyyy/MM/dd hh:mm:ss"
Return l_tbc
End Function
#End Region
#Region "TextBoxColumn関係:整数用"
Private Function 取得_TextBoxColumn整数( _
ByVal p_dc As DataColumn, _
Optional ByVal p_width As Integer = -1 _
) As DataGridTextBoxColumn
Dim l_tbc As DataGridTextBoxColumn = 取得_TextBoxColumn(p_dc, p_width, HorizontalAlignment.Right, ImeMode.Disable)
'--整数用の書式を設定
l_tbc.Format = "#,###"
Return l_tbc
End Function
#End Region
#Region "TextBoxColumn関係:文字用"
Private Function 取得_TextBoxColumn文字( _
ByVal p_dc As DataColumn, _
Optional ByVal p_width As Integer = -1, _
Optional ByVal p_ImeMode As ImeMode = System.Windows.Forms.ImeMode.NoControl _
) As DataGridTextBoxColumn
Dim l_tbc As DataGridTextBoxColumn = 取得_TextBoxColumn(p_dc, p_width, HorizontalAlignment.Left, p_ImeMode)
Return l_tbc
End Function
#End Region
#Region "TextBoxColumn関係:汎用"
'直接このメソッドを利用してもよいが、利用したい型毎にメソッドを作成し、そこから呼んだ方がよいかも?
'もしくは別クラスを作成し、このメソッドを継承させるとか
Private Function 取得_TextBoxColumn( _
ByVal p_dc As DataColumn, _
Optional ByVal p_width As Integer = -1, _
Optional ByVal p_Alignment As HorizontalAlignment = HorizontalAlignment.Left, _
Optional ByVal p_ImeMode As ImeMode = System.Windows.Forms.ImeMode.NoControl _
) As DataGridTextBoxColumn
Dim l_tbc As New DataGridTextBoxColumn()
With l_tbc
.MappingName = p_dc.ColumnName 'データテーブルとリンクする項目を指定
.HeaderText = p_dc.ColumnName 'ヘッダ
.Width = p_width '幅
.Alignment = p_Alignment '右/左/中央寄せ
End With
l_tbc.TextBox.ImeMode = p_ImeMode 'IMEの設定
Return l_tbc
End Function
#End Region
#End Region
この回答への補足
1050YENさん いつもありがとうございます。
解決に大きく近づきました。
参考にURLを教えていただいて見てみると、「データグリッドにコンボボックス」というのがありましたが、これもやりたかったのですが途中でギブアップしていた項目でした。
早速参考にさせていただきます。
ただ私の場合、明細伝票の数が一定せず、その都度行が増えていくのですが、この場合でも自動的にコンボボックスは表示されるのでしょうか?
新しい質問になってしまいましたがよろしくお願いいたします。
No.2
- 回答日時:
>その都度行が増えていくのですが
Rowが増えるということであれば大丈夫ですよ^^
Excelに例えて説明すると、、、
DataGridTextBoxColumnは、A列・B列・C列・・・・・という列に対し書式を設定を設定する方法です。
A列全体に書式設定を行うと、縦方向のセルはその書式に従いますよね?それと一緒ですよ。
参考URLのサンプルとかを、実行してみたらわかると思いますよ^^
ありがとうございます。
これで格段に前進することができます。
プログラムするって楽しいですね。
(まだそんな段階ではないのですが)
今後もよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Windows 10 MicrosoftIMEでトラブル、助けてください m(_._)m 4 2023/05/16 14:11
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- テレビ プレステ5が映らなくりました 1 2023/07/13 11:09
- Excel(エクセル) Excel ドロップダウンリスト(入力規則)に関してです データの入力規則で元データ79000行のド 3 2023/07/17 10:06
- 中国語 新しい中国語入力ソフトを発明しました 22 2023/02/06 07:13
- その他(ソフトウェア) ジャストシステムのATOKについて 1 2023/03/18 14:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBAで、EXCELの入力規則...
-
ActiveReportのDataSourceについて
-
登録済みイベントリスナーの情...
-
漢字読み取得方法
-
strutsで空白を認識させるには?
-
ActiveWorkbook.Pathの一つ下の...
-
javascriptでローカルフォルダ...
-
log4jでログレベルが取得できな...
-
三菱GOTの画面切り替えについて
-
フォーム上で押されたボタンに...
-
リクエストに応じたselectedの...
-
C言語で今まで表示していた画面...
-
腕時計の時報をならないように...
-
漏電遮断器の黄色ボタンと白色...
-
ボタンが活性化の場合とは、ボ...
-
「<c:forEach タグが終了し...
-
Strutsで画面遷移させない。
-
FormのsubmitでFormの内容がnull
-
C# ログイン画面からメイン画面...
-
[JSP]1Servletから複数フレーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ActiveWorkbook.Pathの一つ下の...
-
VBAでTIFF画像を読み込むには?
-
Excelで可視セルの行番号取得
-
EXCEL VBAで、EXCELの入力規則...
-
登録済みイベントリスナーの情...
-
ActiveReportのDataSourceについて
-
log4jでログレベルが取得できな...
-
エクセルVBAでホームページの文...
-
Formatでmmが月と分を意味する理由
-
Spreadでの複数行選択
-
自分のファイル名取得
-
WebBrowserに表示されているペ...
-
漢字読み取得方法
-
vbaで、オートシェイプ文字列、...
-
jsp 動的テーブルについて
-
javascriptでローカルフォルダ...
-
strutsで空白を認識させるには?
-
JSON input 一覧表示
-
ドラッグ&ドロップについて
-
C++のDLLでコマンドライン引数...
おすすめ情報