VB実用⑬ 印刷Ⅲ(PrintFormメソッド)

Similar documents
VB.NET解説

ルーレットプログラム

ブロック パニック

VB実用⑫ 印刷Ⅱ(Printerオブジェクト)

データアダプタ概要

グラフィックス

ICONファイルフォーマット

VB実用③ アクセス操作Ⅰ

VB実用⑦ エクセル操作Ⅰ

インベーダープログラム

Userコントロール

ファイル操作

NotifyIconコントロール

ブロック崩し風テニス

VB実用Ⅲ⑩ フリーデータベースⅡ

ListViewコントロール

ファイル操作-インターネットキャッシュ

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

mySQLの利用

VB実用⑯ 印刷Ⅵ(Excel)

ファイル監視

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

プロセス間通信

3D回転体プログラム

データベースⅠ

相性占いプログラム

構造体

DAOの利用

占領双六ゲーム

VB.NET解説

データベースプログラミング

プラグイン

ファイル操作-バイナリファイル

データベース1

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

印刷

チャットプログラム

Prog2_12th

モグラ叩きプログラム

画像閲覧プログラム

パラパラ漫画

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

グラフィックス 目次

正規表現応用

回文作成支援プログラム

神経衰弱ゲーム

アプリケーション

ハッシュテーブル

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

回文作成支援プログラム

回文作成支援プログラム

データベース1

倉庫番

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

データベースⅠ

回文作成支援プログラム

ドライブは安全運転で in 滋賀♪

ウィンドウ操作 応用

万年暦プログラム

かべうちテニス

VB実用⑩ エクセル操作Ⅳ

VB実用⑪ 印刷Ⅰ(プリンタ設定)

万年暦プログラム

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

Microsoft Word -

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

データベースⅡ

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

プレポスト【問題】

64bit環境で32bitコンポーネントの利用

GUIプログラムⅡ

MS Office オートメーション

GUIプログラムⅣ

Prog2_15th

VFD256 サンプルプログラム

VB実用⑱ 印刷Ⅷ(Accessに依る印刷)

VB実用④ アクセス操作Ⅱ

グラフィックス 目次

回文作成支援プログラム

WebReportCafe

スレッド操作 タイマー

バスケットボール

データベース1

VB実用① データベースⅠ

VB実用⑧ エクセル操作Ⅱ

C#の基本

マルチメディア・音声

回文作成支援プログラム

Microsoft Excel操作

With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = "select * from

3D回転体プログラム

印刷

相性占いプログラム

エクセル詳細 アドイン

PowerPoint プレゼンテーション

画像閲覧プログラム

スロットプログラム

草競馬プログラム

何時何処で誰が

目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23

Transcription:

印刷 Ⅳ VB 2005 4 プログラムの概要 事務処理に於いて 集計結果等を印刷して 確認等を行う事も多い為 ペーパーレスオフィスが推奨される昨今に於いても 矢張り印刷に関する技術は必要で有る Visual Basic から印刷を行う方法は.NET 以降 PrintDocument オブジェクトを使用する方法が 標準機能と仕て一般的で有るが Professional 版等では ReportView や CrystalReport を利用する事も可能で有る 亦 Power Packs 2 では視覚的確認が容易な FormPrint が機能を向上させて復活して居る 此処では Access のデータを データセットに読み取り 此の情報を 動的に生成したラベルに表示すると共に FormPrint を用いて印刷を行う 今回の課題項目 機能の追加 (Visual Basic Power Packs 2.0 3.0) フォームの印刷 (FormPrint コントロール Print メソッド ) System.Data.OleDb 名前空間 (Access データベースの操作 ) データベースの接続 (OleDbConnection オブジェクト ) データベースの操作 (OleDbDataAdapter オブジェクト ) テーブルデータの格納 (DataSet オブジェクト ) コントロールの実行時生成 (Private Dim ステートメント New ステートメント ) 今回の重点項目 機能の追加 (Visual Basic Power Packs 2.0 3.0) フォームの印刷 (FormPrint コントロール Print メソッド ) コントロールの実行時生成 (Private Dim ステートメント New ステートメント ) -1-

