Simpleware Blog

シンプルウェア株式会社のブログです。
<< 残業せずにソフト開発できる?? | main | VisualStudio2012で作成するiTextSharpアプリケーション(2) >>
VisualStudio2012で作成するiTextSharpアプリケーション(1)

 おかげさまでいろいろな種類の開発をさせてもらっている今日この頃。長年、ソフトウェア開発に携わってきて、なーんも業界に寄与していないと実感しています。すこしはなにかしないとなぁ、というわけではないのですが、技術系のコンテンツを今後断続的に掲載しようと思っています。
 特にVisualStudioのVisualBasic系開発が長いのですが、最近PDFファイル操作の必要があり、今まではAcrobatSDKで開発していたのですが。今回はPDFファイル結合が必須のため、他のツールを探していました。 で、「iTextSharp」を見つけて使用しました。
 情報があるようでなかったりしてちょっと苦労はしたのですが、その辺をブログに備忘録として今後まとめようと思っています。なお、今まで受託開発などで経験してきたプロジェクトの作成方法なども記載しますが、できるだけ委託企業先のノウハウに触れないようにしたいと思います。でも、触れてしまったときはご指摘ください。謹んで訂正します。
 開発環境もVisualStudio2008ベースでやってきたのですが、最新はVisualStudio2012となっており、今回はその環境理解も含めて、業務アプリの基本作成から始めたいと思っています。

 まず、今回プロジェクトの基本を作ってみようと思います。
 開発環境は以下のようなものです。

  • 開発マシン:Mac Mini(Late 2012) OS X 10.8.3
  • Windows環境:VMWARE FUSION 5,Windows8 Pro 64bit,メモリ3GB割り当て
  • 画面解像度:1920X1080
  • 開発環境:VisualStudio2012 Pro

1.VisualStudio2012の業務アプリケーションの基本プロジェクト作成

(1)プロジェクト作成

 VisualStudio2012を起動してプロジェクトを作るのですが、なんか画面がのぺっとしていて以前の2008より見ずらいなぁという印象です。

VisualStudio2012起動画面←こんな感じ

 それはさておき、通常は左側メニューの「新しいプロジェクト…」か「ファイル」-「新しいプロジェクト」で作成するのですが、これだと1ソリューション、1プロジェクト前提なので、ソリューション名とプロジェクト名が同一になります。
 別にそれでもよいのですが、今回は同一ソリューション内にいろいろなプロジェクトを作成してみたいので、ソリューション名とプロジェクト名を別にします。
 忘れないうちに記載しますが、今回は別に最新のフレームワークを使う必要がないので、というより、アプリケーションとOSの互換性を重視してフレームワークは「.net Framework2.0」を指定しておきます。
 まずは、「新しいプロジェクト…」選択後「その他のプロジェクトの種類」-「Visual Studio ソリューション」を選択してカラのソリューションを作成します。

ソリューション選択←ソリューションのみ作成

ソリューション作成←作成したソリューション

 その後、再度「新しいプロジェクト…」でプロジェクトを作成します。
 その際に、画面右側の「ソリューション エクスプローラー」で作成したソリューション名をクリックして選択状態にしておかないと、別ソリューションとして作成されてしまうのでご注意を。
 作成するアプリケーション種類は、「Windowsフォームアプリケーション」とします。

 プロジェクト作成←プロジェクト作成

プロジェクト初期画面←プロジェクト初期画面

(2)プロジェクト内フォルダ作成とメニューフォーム作成

 ここまでで勝手に「Form1」が作成された状態になっているので、今後のアプリケーションの参照性を高めるためにフォルダを作成して整理し、メニュー画面を作ります。

 まず、プロジェクト名右クリックで「追加」-「新しいフォルダ」でアプリケーション関係用の「App」フォルダを作成し、その中にForm関係を入れる「Form」フォルダを作成します。

