So-net無料ブログ作成
検索選択

FormとDialog [コントロール]

----------------------------------------------------------
(開発・実行環境)

Microsoft Visual Studio 2005 Tools for Applications

Microsoft Visual Basic 2005

----------------------------------------------------------

 プロジェクトに新しい項目を追加する画面には、Windowsフォームとダイアログがありますが、

大元は同じもののようですね。

ダイアログの方は初めからDialogとして使いやすい(?) ような設定がされているようですが、

なんにしてもあのボタンをそのまま流用しにくい。。

 

てことで結局WindowsフォームからDialog作るんだよねw

 

唯一つ注意が。

今回、DialogがActiveなときにEscキーで呼び出し元に戻るように、FormのCancelButtonプロパティに、

「戻る」ボタンを設定しておいたんです(これでEscキーで画面を閉じれます) 。

 

これを当初の仕様と少し変えたんです。

 「戻る」ボタン押下時に「戻ってよいか?」メッセージを出すことにしたので、当然Escキーでの画面Close処理は不要となり、

CancelButtonプロパティから「戻る」ボタンを外したんです。

 

でも。。

「戻ってよいか?」メッセージ で「いいえ」を選択しても画面が閉じてしまう!!

 

頑張って探してやっとわかった。

一度CancelButtonプロパティに設定したButtonコントロールは、DialogResultプロパティが勝手にCancelになってしまうみたい。

CancelButton プロパティから外してもそのまま残るため、そのボタンを押すと、Clickイベントを抜けた後に画面を閉じてしまう。。

 

試してないから確かなことは言えないが、AcceptButtonプロパティも多分同様の挙動を示すんだろうな。

不毛な時間を過ごすから、注意しないといけませんね。


ActiveReportsのページフッタにページ番号を印字する [ActiveReports]

----------------------------------------------------------
(開発・実行環境)

Microsoft Visual Studio 2005 Tools for Applications

Microsoft Visual Basic 2005

ActiveReports 2.0J Standard

----------------------------------------------------------

 

 作成したレポートのページフッタに、「現在ページ/総ページ」を尋常に出力する場合は、以下のコードをレポートの作成する最初(ReportStartイベントとか)に宣言し、TextBoxに適用すればいいらしい。

(今回はやってないから知らんけど)

    'カレントページ数
    Me.txtPage.SummaryRunning = SummaryRunning.All
    Me.txtPage.SummaryType = SummaryType.PageCount
    '総ページ数
    Me.txtPages.SummaryRunning = SummaryRunning.None
    Me.txtPages.SummaryType = SummaryType.PageCount
 

 

今回やろうとしたのは、作成するレポートの中でも、キー項目が変更されたら改ページして、ページ番号を1にリセットする、というもの。

つまり、レポートで出力するページ数が10ページあっても、毎ページキー項目が変更になったら、全てのページ番号が1となるし、10ページ全て同じキー項目であれば、1~10を振る、ということ。

総ページの出力はしなかった。

 

ActiveReportsに出力するデータを格納した配列の、各レコードにページ番号も持たせ、DataInitializeイベントでアンバウンドフィールド(バウンドフィールド? ごめんなさい、よく言葉を知らない。。)を作ってレポート上のTextBoxと紐付け。

FetchDataイベントで配列の値をバウンドフィールドに当てるという、データの出力方法と同様に、ページ番号もページフッタに出力しようと試みた。

 

・・・が、配列のデータは正しく作れているのに、ページ番号がズレて表示される。。。

 

どうもページヘッダ・フッタには、変化するデータの値を使ってはいけないらしい。。。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37912&forum=7

https://www.grapecity.com/Japan/Support/Search/FaqContent.asp?id=13371

 

Detailやグループヘッダ・フッタと違って、ページヘッダは配列がまわる度に値を入れてくれないらしい。。

グループフッタにすると、1ページ目と2ページ目以降で出力位置がビミョーに変わるからそこに置きたくなく。。。 (レイアウトが変わるので)

 

あまりきれいな方法じゃないんだろうけど、DetailFormatイベントで、新しいページに変わるときに(If文による制御)、ページ番号のTextBoxのTextプロパティに、配列の値を入れていくことにした。

 

でも今回これで完成でもないし、どうなることやら。。

 他にいい方法知ってる方いたら教えてください。

(その前に拙い文章ですいません。。)

 

ActiveReports・・・

クリレポと全然違うし、難しいな~。。


ActiveReportsでの印刷時にイベントをとる [ActiveReports]

----------------------------------------------------------
(開発・実行環境)

Microsoft Visual Studio 2005 Tools for Applications

Microsoft Visual Basic 2005

ActiveReports 2.0J Standard

----------------------------------------------------------

 

ActiveReports(AC)による帳票印刷時に、印刷フラグを立てる場合など。

CrystalReports(CR)を使うと、プレビューを出す場合はプレビュー表示以後、OSでの処理になって

イベントがとれなかった。

よって、プレビュー画面に自分で印刷ボタンを用意して対応せざるを得なかったが・・・。

 

ACでは、印刷プレビューから呼んだ印刷ダイアログのOKボタン押下時にイベントをとれるんです。

 

   OnEndPrintイベント

 

素敵☆

 

プレビュー画面のLord時に以下でイベントに関連付け。

 

            AddHandler .Document.Printer.EndPrint, AddressOf onEndPrint

 

 そして、以下のイベント処理。

 

    Private Sub onEndPrint(ByVal sender As Object, ByVal e As _ System.Drawing.Printing.PrintEventArgs)

  ~~~~~~~~~~~~

   End Sub

 

GrapeCityのHPから「サポート」→「よくある質問」で探せます。

 http://www.grapecity.com/japan/support/

 

 


CheckBoxのReadOnlyプロパティ [VB.NET]

----------------------------------------------------------
(開発・実行環境)

Microsoft Visual Studio 2005 Tools for Applications

Microsoft Visual Basic 2005
----------------------------------------------------------

 

vb.netには、CheckBoxコントロールにReadOnlyプロパティがついていません。

 CheckBoxイジれなくしたいのに・・・

どげんすっとか!

 

enableプロパティをfalseにするのも色が見えなくなるから嫌だし・・・。

 

でも実は簡単にできる事を発見。

 

    AutoCheckプロパティ = false

 

こんだけ。

 らくちん♪

なんでこんな名前なんやろ。。。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。