オブジェクト プロパティ一覧 ピクチャボックス パネル ラベル 1 ボタン ラベル 2 ラベル 8 ラベル 9 ラベル 10 PrintForm PrintForm コントロールは Microsoft Bisual Vasic Power Packs 2.0 をインストールしないと使用する事は 出来ない 先ず 此れをインストールする必要が有る (6 頁参照 ) コントロールの種類 プロパティ プロパティの設定値 フォーム name PrintForm AutoScroll True BorderStyle FixedSingle StartPosition CenterScreen フォーム印刷 パネル name pnlbase BackColor White Size 794, 1123 ラベル1 オブジェクト名 lbltitle BackColor Black Font MS 明朝 太字 20 ForeColor White Size 777, 41 サークル名簿 Align MiddleCenter ピクチャボックス name piclogo Picture tai.ico ボタン name btnprint BackColor White Font MS 明朝 太字 12 印刷 -2-

ラベル2 name lblfield1 Location 8, 57 登録番号 ラベル3 name lblfield2 Location 83, 57 氏名 ラベル4 name lblfield3 Location 159, 57 フリガナ ラベル5 name lblfield4 Location 234, 57 郵便番号 ラベル6 name lblfield5 Location 310, 57 住所 ラベル7 name lblfield6 Location 537, 57 電話番号 ラベル8 name lblfield7 Location 643, 57 生年月日 ラベル9 name lblline1 BackColor Black Location 8, 75 Size 777, 1 空白 ラベル10 name lblline2 BackColor Black Location 8, 77 Size 777, 1 空白 PrintForm name prnform ラベル 9 と 10 は 横線を描く為に使用して居る PrintForm を使用する為に追加インストールする Power Packs 2 には LineShape OvalShape RectangleShape と謂うデザイン時に簡易図形を描く為のコントロールが含まれて居るので 此の横線を描く為に LineShape を使用しても良い 猶 此等の Shape コントロールは Graphics で図形を描画する場合と異なり 図形を移動する時に元の場所を背景色 ( 背景画 ) で塗り潰した後 移動先に再描画する必要は無く 単にコントロールを Move メソッド等で移動する丈で済む為 色々と利用すると面白いと思う -3-

Imports System.Data.OleDb プログラムリスト Public Class PrintForm Private Const NP As Integer = 50 ' 1 頁の行数 Private lbldata( NP - 1, 6 ) As Label 後で変更する可能性の有る数値は マジックナンバーを使用せずに 定数で宣言して置くと良い 此処で宣言した変数は 宣言した クラスの総てのサブプロシージャ 内で値の参照と設定を行う事が出 来る ' フォームが読み込まれた時の処理 Private Sub PrintForm_Load( ByVal sender As Object, ByVal e As System.EventArgs ) _ Handles Me.Load Dim I, J As Integer Dim X( ) As Integer = { 8, 83, 159, 234, 310, 537, 643 } Dim W( ) As Integer = { 56, 72, 72, 72, 223, 110, 132 } Dim Cn As OleDbConnection Dim Da As OleDbDataAdapter Dim Ds As DataSet Dim F As String Dim S As String ' データ表示域の生成 For I = 0 To ( NP - 1 ) For J = 0 To 6 lbldata( I, J ) = New Label With lbldata( I, J ).Size = New Size( W( J ), 13 ).Location = New Point( X( J ), I * 15 + 87 ).BackColor = Color.White ' 確認用 ( 色を付けると生成されたラベルが確認出来る ) '.BackColor = Color.Cyan End With Me.pnlBase.Controls.Add( lbldata( I, J )) Next Next 此処で宣言した変数は宣言したサ ブプロシージャ内でしか値の参照 と設定を行う事が出来ない 上記で Data.OleDb 名前空間をイ ンポートして居るので 名前空間 を省略した記述が可能で有る ループの中にループを記述する等 入れ子状態に成る事をネスティン グと謂う 複数のプロパティを設定する場合は With ステートメントを用いると パフォーマンスが向上する 生成したコントロールは コンテ ナと成るコントロールの Controls コレクションに追加する ' データファイル (MDB ファイル ) のフルパスの設定 F = Application.StartupPath : If Not F.EndsWith( " " ) Then F &= " " F &= " サークル名簿.mdb" F = " サークル名簿.mdb" ' データベースへの接続情報の設定 Cn = New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & F ) ' データアダプタの生成 Da = New OleDbDataAdapter( "SELECT * FROM サークル名簿 ", Cn ) -4-

