明細画面の最終行にカーソル移動
リッチクライアントの親子形式のデータ入力画面で明細データ入力画面にカーソルが
移動した時に最終行に位置づけする事は可能でしょうか。明細画面のタスク前でイベント
を設定しましたが思った動きになりません。ご教示頂ければありがたいです。
-
説明が不足していましたが親タスクの表示形式が一覧形式となっており、子タスクでのタスク前で
テーブル末尾イベントを発行すると親タスクのテーブルの末尾にカーソルが移動します。
子タスクの中でテーブル末尾へ移動できればいいのですが。
-
それはやった事ないので試してみました。説明しにくいのですが、親タスクで子タスクのメインソースで定義しているテーブルを降順で照会リンクしておき、子タスクは降順の位置となる項目をパラメータで受け取って位置付:最小に受け取ったパラメータを設定するとそのような動作になります。
最終行に位置づけすると子タスクの見た目が常に最終行の1行になるので、動作環境>動作設定>RIAで画面中央位置付をYesにしてみましたがやっぱり見た目は一行でした。。
-
連投すいません。翌々考えたら、子タスクの最終行に追加で入力していきたいのだと思います。となった場合親の照会リンクがあてにならなくなるので、あまりスマートな方法ではなかったです。
-
HRTさん、画期的なアイデアですね。見た目が1行になるのだけを解決できるといいですね。
-
tanda様
画期的でしたか。ありがとうございます。あまり画面操作系のイベントを自動で起こしたくないのですよね、怪奇現象が起きるというかカーソルが浮くというか、この感覚伝わる方いるでしょうかw
-
たしかに、です。画面操作系のイベントは無限ループに陥る(カーソルが浮く)危険性がありますしね。
-
皆様
ご回答ありがとうございます。
子タスクの先頭項目のコントロール前にテーブル末尾イベントを設定すると無限ループとなりました。
何らかの形で親タスクから来た時という条件が指定できれば実装できそうです。ただ、その条件指定が
難しそうです。
-
ISHIJIMA様
ありがとうございます。親に設定を設定し下記の手順とする事で実装できました。
親タスク
レコード前 変数にTrueを代入
子タスク
先頭項目 コントロール前
イベント テーブル末尾 条件:変数がTrue
変数にFalseを代入
-
ISHIJIMAさん、いいアイデアですね。
-
> 子タスクの先頭項目のコントロール前にテーブル末尾イベントを設定すると無限ループとなりました。
> 何らかの形で親タスクから来た時という条件が指定できれば実装できそうです。
> ただ、その条件指定が難しそうです。SubformExecMode(0) =0の時にテーブル末尾イベントを実行するのはいかがでしょうか?
-
nkmtさん、いつのまにかそんな関数が用意されていたんですね。情報をありがとうございます。
-
サブフォームイグゼクモードについてこのスレッドで話題に出てこなかったので投稿してみただけです。悪しからず。
今回の質問者様の作りはリアで、親タスクも子タスクもテーブルコントロールなのでしょうね。おそらく。
私もリアで実験してみますね。 -
本筋の解決方法とは異なりますが、テーブル末尾イベントではなく位置付けで実現するとすれば、そのデータのマックス明細行−数行分の値で位置付けをするのもありでしょうか?
これも実験はしておらず、まだ空想の次元です。悪しからず。
-
サブフォームイグゼモード関数は、クラサバの親子タスクの子タスクで、子タスクにカーソル移動した時だけ処理したい子タスクのタスク前処理ではよく使ってます。
-
私のところではnkmtさんのアイデア通りで、うまく動いていますよ。子タスクのタスク前処理で「テーブル末尾」のイベントを発動するときの条件に、「SubformExecMode(0)=0」と入れているだけです。
Magicの逆引きヘルプにもやり方が載っていますよ。もちろん、RIAです。
-
そうですね。RIAはタスク前処理がクラサバとは動きが異なるので、SubformExecmodeを用いてAkira様が求めている事は私も実現できておりません。子タスクの最初の項目へ降りた時だけは、明細の最終ページを表示しますからね!という制限付きでお客様の了解を得るとか・・・。
-
子タスクに、最終ページ表示済変数 という論理値を用意して
子タスクレコード前処理 で 最終ページ表示済変数がFalseなら・・・というブロック文を用意。
テーブル末尾イベント実行はいかがでしょうか? -
ISHIJIMAさんのアイデアの変数を用いる方法と、nkmtさんのアイデアのSubFormExecMode()関数を使用する方法とで、表面的にはまったく同じ動きとなっています。両者とも正常に動作しています。
-
実験してみましたが、思った動きにはまだなりません。
-
tandaさんの投稿は今、拝見しました。投稿が前後したようです。
tandaさんは、なんかいい感じに出来たのですね。 -
子タスクに、タスク前処理を設け
そこに イベント実行 テーブル末尾 を記載すると
F8チェックで、エラーになりました。
サーバ側のロジックユニットには、クライアント側の処理コマンドを含めることができませんと。 -
RIAは子タスクに制御変数を用意して、子タスクで値を更新し
カーソルを親へ戻し、
また子タスクに戻った時、子タスクの制御変数は初期値に戻らないのですね。
クラサバもそうでしたっけ? -
▲先頭を表示する!
▼末尾を表示する!といったボタンを画面に貼って、ユーザーにそのボタンを押してもらうのがもしかすると良かったりしますかね。RIAの場合。
RIAは動きを制御するのがクラサバよりも難しそうですね。
私はRIAはモバイルしか提供していないものですから。 -
ISHIJIMAさん、すみません。変数方式のほうは問題ないのですが、関数方式のほうはどういう訳かオンラインタスクになっていました。コピーしたときの拍子に間違えたようです。リッチでこれを行うとnkmtさんのようにF8でエラーになります。リッチの場合は変数方式がいいですね。ちなみに、関数方式はオンラインではうまく行きます。
サインインしてコメントを残してください。
コメント
24件のコメント