Rakuten

  • 楽天ダウンロード

おすすめ本

天気予報

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

カウンタ

VC

admax

カテゴリ「VB.NET」の77件の記事 Feed

2016年7月25日 (月)

DataGridViewで縦スクロールがうまく描画されない時の対処方法

マイクロソフトの標準コントロールである、 DataGridViewで行数のプロパティである「RowCount」に値を再設定しても 縦スクロールがうまく描画されない時があります。

そんな時には「RowCount」に設定する前に、行クリアメソッド「Rows.Clear()」をコールすれば解消する様です。
以下にソースを抜粋します。
基礎Visual Basic 2015 基礎シリーズ

デル株式会社

2016年6月 1日 (水)

ASP.NET:PageRequestManagerクラスによるCSVダウンロードの方法(UpdatePanel)

UpdatePanelの中に設置されたボタンコントロールによりCSVファイルをダウンロードさせるには、少し工夫が必要です。

ボタンクリック時には非同期処理のポストバックが行われますが、このポストバックの直前のタイミングをとらえて、 CSVファイルのダウンロードするページをコールしてやります。

別ページを起動するわけにもいかないので、「iframe」のタグを生成しそのURLにCSVファイルのダウンロードするページ を設定してやります。

以下に、CSVファイルのダウンロードを起動するページのソースを示します。

CSVファイルを実際にダウンロード処理するソースは以下の様になります。 ファイルの内容は例ですので適当な内容にしてあります。

TECHNICAL MASTER はじめてのASP.NET 4 プログラミング Visual Basic編【電子書籍】[ WINGSプロジェクト 土井毅 ]

価格: 2,916円
(2016/09/29 14:03時点 )

感想:0件

デル株式会社

2016年4月29日 (金)

VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

以前、ハンディターミナル側から送受信を行う関数等の記事を掲載してきましたが、 ハンディターミナルの相手側としてのパソコン側のプログラムが必要になります。

パソコン側のファイル送受信用のツールがDLLの形でDENSOさんの方から提供されています。 以下の所にDENSOのURLを貼っておきますので、そちらを参照下さい。

・BHT-BASIC4.0転送ユーティリティ

このユーティリティを購入して、送受信を行うパソコンにライセンス登録が必要です。 プログラムのインストールなどは無く、必要なDLL等を実行プログラムのフォルダに登録します。 この辺りのことは購入後、取説をDENSOからダウンロードし確認してみて下さい。
■VB.NETプログラムの場合の必要なDLL

VB.NETのプログラムの実行フォルダ内に以下のDLL等が必要です。
・Bhtprtdm.dll  -- BHT-BASIC4.0 転送ユーティリティライブラリ
・Bhtprt.ini    -- BHT-BASIC4.0 転送ユーティリティライブラリ設定
・Ymodem_pd.dll -- YMODEMプロトコルライブラリ
・BHTIr_pd.dll  -- BHT-Irプロトコルライブラリ
実際の転送処理で呼出すのはBhtprtdm.dllで、その中の送受信関数(ExecProtocol)を呼出して処理をさせます。
Declare Function ExecProtocol Lib "Bhtprtdm.dll" (_
	ByVal hWnd As IntPtr, _
        ByVal Param As String, _
        ByVal FileName As System.Text.StringBuilder, _
        ByVal Protocol As Integer) As Integer
[引数]
 hWnd	 :DLLを呼び出すウィンドウハンドルを設定
 Param	 :ファイル転送の動作を制御するオプションの文字列
          (1つのファイル名と複数のオプションをスペースで区切った文字列)
 FileName:転送したパス名/ファイル名を格納
 Protocol:プロトコル番号を指定

[戻り値]
 Integer型の値で、0(Er_NOERROR)はエラー無しで、
 0以外は伝送エラー在り
 (エラー内容はDENSO提供のBASICソースを参照)

上記のほかにいろんな指定がありますが、それは各BHTの取説を見てください。
■オプションの文字列
オプション 内容 デフォルト
【伝送速度】
     +B
    
"+B9600"     9600 bps
"+B19200"   19200 bps
"+B38400"   38400 bps
"+B57600"   57600 bps
"+B115200" 115200 bps
"+B230400" 230400 bps
"+B460800" 460800 bps
YMODEM時
"+B115200"

BHT-Ir時
"+B9600"
 
【通信ポート】
 +Pn