' データセットの生成 Ds = New DataSet ' SQL の発行と取得したデータのデータセットへの格納 Da.Fill( Ds, "CIRCLE" ) ' データの出力 With Ds.Tables( "CIRCLE" ) For I = 0 To (.Rows.Count - 1 ) If I = NP Then Exit For For J = 0 To 6 If J = 6 Then S = CDate(.Rows( I ).Item( 7 )).ToString( "yyyy 年 MM 月 dd 日 " ) Else S =.Rows( I ).Item( J ).ToString End If lbldata( I, J ). = S Next Next End With ' オブジェクト型変数の破棄 Ds.Dispose( ) Da.Dispose( ) Cn.Close( ) Cn.Dispose( ) End Sub ' ボタン ( 印刷 ) がクリックされた時の処理 Private Sub btnprint_click( ByVal sender As System.Object, ByVal e As System.EventArgs ) _ Handles btnprint.click ' ボタンの非表示 ( ボタンを印刷しない為 ) btnprint.visible = False 中には デフォルトプロパティで ' 用紙サイズの設定特に設定する必要の無い物も在る Dim PS As System.Drawing.Printing.PaperSize が 明示的に記述して置く事が望 For Each PS In prnform.printersettings.papersizes ましい If PS.Kind = Printing.PaperKind.A4 Then prnform.printersettings.defaultpagesettings.papersize = PS End If Next ' 印刷方向の設定 (True: 横向き False: 縦向き ) prnform.printersettings.defaultpagesettings.landscape = False ' 印刷部数の設定 (1 部 ) prnform.printersettings.copies = 1 ' 解像度の設定 ( 高解像度 ) prnform.printersettings.defaultpagesettings.printerresolution.kind = Printing.PrinterResolutionKind.High -5- データセットは 複数のテーブル を格納する事が出来る為 各テー ブルに 任意の識別子 ( 名前 ) を 付ける事が出来る 同じオブジェクトを操作する場合は With ステートメントを用いると パフォーマンスが向上する レコード数は DataSet 内の指定したテーブルの Rows.Count で取得する事が出来る 各フィールド値は DataSet 内の指定したテーブルの Rows.Item で取得する事が出来る ラベルにデータを表示して仕舞え ば データセット等は不要と成る 為 此処で破棄して居る プロシージャ内で宣言した変数は Static で無い限り プロシージャ を抜けると 自動的に破棄される が 此れは 変数領域が破棄され る丈で インスタンスはメモリに 残存する為 破棄する必要が有る 此処で設定して居るプロパティの

' カラーモードの設定 (True: カラー印刷 False: モノクロ印刷 ) prnform.printersettings.defaultpagesettings.color = False ' マージン ( 余白 ) の設定 ' プリンタが自動的にマージンを設定しない場合 ' prnform.printersettings.defaultpagesettings.margins = New Printing.Margins( 20, 20, 25, 25 ) ' プリンタが自動的にマージンを設定する場合 prnform.printersettings.defaultpagesettings.margins = New Printing.Margins( 0, 0, 0, 0 ) ' 印刷 prnform.print( Me, PowerPacks.Printing.PrintForm.PrintOption.Scrollable ) ' ボタンの再表示 btnprint.visible = True End Sub End Class PrintForm コントロールの Print メソッドは フォームを印刷するメソッドで有る Microsoft Bisual Basic Power Packs 今回使用する PrintForm コントロールの他 LineShape OvalShape RectangleShape の図形系コントロールを追加する Microsoft Visual Basic 2005 Power Packs 2.0 は 2008 年 2 月 22 日現在 下記のサイトよりダウンロードする事が出来る http://www.microsoft.com/downloads/details.aspx?familyid=92faa81e-e9c1-432c-8c29-813493 a04ecd&displaylang=en ダウンロードした VisualBasicPowerPacksSetup.msi をダブルクリックして起動し インストールする 猶 進行状況を表すプログレスバーが満杯に成った後 完了する迄に 可成りの時間を要する事が有るので 途中でキャンセル等を仕無い様に注意され度い インストール後は Professional 版の場合は ツールボックスに Power Packs 2.0 と謂うカテゴリが自動生成され 上記のコントロールが総て表示されるが Express 版では 手動でツールボックスに追加する必要が有る 猶 上記の 4 個のコントロールに DataRepeater コントロールが追加された Microsoft Visual Basic Power Packs 3.0 は 2008 年 2 月 22 日現在 下記のサイトよりダウンロードする事が出来る 新たにインストールする場合は 此方を選択した方が良い http://www.microsoft.com/downloads/details.aspx?familyid=371368a8-7fdc-441f-8e7d-fe7 8D96D4063&displaylang=en 此の場合は ダウンロードした VisualBasicPowerPacks3Setup.exe をダブルクリックして起動しインストールする -6-

