OBJECT DUPLICATEについて

Go down

OBJECT DUPLICATEについて

投稿 by osaru on 2017-09-09, 12:58 pm

お世話になります。

OBJECT DUPLICATEにつきまして、動的にオブジェクトを生成できるのは大変便利なのですが、REMOVEする方法はないのでしょうか?生成できるということは当然削除もできると思ってリファレンスを探しても削除できそうなコマンドがありませんでしたので・・・

また、複製したオブジェクトはコピー元と同じページに生成される様ですが、異なるページに移動する方法がございませんでしょうか?OBJECT MOVEがページについて言及されていない所を見るとやはりこちらも不可能ということでしょうか?もちろん先にページ移動を行なった上でDUPLICATEしても、元のページに複製が作成されている様でした。

この2点が解決できればかなり手間(マウス操作でフォームレイアウトを調整する)を減らして複雑なレイアウトを制御できそうなのですが・・・どうせならDUPLICATEだけでななくNEWできるようになると、さらにハッピーになる人も増えるかも?・・・

よろしくお願い致します。

osaru

投稿数 : 32
登録日 : 2017/08/14

トップに戻る Go down

Re: OBJECT DUPLICATEについて

投稿 by miyako on 2017-09-10, 12:02 pm

こんにちは。

お気づきのように,OBJECT DUPLICATEで追加したオブジェクトを削除するコマンドは用意されていません。

たとえば,カレントセレクションのレコード数に応じ,ラジオボタンの数が増減するような画面を考える場合,フォーム上で直接,オブジェクトを作成したり,削除したりするのではなく,可変部分をサブフォームウィジェットとして設計し,OBJECT SET SUBFORMで都度,その領域を再描画するような仕組みを利用できるかもしれません。おそらく,オブジェクト数をキープして,追加と非表示で擬似的に管理するよりも,シンプルだと思います。

フォームのページを切り替える方法は,簡易的に画面を作るには便利ですが,さらに凝った画面を作るには,v12のサブフォームウィジェットのほうが適していると思います。その場合,概念的に競合する複数ページの仕組みは使用せず,原則的に1ページのフォーム上でウィジェットの内部を切り替えます

法則性のあるオブジェクト名を使用し,1ページのフォームにオブジェクトを重ねてレイアウトを設計する方法もあります。その場合,オブジェクトビューを活用し,特定「ページ」のオブジェクトだけをフォームエディターに表示することができます。

http://doc.4d.com/4Dv15/4D/15.3/Using-object-views.300-3162537.ja.html

Alt/option+クリックにより,0ページのオブジェクトを選択する方法,Control+command+クリックにより,オブジェクトの背後にあるオブジェクトを選択する方法(v2004より)も知っておくと便利です。

http://doc.4d.com/4Dv15/4D/15.4/Inserting-and-organizing-form-objects.300-3285333.ja.html

miyako

投稿数 : 248
登録日 : 2016/07/05

トップに戻る Go down

Re: OBJECT DUPLICATEについて

投稿 by osaru on 2017-09-16, 10:40 am

miyakoさま、お世話になります。
生成したオブジェクトを削除できないのは残念ですが、用途はさほど多くないですよね。
また、代替え案も含め、いろいろな情報を開示いただき感謝しております。

やはりオブジェクトを動的生成できるのは大変便利でございます。


DBが全く絡んでいないので恐縮ですが、おかげさまで、監視カメラの映像をリアルタイム表示するフォームにて、一つのピクチャ変数のみ配置したフォームで、2x2から8x5までの任意のマトリックス表示ができるようになりました。ネイティブに組み込まれたHTTPクライアントとワーカープロセスからの非同期コールバックのおかげで大変効率良いらしく、8台くらいであれば、以前にTCPコマンドで1台のカメラ映像を表示更新していたよりもCPU負荷が少ないくらいです。

フォームリサイズ時のイベントで動的にオブジェクトもリサイズ&移動するのですが、縮小方向に引っかかってしまうのが、オブジェクトの上下左右拡大オプションをONにすることで回避できることに気づきこちらも解決できました。

ありがとうございます。

osaru

投稿数 : 32
登録日 : 2017/08/14

トップに戻る Go down

Re: OBJECT DUPLICATEについて

投稿 by 矢嶋研一 on 2017-10-05, 3:58 pm

横レスで申し訳ありません。
OBJECT DUPLICATEでスクリプトから動的にフォームを生成するようにいて、オブジェクトを多量に生成した場合にフォームを閉じる時にやけに時間がかかるようになってしまうため、対策を考えていたので、タイムリーでした。
OBJECT SET SUBFORMでサブフォームとして実装することで、オブジェクトをクリアできました。
でも、OBJECT SET SUBFORMは、同一のフォームを指定した場合は、フォームの再ロードができません。
ですので違うフォームをロードし、タイマーで一旦メソッドを終了した上で、再度本来のフォームをフォームメソッド中でロードするようにしています。
これって、もう少しスマートな方法ってないでしょうか。

矢嶋研一

投稿数 : 9
登録日 : 2016/07/12

トップに戻る Go down

Re: OBJECT DUPLICATEについて

投稿 by miyako on 2017-10-05, 9:30 pm

未検証ですが,「継承されたフォーム」の仕組みを利用し,実質的に同一のフォームを"別名"で参照して交互に切り替える,というのはどうでしょうか。

miyako

投稿数 : 248
登録日 : 2016/07/05

トップに戻る Go down

Re: OBJECT DUPLICATEについて

投稿 by 矢嶋研一 on 2017-10-05, 10:29 pm

実験してみました。ナイスアイデアです!!
うまい具合に動きます。ありがとうございました。

矢嶋研一

投稿数 : 9
登録日 : 2016/07/12

トップに戻る Go down

Re: OBJECT DUPLICATEについて

投稿 by Sponsored content


Sponsored content


トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可