フォルダ作成←こんな感じ

 作成した「Form」フォルダに勝手に作成された「Form1.vb」ファイルをドラッグして移動します。そしてフォーム名を右クリックして「名前の変更」選択で名称を「Frm_MainMenu.vb」に変更します。これをメニューフォームとするということ。

メニューフォーム作成←メニューフォーム初期状態

 画面に表示されているフォーム自体をクリックして選択状態にし、右側の「プロパティ」で、以下の4点を修正します。

  • Text:「MainMenu」
  • Size:適当に設定(今回は500X500)
  • SizeGripStyle:Hide(フォームサイズ変更不可)
  • MaximizeBox:False(画面最大化ボックス非表示)

 業務アプリの場合は、フォームサイズを変更されるとユーザインターフェースが危うくなるので、たとえば1024x768固定が多いため、フォームサイズ変更関連は不可としています。
 この状態で画面上部にある「開始」をクリックすると、ビルドが始まりDEBUGモード実行でメニューフォームが表示されます。

メニュー画面表示←メニュー画面表示

(3)名前空間(NameSpace)の設定

 名前空間ですが、業務アプリケーションの開発では、やらなくともさほど問題はないという認識ですが、きちんとしている企業のベースプロジェクトでは指定されていますのでやって置きます。
 名前空間を指定するのは、フォームを形成する2つのファイルを修正する必要があるので、まず、「ソリューション エクスプローラー」上部メニューで「すべてのファイルを表示」をクリックして、以下の3ファイルが表示されるようにします。「<>(コード表示)」の左隣りのボタンです。

すべてのファイル表示←すべてのファイル表示

 まず、「Frm_MainMenu.vb」ファイルを選択し、以下のように「Namespace」を追加します。
 同一名前空間にしておくほうが良いものに共通の名称をつける、ということで、今回はフォルダ名を基準としてフォーム関連は「App.Form」とします。
以下のような感じ


Namespace App.Form
    Public Class Frm_MainMenu

    End Class
End Namespace

 同じく「Frm_MainMenu.Designer.vb」ファイルを選択し、「Namespace」でコードすべてを囲みます。これをしないとエラーが出ます。
 名前空間が変更になると、メニューフォームの呼び出し名称も「App.Form.Frm_MainMenu」となります。そこで、起動時のスタートアップフォーム名を再設定します。
 「ソリューション エクスプローラー」のプロジェクト名「PdfProject」を右クリックして「プロパティ」選択でプロパティ画面を表示します。
 「アプリケーション」タブ選択で、以下の2点を修正します。

  • ルート名前空間:空欄とする
  • スタートアップオブジェクト:「App.Form.Frm_MainMenu」を選択

 以下の感じ

名前空間の変更名前空間の変更


(4)スタートアップクラスの作成

 通常はメニューフォームを最初に表示でよいのですが、メニュー表示する前に、たとえばパラメータを読み込むとか、そのパラメータによって初期表示フォームが変わるなんてことがあります。また、アプリケーションの二重起動禁止など。
 そのために、スタートアッププログラムを自分で用意して、そこからメニュー表示、という変更を行います。
 「ソリューション エクスプローラー」の「App」フォルダ右クリック-「追加」-「クラス」選択で「ClsMain.vb」ファイルを追加します。
そこに以下のコードを追加します。


◆Namespace「App」追加

Option Explicit On
Option Strict On
Namespace App
    Public Class ClsMain
         _
        Public Shared Function Main(ByVal cmdArgs() As String) As Integer
            Dim RET As Integer = 0  'リターンコード
            Try

                '終了コード
                RET = -1

            Catch ex As Exception
                MessageBox.Show(ex.Message, "確認", MessageBoxButtons.OK, _
                                MessageBoxIcon.Error)
            End Try

            Return RET

        End Function

    End Class
