2007年12月22日

既存アプリのVista対応・改造計画:追加「文字化けの解消」

VB6で作った自作ソフトがVistaで動作上は何の問題もないが、フォントの一部が文字化けしてしまうのに気がついた。運用環境だけでなく、VB6の開発環境でさえそうなる。

「管理者として実行」すれば文字化けしないが、UACダイアログが起動時に毎回表示されるのは煩わしい限りだ。
いろいろ試行錯誤してみると、フォントを標準(規定)の「MS Pゴシック」から「MS ゴシック」にすると文字化けしなくなるのに気が付いた。文字化けしたコントロールを一つ一つ「MS ゴシック」に変更したところ文字化けは解消された。

これが原因かと考えてみるがフォントファイルは「MS Pゴシック」も「MS ゴシック」も一つのファイルでそれ自体に差異があるとは考えられない。また、この調子ですべてのソースを変更するのも面倒だ。

一体何が原因なのか。散々調べ上げた挙句ようやくわかった。

結論はこうだ。
コントロールのフォント指定でCharset=128が無いと文字化けするということだ。
規定の「MS Pゴシック」から「MS ゴシック」に変更すると自動的にCharsetを含む「BeginProperty Font」セクションが追加される。
フォームのソースファイル(.frm)を見るとわかるが、規定フォントの場合この「BeginProperty Font」セクション自体が無い。

つまりコンテナであるフォームのフォントを継承していると考えられる。であればコントロールを一つ一つ変更しなくてもフォームのフォントにCharset=128を追加することで文字化けが解消できるのではと考えたところ大正解。いっぺんに文字化けは解消した。


1.文字化けしている様子。
文字化けしている

2.フォームのフォント指定ダイアログを表示して「OK」するだけで「BeginProperty Font」セクションは作成される。
Fontの強制指定

3.「BeginProperty Font」セクション
フォームのソース内容

4.文字化けが解消された様子。
文字化けが直った
posted by なっちゃん at 11:58| 静岡 ????| Comment(0) | TrackBack(0) | Windows Vista | このブログの読者になる | 更新情報をチェックする

2007年12月10日

データソースで取得したレコードの件数を知るには

ASP.NETでよく使うGridViewのページング機能では、何ページあるかおおよそ分かっても、全レコード数が幾つあるかは分からない。

そこで全レコード数を取得する必要があるが、そのためだけにデータベースにアクセスするのは避けたい。そこで調べたところ便利な機能があった。

GridViewではSqlDataSourceをバインドしてデータを取得するが、このデータソースのSelectイベントのなかで表示される全レコード数が取得できる。

Dim recCount as Long
Protected Sub SqlDataSource1_Selected(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)
recCount = e.AffectedRows
End Sub

e.AffectedRows をヘルプで調べると「データベース操作の影響を受けた行の数を取得」とある。
あとは、GridViewのDataBoundイベントのなかで取得した値を表示する処理を追加するだけである。
posted by なっちゃん at 11:56| 静岡 ????| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする