none
MS Access の帳票形式のフォームの移行に困っている方 RRS feed

  • 全般的な情報交換

  • #検索でWPFへとたどり着けるようにここに書いておきます。


    Access を.NET化する際に,一番やっかいなのが,
    帳票形式のフォームです。


    WPFでは,DataTemplateを用意することで,
    ListBox なのに各データを好きな位置に繰り返し表示できます。


    また,WPFサンプルではTextBlock になっているものが多いですが,
    TextBox などにすると編集可能になります。
    (cf. ListViewEditable サンプル では両対応したりしています)


    WPFは,3D描画あたりの機能が前面に押し出されていますが,
    何気にデータ絡みの機能が柔軟になってます。
    WPF には,
    トリガ(DataTrigger, MultiDataTrigger(複数条件用))という機能があって,
    ここ( データ テンプレートの概要 )
    の以下の三つを眺めてみると,可能性が無限大だとわかる筈です。
    データによって,色を変えたりするのはもちろん,
    データによって,行の表示の仕方まで換えることができてしまいます。

     

     

     


     (ListBox にHeightを指定するとスクロールバーも出ます)

     


    上の三つ目の例で使用しているDataTemplateSelector は,
    XAMLでなく,なぜか,コードでクラスとして用意して,
    リソースに登録しておかないといけないようで,ちょっと面倒ですが,
    それでも,
    MS Access以上のことや今までなら挫折していたようなことまで,
    かなりにやれます。


    Accessの連結フォームで十分と思っている人も,
    WPFを選択肢として調査するといいかも。
    3Dだけがウリではないですよ。

    2007年7月1日 23:23

すべての返信

  • なるほど。ASP.NETはWindowsフォームに比べて柔軟な画面構成が取れるので、それを理由にWebアプリケーションを選択することも私の場合はあったのですが、こういう面でもWPFは魅力的なわけですね。時間ができたら私も是非いじってみたいと思います。

     

    #GDNJ掲示板の時に稍丼さんがこの話題をされていたのが懐かしいですね。

    2007年7月2日 0:49
    モデレータ

  • DataGrid や DataGridView で,
    一行を無理っこ複数行という荒業もあったけど,
    Windowsアプリにもやっと春が来たという感じです。



    # 後,楽になって欲しいは,
    # Windowsアプリの宿命?でもあるExcelとの連携かな。

    2007年7月3日 9:30
  • デザインを適用する立場から追記させていただきます。

    ListBox は柔軟性に優れている分、スタイル/テンプレートは
    かなり複雑な階層構造になっているので、
    デザインを適用する際には迷子にならないよう、ご注意ください。

    ListBoxの場合、ビューツリーに沿って上からスタイル/テンプレートを並べると、

    (1)ListBoxStyle/Template

    (2)ItemsPanelTemplate

    (3)ListBoxItemStyle/Template

    (4)DataTemplate

    という階層構造になっています。

    (1)で ItemsPanel を入れる ScrollViewer をどう配置するか等、
    全体のデザインを決定します。

    (2)では各アイテムの並べ方を決めます。
    デフォルトでは VirtualizingStackPanel ですが、
    例えばここを WrapPanel にすることで、
    エクスプローラのアイコンビューのような表示も可能となります。

    (3)では各アイテム内で DataTemplate で定義した内容をどう配置するかと、
    選択状態や非選択状態のインタラクションを定義します。

    (4)は稍丼さんの仰る通りです。
    2007年7月11日 1:53
  •  

    Microsoft Visual Basic Power Packs 3.0

     

    として,DataRepeater コントロールが追加されています。(Power Packs 2.0 までのも含む)

    DataGridView のようにデータソース無しでは使えないようです。

    また,別途配布しないといけないので,WPFのようには行かないです。

    ただ,VB6やAccessからの移行の場合,

    これがあると助かる場合は多々あるんじゃないかと思います。

    (そもそも,現時点で,いきなりWPFとはいけないだろうし)

     

     

    VB6の時のように(ユーザーコントロールを作って)あらかじめ一行分をまとめておかなくても

    そのまま直にテキストボックス等を置けます。

     

     

    ツールボックスに Visual Basic Power Packs 3.0 タブに

    (Standard や Professional Editionではすべて自動で追加されるんですが,)

    VB Express では,PrintFormコントロール 以外は,自動で追加されません。

    右クリックして,アイテムの選択...  (Choose Items...) から

    LineShape

    OvalShape

    RectangleShape

    DataRepeater

    を追加する必要があります。

     

     

    パワーパックをインストール時に,進行バーがいっぱいになった後に,

    かなり時間がかかって,すごく不安にさせるので注意。

     

     

     

    2008年2月19日 17:00