End Namespace
◆二重起動禁止の追加


        '二重起動チェック
        If UBound(System.Diagnostics.Process.GetProcessesByName( _
            System.Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
            'すでに起動していると判断して終了
            ''MessageTool.ShowAttention("多重起動はできません。")
            MsgBox("同一アプリケーションの複数起動はできません。", _
                    CType(MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, _
                          MsgBoxStyle), "注意")
            '終了コード
            Return RET
            Exit Function
        End If

◆フォーム関連の記述とメニューフォーム起動の追加


        '-----------------------------------------------------------------------
        '以下2行の記述は、ネットで調べれば説明が出てきます。
        'はたしてWindows8環境で必要かは疑問。でも心配性なので外せない。。。
        Application.EnableVisualStyles()
        Application.SetCompatibleTextRenderingDefault(False)
        '-----------------------------------------------------------------------
        'フォーム実行
        Application.Run(New App.Form.Frm_MainMenu)


ClsMain.vbの全体←ClsMain.vbの全体

 最後に、プロジェクトのプロパティで「スタートアップオブジェクト」を「App.ClsMain」に変更して終了です。
 これで、フォーム表示前に何らかの処理が必要な場合にここに記述すればOK、ということになります。


(5)今回のまとめ

 とりあえず、息切れです。
 ソリューション、プロジェクト、名前空間追加、メニューフォーム作成、スタートアップクラス作成と、一通り作ってきました。
 今回の内容で、参考になるWebリンクを以下に記載しますので参考にしてください。
 次回は、DEBUG時に必要となるLOG出力と、フォーム間の連携、基本的なコーディングの仕方を掲載しようかと思います。
 今回の記事で、2時間弱使っているので、結構大変です。続くかな。では。

以上

| ソフトウェア開発 | 20:02 | comments(0) | trackbacks(0) | - | - |









http://blog.simpleware.jp/trackback/28
     12
3456789
10111213141516
17181920212223
24252627282930
<< June 2018 >>
+ RECOMMEND
PHILIPS Fidelio/フィデリオ 【寝室にぴったりな一台】ドッキングスピーカー DS1100
PHILIPS Fidelio/フィデリオ 【寝室にぴったりな一台】ドッキングスピーカー DS1100 (JUGEMレビュー »)

目覚ましとiPhone4s充電スピーカとして購入。
なかなかよい感じ。アプリ連動あるし。
+ RECOMMEND
Apple Apple TV MC572J/A
Apple Apple TV MC572J/A (JUGEMレビュー »)

いまさらですが、これで、月1回程度映画レンタルしてます。また、インターネットラジオも。よいと思います。
+ RECOMMEND
日本電気 モバイルWiMAXルータ AtermWM3500R マーズレッド PA-WM3500R(AT)R
日本電気 モバイルWiMAXルータ AtermWM3500R マーズレッド PA-WM3500R(AT)R (JUGEMレビュー »)

今月契約して使い始めてます。チューニングしないと安定しませんが、そこそこでしょう。出張に都内で使う前提なので問題ないです。
+ RECOMMEND
ML110 G6 BM101A Xeon X3430 2.4GHz メモリ1GB DVD-ROM HDDレス OS無し
ML110 G6 BM101A Xeon X3430 2.4GHz メモリ1GB DVD-ROM HDDレス OS無し (JUGEMレビュー »)

ほぼ1ヶ月使用してます。RAID0の書き込みは遅いけど、コストパフォーマンスは上々です。
+ RECOMMEND
TWINBIRD LINK ZABADY 10型 防水ワイヤレスモニター VW-J107W ホワイト
TWINBIRD LINK ZABADY 10型 防水ワイヤレスモニター VW-J107W ホワイト (JUGEMレビュー »)

チューナ機能はないですが、TVやDVDと接続してお風呂で見られます。良いです。
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ CATEGORIES
+ ARCHIVES
+ MOBILE
qrcode
+ LINKS
+ PROFILE
+ OTHERS
このページの先頭へ