PrintForm クラス PrintForm クラスは 実行時に Windows フォームのイメージを印刷出来る様にするクラスで有る Visual Basic 2005 で Microsoft Visual Basic Power Packs 2.0 を追加して PrintForm コンポーネントを使用すると 実行時にフォームのイメージのプリンタへの印刷 印刷プレビューウィンドウへの表示 又は ファイルへの出力が可能で有る 此の動作は Visual Basic の以前のバージョン (6.0 等 ) で使用されて居た PrintForm メソッドの動作に代わる物で有る 猶 Visual Basic 2008 では 此の PrintForm コンポーネントは 標準で提供されて居る 此のクラスの主なメソッドは 下記の通りで有る 名前 OnBeginPrint OnEndPrint OnQueryPageSettings Print 説明 BeginPrint イベントを発生させる EndPrint イベントを発生させる QueryPageSettings イベントを発生させる Windows フォームのイメージを PrintAction プロパティで指定された宛先に送信する 此のクラスの主なプロパティは 下記の通りで有る 名前 説明 DocumentName ドキュメントの印刷中に ( 例えば 印刷ステータスダイアログボックスやプリン タキューに ) 表示するドキュメント名を取得 設定する Form 印刷するフォームを取得 設定する PrintAction 印刷出力をプリンタ 印刷プレビューウィンドウ ファイルの何れに送るかを指 示する値を取得 設定する PrinterSettings プリンタの各種プロパティを指定する時に使用する PrinterSettings オブジェク トを取得 設定する PrintFileName PrintAction プロパティが PrintToFile に設定されて居る場合 EPS (Encapsulated PostScript) ファイルの名前と保存場所のパスを取得 設定する 此のクラスの主なイベントは 下記の通りで有る 名前 BeginPrint Disposed EndPrint QueryPageSettings 説明 Print メソッドが呼び出された時 ドキュメントの最初のページが印刷される前に発生する Dispose メソッドの呼び出しに依ってコンポーネントが破棄されると発生する ドキュメントの最後のページが印刷された時に発生する 各ページが印刷される直前に発生する PrintForm コンポーネントが使用する既定のプリンタは オペレーティングシステムのコントロールパネル設定に依り決定される 亦 印刷が始まると 標準の PrintDocument 印刷ダイアログボックスが表示される 此のダイアログボックスで ユーザーは 印刷ジョブをキャンセルする事も出来る -7-

PrintForm コントロールの Print メソッド 機能 フォームのイメージを PrintAction プロパティで指定された宛先に送信するメソッド 書式 Object.Print( ) 書式 1 Object.Print( Form, PrintForm.PrintOption ) 書式 2 解説 フォームのイメージを印刷する Print メソッドは フォームのイメージをプリンタや 印刷プレビューウィンドウや ファイルに出力する PrintForm コンポーネントの主要なメソッドで有る Print メソッドには 次の 2 種の形式が有る パラメータ無しの基本形式 ( 書式 1) 事前に設定された PrintAction プロパティの設定に従い 現在フォーカスを持つフォームの印刷を行うが 既定では フォームのクライアント領域丈が印刷される 猶 実行時にフォームのサイズを変更した場合には フォームの現在観えて居る部分丈が印刷されるがフォームが移動されてフォームの一部が画面の外に有る場合でも 全体が表示されて居るかの様に印刷される 亦 Form プロパティを別のフォームに設定して居る場合は 其のフォームのイメージが期待した通りに印刷されない事が有る為 Print メソッドを呼び出す前に フォームの Focus メソッドを呼び出して此の問題を回避する 印刷動作を指定するパラメータを使用するオーバーロードされた形式 ( 書式 2) 引数 Form には 印刷するフォームを指定し 引数 PrintOption には フォームの印刷形式を下記に示す Microsoft.VisualBasic.PowerPacks.Printing.PrintForm.PrintOption 列挙体で指定する メンバ名説明 CompatibleModeClientAreaOnly 互換性の有る印刷の実装を使用して 現在表示されて居るクライアント領域を印刷する CompatibleModeFullWindow 互換性の有る印刷の実装を使用して 現在表示されて居るフォームを印刷する ( 此れにはタイトルバー スクロールバー 境界線も含まれる ) ClientAreaOnly 新しい実装を使用して 現在表示されて居るクライアント領域を印刷する FullWindow 新しい実装を使用して 現在表示されて居るフォームを印刷する ( 此れにはタイトルバー スクロールバー 境界線も含まれる ) Scrollable 新しい実装を使用して 一部がスクロールされて表示されて居なくてもクライアント領域全体を印刷する 引数 PrintOption が CompatibleModeClientAreaOnly か CompatibleModeFullWindow に設定されて居る場合は Visual Basic 6.0 の PrintForm メソッドと下位互換性の有る実装が使用される 此の引数が ClientAreaOnly FullWindow 又は Scrollable に設定されて居る場合は フォームにフォーカスを設定する必要の無い別の実装が使用される -8-

