過去の桐井戸端BBS (桐ver.8)
17801 描画禁止メソッドで描画するスクロールバーやフォーム操作バーなどを隠したい アックン 2002/10/29-18:34
こんばんは。先日はありがとうございました。またよろしくお願いします。
m(__)m

たとえば一覧表形式のフォームに描画禁止メソッドを使うと、明細部を描画しませんね。
この点はいいのですが、
レコードスクロールバーとフォーム操作バーが描画されてしまうため、ちょっと不細工です。
原因を知らない人が見たら、あんりゃまあ(!)なんじゃこりゃ〜(?)となりまする。
で、このバーの描画を隠したいのでありますが、なにかいいアイデアありませんか?

なお、ウィンドウのサイズは可変です。
Ver.9市販版で改良されていればベリグーなのでありますが。
(私はまだバージョンアップ申し込みしておりません。)

・フォーム操作バーの設定
 メニューバー→書式→フォーム操作バー→下

・レコードスクロールバーの設定
 オブジェクトの属性→フォーム(タブ)→左側上から5番目→右


イベント例:
**------------------------
method @フォーム.描画禁止( 1 )
   :
ジャンプ 行番号 = T
while ( .not#eof )
  行訂正 [ナントカ] = ・・・・
  ジャンプ 行番号 = +1
end
   :
置換 終了状態=&end , \
    [カントカ] = ・・・・
method @フォーム.描画禁止( 0 )
**------------------------

 こういう質問ばっかりですみません。
お手すきのときに気が向いたらよろしく。 アックン(=^・^=)
17802 Re:描画禁止メソッドで描画する各種バーを隠す ONnoji 2002/10/29-20:22
記事番号17801へのコメント
アックンさん、こんばんは。

フォームの描画禁止( )メソッドを使わないで、
[多重化]コマンドで多重化したほうの表( .tbl )に対して[行訂正]や[置換]をしたらいかがでしょうか?
※多重化した表が絞りこまれている必要があれば絞りこんでください。
※処理が終了したら、多重化した表を[終了 表 編集対象表]とかで閉じます。

そうすると、レコードバーも動きませんし、ジャンプバーのレコードカウンターも動きません。
特にジャンプバーの行番号の描画が桐の処理速度を遅くしますので、見違えるくらいに速くなりますよ。

外していたらすいません。

17803 Re:描画禁止メソッドで描画する各種バーを隠す アックン 2002/10/29-21:03
記事番号17802へのコメント
ONnojiさん、こんばんは。さっそくありがとうございます。
ぼくも投稿してから、多重化することを思いつきました。
でも桐がある仕事場を離れて試しておりません。
見違えるほど速くなるとのことで、先駆者の存在は実にありがたいことです。
かなり処理速度がほしいところなので、解答おおいに助かります。

ちょっと前回の質問の表現はまずかったかもしれません。
隠すというよりも、バーの状態をを動かさない、つまりいわゆる「描画禁止」状態にしたいんです。
隠すだけなら他のオブジェクトを重ねればいいだけですから。
隠すという表現は適切でなかったです。ごめんなさい>みなさん
ONnojiさんはそこんところを理解してくださったので、ホ。(^^;

多重化すると、もう一方の表にも行訂正などの更新がただちに反映しますよね。
で、行操作は多重化した表に行って、閉じればよろしいと。
え? イベントで「終了 表 編集対象表」で閉じられたっけ。
すいません。これは自分で確かめます。
明日にでも早速試行してご報告しますね。

    アックン 猫マーク←いつもと違うパソコンだと辞書登録してなかった。(^^;
17805 Re:描画禁止メソッドで描画する各種バーを隠す アックン 2002/10/30-09:05
記事番号17803へのコメント
ONnojiさん、おはようございます。一発でうまくいきました。
これはほんと速いです。助かりました。ありがとうございました。m(__)m

フォーム操作バーのカウンターの現在行の数字が若干ちらつくので、
これが改善されるとうれしいです。(V8sp6使用)

・実際のイベント(一般手続き) やたら長くてややこしくてすみません。(^^;
method @フォーム.描画禁止( 1 )
 表 "ナントカ.tbl" /* 編集対象表とはまったく別のレコード数が多い表を開く */
   :
行集計 条件名 = "ABC"
データ行 無効
 var 数値 { &dmy , &table }
while ( .not#eof )
  &dmy = #setvar( ・・・・)
  ジャンプ 行番号 = +1
end
 編集表 "カントカ.tbl"  /* これが当フォームの本来の編集対象表 */
method @フォーム.更新モード設定( 0 )
多重化
&table = #table  /* 多重化で新たに編集対象表になった表の表番号を取得する。 */
  :
while ( .not#eof )
  行訂正 ・・・・ /* 上記で取得した変数で行訂正する。*/
  ジャンプ 行番号 = +1
end
 編集表 "ナントカ.tbl"   /* もう一度同様の処理を行う深い理由がある。(^^; */
行集計解除
行集計 条件名 = "DEF"
データ行 無効
while ( .not#eof )
  &dmy = #setvar( ・・・・ )
  ジャンプ 行番号 = +1
end
 編集表 &table  /* 多重化した表 */
 ジャンプ 行番号 = T
while ( .not#eof )
  行訂正 ・・・・
  ジャンプ 行番号 = +1
end
置換 終了状態=&end ・・・・
method @フォーム.描画禁止( 0 )
終了 表 編集対象表  /* 多重化した表を閉じる */
 /* 自動的にカントカ.tblが編集対象表になる。 */

                   アックン(=^・^=)

戻る