+Pn (n = 1 ~ 99)
"+P1"
【フィールド】
 +Fn
 +F
 -F
[+Fn]の場合:"+Fa,b,c..."
 a:フィールド1桁数
 b:フィールド2桁数
 c:フィールド3桁数
 ...
[+F]の場合:既存フィールドファイルによる
  (YMODEMのみ)
 ※受信の場合はフィールドファイルを
    受信しない

[-F]の場合:フィールド指定なし(YMODEMのみ)
 
【伝送方向】
 +R
 -R
"+R" ファイル受信
"-R" ファイル送信
"-R"
【追加書込】
 +A
 -A
"+A" 既存データファイルに追加書込み
"-A" 追加書き込みしない
"-A"
【CR-LFの扱い】
 +C
 -C
"+C" CR-LFをデータとする
"-C" CR-LFをレコードの区切り
"-C"

オプション文字列の一般的な例としては以下の様になります。
送信の場合:"TEST.DAT +P5 +F16,12 -R"
受信の場合:"TEST.DAT +P5 +F16,12 +R"
この場合、YMODEMでの伝送を想定していて、 通信ポートはパソコンにUSB-COMポートを インストールした時に COM5 になったので"P5"としています。
また、フィールド指定は以下の記事のデータファイルを使っています。
・BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
■VB.NETの送受信テストプログラム

上記のオプション例を使った簡単なVB.NETのテストプログラムを以下に示します。

フォームの画面表示は以下の感じです。 送信ボタンと受信ボタンをフォームに配置しそれぞれのボタンクリックで送受信処理を行っているだけです。 受信時のオプションはフィールド指定が無い違いがあります。 24a1
■BHT-BASICの送受信テストプログラム(ハンディ側)

ハンディターミナル側の簡単な受信・送信テストプログラムを以下に示します。
■VB.NETの送受信テストプログラムの実行
送信時の画面は、以下の様にYMODEM送信のダイアログが表示されて、 件数の様な数字がカウントアップします。 24a2
送信処理後に、 TEST.DAT の存在するフォルダを確認すると  TEST.FLD ファイルが作られているのがわかります。 この TEST.FLD ファイルの内容は以下の様にフィールドの定義ファイルの様です。
* created by BHT-BASIC 4.0 Transfer Utility DLL Version 1.14
*   Copyright (C) DENSO WAVE INC. 2001-2013 all rights reserved
file	TEST.DAT
fields	16 12
受信時の画面は、以下の様な表示になります。 24a3
受信後は、ハンディから送られてくる TEST.FLD ファイルが生成される様です。 以下はその内容です。
* created by BHT
file	TEST.DAT
size	150
records	5
fields	16 12

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について


.NET開発テクノロジ入門2016年版Visual Studio 2015対応版

2016年4月 4日 (月)

VB.NET:VisualBasicで役立つ情報が載っているサイト

私自身もプログラムを組んでいて調べ物をするときには、よくGoogleで検索しています。 でもなかなかほしい情報にたどり着くことは難しいものです。 既に先人が解決していて、ネットに載せていればそれを参考にできるのですが。

さて、そんな時に最初に調べるサイトを紹介します。以下のサイトでVisualBasicでの大抵の問題は解決すると思います。

■VBレスキュー(花ちゃん)

http://hanatyan.sakura.ne.jp/

ここは初心者から中級辺りまでの情報が満載です。掲示板もありますので質問もできます。


■DOBON.NET

http://dobon.net/

ここは初心者から上級辺りまでの情報が満載ですし、ソースも完備しています。 掲示板もありますので質問もできます。


■Visual Basic 中学校

http://homepage1.nifty.com/rucio/main/main.htm

このサイトによれば 「対象者はVB初心者。特に小学生、中学生、高校生プログラマを念頭に置いています」 とのことですが、解説はVisualBasicを初めて学ぶ方にとっては非常に分かりやすいと思います。 ここは初心者から中級辺りまでの内容ですが、改めて勉強しなおすには良いサイトです。

■CodeProject

http://www.codeproject.com/

このサイトは英語なのですが、英語だとひるまずに、必要な単語を検索ボックスに入力し検索してみてください。 ほしい情報がヒットするかもしれません。 結構な情報量です。私もたまに利用させてもらっています。
デル株式会社

2016年4月 2日 (土)

VB.NET:アプリケーションのエントリポイント(Mainメソッド)について

アプリケーションのエントリポイントとは、そのアプリケーションが開始した時に、呼び出されるメソッドのことです。

VB.NETでは、Mainメソッドがエントリポイントですが、 WindowsフォームアプリケーションプロジェクトにはMainメソッドが見当たりません。 エントリポイントであるMainメソッドは、コンパイラによって自動的に作成されます。 以下の様にプロジェクトのプロパティ設定で「スタートアップ オブジェクト」を Form1 に 設定すれば自動でMainメソッドが生成され、その中で Form1 を生成し、表示する様になっています。

App1



しかし、 Form1 の表示前に何かをしたいことがある場合、 例えば、アプリケーションの二重起動のチェックだとか、データベースのオープン処理などがあります。 その場合には、新しいモジュールかクラスを追加し、その中に Sub Main を宣言します。 以下は Sub Main をモジュールに宣言したときの例です。
(ファイル名は MainModule.vb としました)


尚、この MainModule を有効にするには、プロジェクトのプロパティ設定で 以下の様にする必要があります。

App2


「アプリケーションフレームワークを有効にする」のチェックを外し無効にします。
無効にすることで、「スタートアップ オブジェクト」のコンボボックスに  MainModule が現れますので、それを選びます。

モジュールではなく、クラスで行う場合は以下の様になります。

このソースの例では、二重起動のチェックを行っていますが、その他、データベースのオープン等 メイン画面が表示される前までに行いたい処理を、初期処理の部分に記述できます。
デル株式会社

2016年3月26日 (土)

VB.NET:ADO.NETを使用したSQL-ServerのテーブルのCSV出力

ADO.NET を使用した SQL-Server のテーブルをCSVファイルに出力する簡単な関数を作成してみました。

CSVファイルを作成する関数への引数は、データベース名とデータソース名と、SQL文、それとCSVファイル名とCSV内のカラムヘッダを 出力するかのフラグになります。

CSV出力処理関数内では SQL-Server への接続をオープンし、指定されたSELECT文を実行します。 SELECT文の結果の行が在れば、1行づつデータを取得します。 初回の行の処理の場合には、リーダーオブジェクトからカラム名を取得しヘッダ行を書き込みます。 その後、各データ行をCSVファイルに書き込みます。 CSVの各データは強制的にダブルクォートで囲む様にしていますので、 データ内のダブルクォートはエスケープ処理しています。


尚、今回のテーブルは以下の生成文で生成しました。

結果的にCSVファイル内容は以下の様になります。


■関連記事
BCPコマンドでUnicode文字形式を使用したデータのインポート及びエクスポート(SQL Server)について
ADO.NET での DataReader の入れ子エラー
ADO.NET を使用した SQL-Server へのアクセス・クラス
SQL-Serverの自動採番(IDENTITY値)の取得・リセット
SQL-Serverのストアド・ファンクションではUPDATEなどが実行できない
SQL-Serverのユーティリティ(BCPコマンド)を利用したテーブルへのインポート・エキスポート
SQL-Serverのプロシージャ生成のバッチ実行
SQL-Serverの関数・プロシージャのVB.NETでの実行

デル株式会社

2016年3月23日 (水)

VB.NET:Spreadのチェックボックス型セルにはCheckChangedイベントを、ボタン型セルにはClickイベントの発生方法

以前のSPREADの以下の記事では、ボタンクリックのイベントとして FpSpread1.ButtonClicked で処理していたため、 ボタンもチェックボックスもボタンイベントとして処理されてしまいました。

■VB.NET:Spreadのセルのボタンクリック時のイベント処理

それで、ボタンはクリックイベントで処理をし、チェックボックスは値が変化したイベントで処理する様にします。
チェックボックス型セルでは編集中のエディタとして FpCheckBox クラスが、 ボタン型セルでは編集中のエディタとして FpButton クラスが使用されます。 それで、それぞれのセルタイプのセルが編集モードに入った時点で、  FpCheckBox  CheckChanged イベントにハンドラを設定し、 さらに FpButton  Click イベントにハンドラを設定します。


下図は、最初、フォームが表示され[Button1]をクリックした時の様子です。

Edit1


その後、Spread上のボタンをクリックした結果が以下の図です。

Edit2


チェックボックスをクリックした結果が以下の図です。

Edit3

■関連記事
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のテキストセルでバイト数入力制限を掛ける方法

Visual Basic 2013逆引き大全 555の極意【電子書籍】[ 増田智明 ]

価格: 2,527円
(2016/09/29 14:32時点 )