PrintForm コントロールの Print メソッドの注意点 オーバーロードされた Print メソッドとグラフィックス Graphics メソッドに依って描画されたテキストやグラフィックスがフォームに含まれる場合 此れを印刷するには 基本的な Print メソッドを使用する オーバーロードされた Print メソッドを使用すると オペレーティングシステムに依っては グラフィックスが描画されない場合が有る 即ち オーバーロードされた Print メソッドでは オペレーティングシステムに依っては Graphics メソッドを使用して描画されたテキストやグラフィックスが正しく表示されないと謂う現象が発生する事が有り 更に PrintOption パラメータを ClientAreaOnly FullWindow Scrollable の孰れかに設定した場合 Print メソッドを呼び出した直後に フォームの Refresh メソッドを呼び出さなければ成らない事が有る 此のメソッドを呼び出さない場合 フォームに塵埃が表示される事が有る フォーム幅とプリンタ用紙幅 フォームの幅が プリンタ用紙の幅より広い場合 フォームの右側が途切れる可能性が有る 印刷用のフォームをデザインする時には 標準的な用紙サイズにフォームが収まる事を確認する必要が有る フォームのフォーカス オーバーロードされた Print メソッドでは 引数 Form で指定されたフォームにフォーカスが設定されて居らず 引数 PrintOption が CompatibleModeClientAreaOnly か CompatibleModeFullWindow に設定されて居る場合は 例外が発生する為 引数 Form で指定されるフォームは フォーカスが設定されて居る必要が有る 此の問題を回避するには Print メソッドを呼び出す前に フォームの Focus メソッドを呼び出すと良い 猶 引数 PrintOption が ClientAreaOnly FullWindow か Scrollable に設定されて居る場合は アプリケーション内のフォーカスが設定されて居ないフォームでも指定する事が出来る 印刷領域 フォームの印刷時には フォームのクライアント領域に有る物の総てが印刷される 此れには 総てのコントロール 及び グラフィックスメソッドを使用してフォームに描画された総てのテキストやグラフィックスも含まれる 既定では フォームのタイトルバー スクロールバー 及び 境界は印刷されない 亦 既定では PrintForm コンポーネントはフォーム内の表示されて居る部分丈を印刷する 例えば ユーザーが実行時にフォームのサイズを変更した場合 現在表示されて居るコントロールとグラフィックス丈が印刷される 印刷のキャンセル 印刷が始まると 標準の PrintDocument 印刷ダイアログボックスが表示される 此のダイアログボックスで ユーザーは印刷ジョブをキャンセル出来る 一般的に PrintForm コンポーネントでは 紙の書類やレポートの様な書式のフォームを作成して 其のフォームのイメージを印刷する PrintDocument コンポーネントを使用して同様の事を行う事も出来るが 此の場合 多くのコードが必要に成る可能性が有る PrintForm コンポーネントを使用すると PrintDocument コンポーネントを使わなくても フォームのイメージを 印刷したり ファイルに出力する事が出来る -9-

PrintForm コントロールの PrintAction プロパティ 機能 印刷の出力先を取得 設定するプロパティ 書式 Object.PrintAction 解説 印刷出力をプリンタ 印刷プレビューウィンドウ ファイルの何れに送るかを指示する値を取得 及び 設定する Object には PrintForm コントロールを指定する 設定値は 下記に示す PrintAction 列挙体で有る メンバ名 PrintToFile PrintToPreview PrintToPrinter 説明此の印刷操作はファイルへの出力で有る 此の印刷操作は印刷プレビューで有る 此の印刷操作はプリンタへの出力で有る PrintToPrinter を選択した場合 出力はシステムの既定のプリンタに送られる PrinterSettings プロパティを使用すると 此の動作をオーバーライドして プリンタとプリンタのプロパティを明示的に設定出来る 既定のプリンタが使用出来ない場合 ユーザーがプリンタを選択する様に求められる PrintToPreview を選択した場合 フォームは標準の Windows フォーム PrintPreviewDialog コントロールに表示される PrintToFile を選択した場合 PrintFileName プロパティで指定されたパスの EPS(Encapsulated PostScript) ファイル (.eps.ps 又は.ai) にフォームのイメージが保存される ファイル名を指定しないと ユーザーがファイル名を入力する様に求められる ファイルは 8 ビットのグレースケール PostScript 形式で保存される 24 ビットの RGB PostScript はサポートされて居ない ユーザーは パスやファイル名拡張子の入力を求められない ファイルのパスと拡張子が適切で有る事を確認する為に 独自のダイアログボックスを実装出来る 此れを行うには Print メソッドの呼び出し前に SaveFileDialog コンポーネントを使用し 其の戻り値を PrintFileName プロパティに割り当てる PrintForm コントロールの PrinterSettings プロパティ 機能 PrinterSettings オブジェクトを取得 設定するプロパティ 書式 Object.PrinterSettings 解説 プリンタの各種プロパティを指定する時に使用する PrinterSetting オブジェクトを取得 及び 設定する PrinterSetting オブジェクトの各プロパティの取得 設定は PrintDocument クラスの DefaultPageSetting と同じで有る -10-

実行時に於けるコントロール配列の追加 Visual Basic 6.0 以前では フォーム上のコントロールを管理する為に コントロール配列を使用する事が出来たが Visual Basic.NET 以降では イベントモデルが変更された為 コントロール配列はサポートされて居ない 併し コードで実行時にコントロールを追加する場合は 其れを格納するオブジェクト変数を配列にする事に依り Visual Basic 6.0 以前のコントロール配列と同等の事を行う事が出来る 亦 此の場合 配列は 1 次元配列で有る必要は無く 多次元配列とする事も出来る Visual Basic 2005 でコントロールを実行時に追加するには Dim ステートメントで New キーワードを使用してインスタンスを生成し コントロールを追加するコンテナと成るコントロールの Add メソッドを使用してフォームに配置する 下記に lbltitle と謂う名前のラベルを生成し フォームに配置するコード例を示す Private lbltitle As Label ' 1 Private Sub DynamicControl_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load lbltitle = New Label With lbltitle.size = New Size(150, 100).Location = New Point(10, 10).BackColor = Color.White. = " 烏賊の王様 ".Align = ContentAlignment.MiddleCenter End With Me.Controls.Add(lblTitle) End Sub ' 2 ' 3 ' 4 ' 5 ' 6 1 クラスレベルでグローバルな変数と仕て Label クラスのオブジェクト変数を宣言する 但し プロシージャ ( メソッド ) 内で完結する場合 ( 他のプロシージャでアクセスしない場合 ) は 使用するプロシージャ内で宣言しても良い ( 此の場合でも フォームに配置する事が出来る ) 2 Label クラスのオブジェクト変数に対してインスタンス ( 実体 ) を生成する 此れに依り 当該オブジェクト変数にアクセスが可能と成る 猶 インスタンスの生成は オブジェクト変数の宣言時に New キーワードを用いて行う事も出来る 3 コントロールの大きさを Size プロパティに設定する 此れを省略すると 各コントロールの既定の大きさと成る 4 コントロールの配置位置を Location プロパティに設定する 此れを省略すると 既定値の 0,0 が設定され コンテナの左上隅に配置される 5 必要に応じて 各プロパティを設定する 6 コンテナと成るコントロールの Controls コレクションに追加する 猶 実行時に追加したコントロールでイベント処理を行う場合は イベントハンドラを定義する必要が有る 此れは AddHandler ステートメントを使用して行う事が出来る -11-