スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[VB.NET] バーコードプリンタでデバイスフォントを使って印刷しようとしてもフォントを認識してくれないでござる

やりたかったことは、Visual Basic (2008) 経由で、
プリンタがもってるデバイスフォントを使って印刷をしたかったのです。

方法としては、単純に PrintDocument を使っています。

印刷関連: 印刷ダイアログを表示
http://www.feedsoft.net/vb/print/print_4.html

いたってシンプルです。フォントはデバイスフォントを指定します。

が、実際印刷されるのはそのデバイスフォントでの出力ではなく、どうも
デフォルトのもので印刷されているもよう。"123456789" などと出力文字列を
指定しても、そのバーコードではなく、"123456789" と文字がそのまま印字されます。

あれこれ試したもののわからず、メーカに問い合わせたところ、.Net になってから
デバイスフォントを指定しての印刷はできなくなったとのこと。まじか!

OpenType フォントと TrueType フォントだけがサポートされている
http://msdn.microsoft.com/ja-jp/library/f0235t8f.aspx

Visual Basic 6.0 では下位互換性を確保するために標準フォントがサポートされていましたが、Visual Basic 2008 では TrueType フォントと OpenType フォントだけがサポートされています。このコントロールまたはフォームのフォントは、既定の OpenType フォントである Microsoft Sans Serif に変更され、太字や斜体などの書式は失われています。


まじでした。

プリンタフォントを用いた印字プログラム開発の際の注意事項
http://www.feedsoft.net/vb/print/print_4.html

原因として、.Net Frameworkではグラフィック処理の仕様が変更され、デバイスフォントが使用できなくなったことが原因です。


というわけで、VBベースでいうと .Net でのコーディングは諦めて VB6 で開発するとか、

VB-BarCode .NET
http://www.adv.co.jp/products/product_VB-BarCodeNET.htm

.NET Framework環境に完全対応した、バーコード生成コンポーネント「VB-BarCode .NET」がついに誕生しました。これからは、.NETアプリケーション上でも高速、簡単に、高精度なバーコードを生成することができます。わずかなコーディングで、QRコード、PDF417といった2次元バーコードをはじめ、主要な1次元バーコード、郵便カスタマバーコードを生成することができます。


こういうものを利用するしかない、というわけですね、わかります。
あとは、バーコードフォントをそもそもPCにインストールするとか。

今回初めて知りましたけど、けっこう常識な話なんですかね?
上記のコンポーネントの説明にも、「これからは、.NETアプリケーション上でも」
みたいに、それを前提みたいなもの言いなので・・・。



バーコード印刷Pro2バーコード印刷Pro2
(2008/03/06)
Windows

商品詳細を見る


VB-BarCode.NETVB-BarCode.NET
(2002/10/25)
Windows

商品詳細を見る
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

タグ : バーコード VB.NET

[VB.NET] DataGridView のコンボボックスのセルをフォーカス時に自動的にドロップダウンさせたい

やりたいことはタイトルそのままです。
DataGridView の中のコンボボックスでフォーカスがあたっただけでは、その内容がドロップ展開されないので、すぐには選べないわけですね。
キーボードでオペレーションをしているときには、すぐにドロップされて上下キーで選択を行いたいところです。

検索してみると、そのままズバリのものが見つかったのですが、

DataGridViewのComboBoxを自動的にドロップダウンさせたいのですが
http://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/thread/a1173289-8674-4b68-aca8-ac02559a5c9d

どうもこれがうまくいかない、というか思っていた動きと違う。
読んで理屈はわかるのですが、コンボボックスのセルにフォーカスが当たっただけではEditingControlShowing() のイベントが走ってくれないので、この動作が駆動されないわけです。

いろいろ試行錯誤してみるものの、CellEnter() にいろいろ処理を書くと駆動されて処理には入ってくれるものの、肝心の DroppedDown に true を与えるのがうまくいかない。原因としては、エディットコントロールをうまく操作する手立てがわからないため。

で、またいろいろ調べて答えに限りなく近いものを見つける。

DataGridViewのコンボボックスを1クリックでドロップダウン表示させたい
http://uenomemo.blog31.fc2.com/blog-entry-208.html

このソースは C# なんですかね?(よくわかっていない)
でもミソなところは一発でわかる簡潔なソースなのでほぼ答え発見。

そのままではエディットコントロールを取れないのなら、エディットモードにしてあげればいいじゃない! いいじゃない! じゃない!(残響音)
というわけで、VB.NET のソースで書くとこんな感じです。

Private Sub DataGridView1_CellEnter(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
Handles DataGridView1.CellEnter

'エディットコントロール
Dim edt As DataGridViewComboBoxEditingControl

'コンボボックスであれば処理開始
If TypeName(Me.DataGridView1.Item(e.ColumnIndex, e.RowIndex)) = _
"DataGridViewComboBoxCell" Then
'編集モードにする
Me.DataGridView1.BeginEdit(False)
'編集モードにすることでエディットコントロールを得られる
edt = Me.DataGridView1.EditingControl
'ドロップダウンを真にする
edt.DroppedDown = True
End If

End Sub



追記:拍手コメントお返事(2010/03/03)
お役にたてたなら何よりです。拍手ありがとうございます。
検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。