| 2009/01/23(Fri) 20:50:04 編集(投稿者) 2009/01/23(Fri) 20:48:02 編集(投稿者) 2009/01/23(Fri) 05:41:47 編集(投稿者) 2009/01/22(Thu) 23:07:58 編集(投稿者) 2009/01/22(Thu) 22:57:04 編集(投稿者) 2009/01/22(Thu) 20:12:41 編集(投稿者) 2009/01/22(Thu) 19:55:37 編集(投稿者) 2009/01/22(Thu) 19:10:00 編集(投稿者)
■No4286に返信(homepiyoさんの記事) ドラッグで明細の表示行数がかわるようにできました。ただ、コンピュータへの負荷が大きいように思います。←表示が変更なければ描画更新しないように訂正しました。あと、最大化から復元したとき表示がウィンドウ内におさまらない場合があったので訂正しました。
手続き定義開始 b境界::マウス左ダウン() &境界ボタン="左ダウン" 手続き定義終了
手続き定義開始 フォーム::マウス移動() if (&境界ボタン="左ダウン") * if (&マウス移動回数>10) ←削除 * &マウス移動回数=0 ←削除 手続き実行 表示行数切り替え(&マウス位置[2]) * end ←削除 * &マウス移動回数=&マウス移動回数+1 ←削除 end 手続き定義終了
手続き定義開始 フォーム::マウス左アップ() if (&境界ボタン="左ダウン") &境界ボタン="" end 手続き定義終了
proc 表示行数切り替え(数値 &マウスY位置) /* トィップス(twips)=ポイント(pt)×20 */ var 数値{&ウィンドウ作業領域高さ,&部合計高さ,&ヘッダ部高さ,&明細部高さ,&フッタ部高さ} var 数値{&表示行数,&本文高さ,&本文始点Y,&本文ファイル高さ} var 数値{&明細部高さ初期値,&フッタ部高さ初期値} ←追加 var 長整数{ &終了状態, &size[2] } var Int{&Iwinp,&mode}
/* ウィンドウリスト取得でエラーの回避・・・KU1068:対象表が更新中またはグループ操作中のためこのコマンドは使用できません */ メソッド呼び出し @フォーム.更新モード取得( &mode ) 条件 ( &mode<>0 ) 手続き終了
/* 部合計の高さ(ヘッダ部の高さ+明細部の高さ+フッタ部の高さ) */ ウィンドウリスト取得 &Iwinp &終了状態 = #ウィンドウサイズ( &Iwinp, "size" , 2 ) &ウィンドウ作業領域高さ=#INT(#DotToPoint(&size[2])) /* ポイント(pt) */ &部合計高さ=(&ウィンドウ作業領域高さ-4)×20 /* この行以降はトィップス(twips) */ *??? &ウィンドウ作業領域高さ=&部合計高さ+4pt(80twipt) ???なぜか4pt(80twipt)ほど違う。 *??? ヘルプの#ウィンドウサイズの作業領域を参照。
/* ヘッダ部の高さ */ オブジェクト操作 &ヘッダ部高さ=@フォームヘッダ部.セクションの高さ
/* 明細部の高さ */ if (&マウスY位置<0) /* ウィンドウの最大化・復元の場合 */ オブジェクト操作 &フッタ部高さ=@フォームフッタ部.セクションの高さ &明細部高さ=&部合計高さ-&ヘッダ部高さ-&フッタ部高さ else /* 境界ボタン移動の場合 */ &明細部高さ=&マウスY位置-&ヘッダ部高さ end &表示行数=#INT(&明細部高さ÷(21×20)) /* 1明細の高さ(21pt)=21×20twipt */ 条件 ( &表示行数<1 ) &表示行数=1 ←追加 &明細部高さ=&表示行数×(21×20) /* 明細行数分の高さにする(フッタ部との間に隙間をつくらない) */ オブジェクト操作 &明細部高さ初期値=@フォーム明細部.セクションの高さ
/* フッタ部の高さ */ &フッタ部高さ=&部合計高さ-&ヘッダ部高さ-&明細部高さ
/* 本文の高さ */ オブジェクト操作 &本文始点Y=@t本文.始点Y オブジェクト操作 &本文ファイル高さ=@t本文ファイル.高さ &本文高さ=&フッタ部高さ-&本文始点Y-&本文ファイル高さ
/* 表示 */ 条件 ( &本文高さ<400 ) 手続き終了 * 条件 ( &表示行数<1 ) 手続き終了 ←削除 オブジェクト操作 &明細部高さ初期値=@フォーム明細部.セクションの高さ ←追加 オブジェクト操作 &フッタ部高さ初期値=@フォームフッタ部.セクションの高さ ←追加 if (&明細部高さ=&明細部高さ初期値 .and &フッタ部高さ=&フッタ部高さ初期値) ←追加 手続き終了 ←追加 end ←追加 if (&明細部高さ>&明細部高さ初期値) /* 明細部が高くなる場合(ちらつき防止) */ オブジェクト操作 @フォームフッタ部.セクションの高さ=&フッタ部高さ オブジェクト操作 @t本文.高さ=&本文高さ オブジェクト操作 @t本文ファイル.始点Y=&本文高さ+&本文始点Y オブジェクト操作 @t添付ファイル.始点Y=&本文高さ+&本文始点Y オブジェクト操作 @フォーム明細部.表示行数=&表示行数 オブジェクト操作 @フォーム明細部.セクションの高さ=&明細部高さ else /* 明細部が低くなる場合(ちらつき防止) */ オブジェクト操作 @フォーム明細部.セクションの高さ=&明細部高さ オブジェクト操作 @フォーム明細部.表示行数=&表示行数 オブジェクト操作 @t本文.高さ=&本文高さ オブジェクト操作 @t本文ファイル.始点Y=&本文高さ+&本文始点Y オブジェクト操作 @t添付ファイル.始点Y=&本文高さ+&本文始点Y オブジェクト操作 @フォームフッタ部.セクションの高さ=&フッタ部高さ end
/* 描画更新 */ メソッド呼び出し @フォーム.再描画(1) メソッド呼び出し @フォーム.描画更新() End
|