感想:0件

デル株式会社

2016年3月22日 (火)

VB.NET:コンボボックスへの項目設定、設定値の取り扱うクラスを作成してみました

標準コントロールのコンボボックス(ComboBox)ですが、このコントロールへの設定値は Items で行います。 フォームのデザイナ上でプロパティウインドウの中から設定してもいいのですが、 今回は Items に設定する項目をクラスとして定義し、 それを指定のコンボボックスに設定するクラスを作成してみました。

 Items に設定できるデータ型は Object 型の配列として宣言されていますので、 クラスの値の配列を設定が可能です。

以下のソースでは、全体のクラス名を ClsCombo として宣言し、 コンボの Items に設定されるデータを ComboItem として宣言しています。
このクラスを使用する場合は、 ComboItem で項目値を配列として宣言し、  ClsCombo のコンストラクタに渡す様にします。


■プロパティ

プロパティ名内容
ComboDivision 選択区分値(数値)を取得
ComboDivString 選択区分値(文字列)を取得
ComboText 選択区分名(Text)を取得


■メソッド

メソッド名引数内容
SetComboSeletedIndex 区分値(Long) 区分値を選択状態に設定
SetComboSeletedIndex 区分値(文字列) 区分値を選択状態に設定



このクラスを使う例として以下のソースを示します。

プライベート変数で今回のクラスの変数と、コンボに設定する項目値の配列を宣言します。 その後、フォームロード時イベントでクラス変数の生成を行い、初期選択値を設定します。

Combo1


ボタンクリック時イベントで選択されている区分値とコンボボックスに表示されているテキスト文字列を クラスより取得し表示しています。

Combo2

Visual Basic 2013逆引き大全 555の極意【電子書籍】[ 増田智明 ]

価格: 2,527円
(2016/09/29 14:32時点 )

感想:0件

デル株式会社

2016年3月19日 (土)

VB.NET:Spreadのテキストセルでバイト数入力制限を掛ける方法

Spreadのテキストセルで入力する文字数をバイト数で制限する方法について、 Shift-JISエンコーディングのバイト配列処理メソッドを使って行います。

バイト数制限というのは、ほぼShift-JISに由来する考え方で、 データベースの文字列定義をShift-JISにしておくと オラクルのVARCHAR2のデータ型でもバイト数制限は必要でした。

以下にソースを示しますが、少し説明します。
最初にフォームロード時に、Shift-JISの文字エンコーディングを生成し、 Spreadの編集モードセルのテキスト変更時イベント処理と、 データモデルに変更時イベント処理を宣言しています。
また、両方のイベントで使う、文字列の最後の漢字の泣き別れを防ぐ関数導入しました。 既に入力された文字が"あいうえ1"の場合に、さらに漢字で"お"と入力されても "お"の文字の前半分が残らない様にしています。
Spreadbyte


最後の「漢字の泣き別れ」処理関数ですが、 上の例で既入力が"あいうえ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イベントの発生方法


デル株式会社

VB.NET:プライマリディスプレイの上でフォームの表示位置設定する方法

今回の記事は、パソコンの画面上で、タスクバーを除いた部分でどの位置に表示するかを制御する簡単なTIPSです。
通常パソコンのディスプレイは1台なのでプライマリディスプレイと言えば表示画面そのものですが、 System.Windows.Forms.Screenクラスのプロパティ PrimaryScreen から画面の情報を取得できます。
 PrimaryScreen プロパティはSystem.Windows.Forms.Screenクラスで以下の様なプロパティを持っています。
プロパティ 内容
BitsPerPixel 1 ピクセルのデータに関連付けられているメモリのビット数を取得
Bounds ディスプレイの範囲を取得
WorkingArea ディスプレイの作業領域を取得。作業領域とは、ディスプレイのデスクトップ領域からタスクバー、ドッキングされたウィンドウ、およびドッキングされたツール バーを除いた部分


画面の表示は以下の様になります。 Form1_2
以下の今回のソースを示しますが、画面中央、左上、右上、左下、右下のラジオボタンをクリックし ボタンをクリックすると、指定位置にフォームが移動します。
タスクバーの領域を除いた部分での画面位置ですので、 WorkingArea プロパティを使います。

この例の関数ですが、仕事で普通に使う場合は、画面中央に表示する場合がほとんどでした。
基礎Visual Basic 2015 基礎シリーズ
デル株式会社