4D-JUG
Would you like to react to this message? Create an account in a few clicks or log in to continue.

階層リストボックスにて

2 posters

Go down

階層リストボックスにて Empty 階層リストボックスにて

投稿 by osaru 2019-06-05, 2:17 pm

お世話になります。

階層リストボックスにて 110

列にプロセス変数配列を割り当てず、フォーム生成時に動的に4Dによる変数生成を任せる場合、デザインモードでGUIにて列を選択し階層を作成実行ができない・・・というのも階層のブレーク行を構成すべき変数名が設定されていないのですから、これは仕方ないと思います。一方コマンドLISTBOX SET HIERARCHYを使って設定した場合、非表示になるべき列が表示されたままで、別の列項目が表示されてしまいます。LISTBOX SET HIERARCHYでは左から3列分の動的配列ポインタを指定してみました。

列が非表示にならないのはそういう物と思えばまぁいいとして、別の項目が表示されるのが謎です。(インデントされている様なので1列目を微妙な列幅に設定する事で表示された項目は隠すことは可能なようでしたが、今度は2列目Nameの列は完全に隠す事ができません)

1列目の表示に3列目の項目が表示され、なぜか2列目Name列のヘッダークリックソートで、降順になったときか、何度かソートを繰り返した時4Dがクラッシュしてしまいます。

GUIで表示する為の列名定義したリストボックス枠をサクッと作って、Selection to JSONしてJSON PARSE ARRAYしたオブジェクト配列をそのリストボックスに適用処理すると、相当ラクに見栄えするレイアウトが作れて便利で、できればコード側でやりたいことが完結できると嬉しいのですが・・・これはv16の問題なのでしょうか?それとも4Dによる動的配列変数生成に係わるのでしょうか?

osaru

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

トップに戻る Go down

階層リストボックスにて Empty Re: 階層リストボックスにて

投稿 by osaru 2019-06-05, 2:38 pm

済みません。クラッシュログ貼り忘れていました。
Code:

Thread 25 Crashed:: P_1 (id = -8)
0   com.apple.CoreServices.CarbonCore   0x00007fff45ee87ec CSMemGetHandleSize + 35
1   com.apple.CoreServices.CarbonCore   0x00007fff45eff932 CSMemHandToHand + 40
2   com.apple.CoreServices.CarbonCore   0x00007fff45eff8f7 HandToHand + 11
3   com.4d.4d                        0x00000001042e635b handletohandle(char**, char***) + 25
4   com.4d.4d                        0x000000010412a07f QSortMultiArray::Reorder() + 127
5   com.4d.4d                        0x000000010412abe3 QuickSortArrayCV(sortarraysLink*) + 112
6   com.4d.4d                        0x0000000104826ad3 VFormGrid_Array::_SortColumns(xbox::VArrayLong&, xbox::VArrayLong&, unsigned char) + 4335
7   com.4d.4d                        0x00000001048451b9 VFormGrid::SortColumn(int, ESortOrder) + 331
8   com.4d.4d                        0x000000010484ca3b VFormGrid::DoFrameMessage(xbox::VFrameMessage const&) + 3987
9   com.4d.4d                        0x00000001048667d6 VGridView::DoFrameMessage(xbox::VFrameMessage const&) + 40
10  com.4d.gui                       0x0000000106b840a3 xbox::VFrame::_DispatchFrameMessage(xbox::VFrameMessage&) + 25
11  com.4d.gui                       0x0000000106b84084 xbox::VFrame::SendFrameMessage(xbox::VFrame&, xbox::VFrameMessage&) + 36
12  com.4d.gui                       0x0000000106b779d2 xbox::VListHeader::DoEndTracking(int) + 580
13  com.4d.gui                       0x0000000106b91f77 xbox::VControl::DoMouseUp(xbox::VMouseEvent const&, xbox::VPointOf<double>&) + 117
14  com.4d.gui                       0x0000000106b76d35 xbox::VListHeader::DoMouseUp(xbox::VMouseEvent const&, xbox::VPointOf<double>&) + 247
15  com.4d.gui                       0x0000000106b83a67 xbox::VFrame::MouseUp(xbox::VMouseEvent const&, xbox::VPointOf<double>&) + 209
16  com.4d.4d                        0x00000001048b6575 VFormFrame::DoMouseUp(xbox::VMouseEvent const&) + 103
17  com.4d.4d                        0x000000010484b5eb VFormGrid::DoMouseUp(xbox::VMouseEvent const&) + 95
18  com.4d.4d                        0x000000010417f637 saisierec::HandleEvent(V4DEvent*) + 649
19  com.4d.4d                        0x000000010417f231 drivesaisie(saisierec*, V4DEvent*) + 147
20  com.4d.4d                        0x00000001048ca3ad V4DEventScope::_ProcessEvent(V4DEvent*, saisierec*) + 85
21  com.4d.4d                        0x00000001048ca4ba V4DEventScope::RunEventLoop(saisierec*) + 42
22  com.4d.4d                        0x000000010418b4e5 dialogue(calcblock*, VCurrentForm const&) + 637
23  com.4d.4d                        0x0000000104781eb6 do_dialog(runtime4dLink*) + 184
24  com.4d.4d                        0x00000001043e4b46 VDBLanguageContext::ExecuteCommand(runtime4dLink*) + 62
25  com.4d.4d                        0x00000001042f2d5d calcul_subanalyse(short, champvar_template<256>*, calcblock*, calculLink*) + 384
26  com.4d.4d                        0x00000001042ee8ad calculLink::Execute(champvar_template<256>*) + 2079
27  com.4d.4d                        0x00000001042d5405 cct_interpreted(cctLink&) + 2266
28  com.4d.4d                        0x00000001043d8403 VDBLanguageContext_interpreted::DoExecute(calcblock&, VCodeDescriptor*) + 311
29  com.4d.4d                        0x00000001043e3908 VDBLanguageContext::Execute(VDB4DTableProxy*, VFormContext*, short, int, int, champvar_template<256>**, VCodeDescriptor*) + 162
30  com.4d.4d                        0x00000001043e3582 VDBLanguageContext::ExecuteProjectMethod(VMethodInfo const*, int, champvar_template<256>**, VDB4DTableProxy*, VFormContext*, short, int) + 542
31  com.4d.4d                        0x00000001043b82ac V4DWorkerMessage::_Execute(VDBLanguageContext*, VFormContext*) + 110
32  com.4d.4d                        0x00000001043b8bc0 V4DWorker::Run(V4DTaskConcrete*) + 208
33  com.4d.4d                        0x00000001043b28f6 Task4DProc(V4DTaskConcrete*) + 910
34  com.4d.4d                        0x0000000104813338 V4DTaskManager::_Task4DProc(xbox::VTask*) + 160
35  com.4d.kernel                    0x00000001069332ae xbox::VTask::_Run() + 78
36  com.4d.kernel                    0x0000000106938486 xbox::XMacTask_fiber::_ThreadProc(void*) + 70
37  com.4d.kernel                    0x000000010697222f xbox::VMacFiber_thread::_ThreadProc(void*) + 31
38  com.apple.CoreServices.CarbonCore   0x00007fff45f76ea4 CooperativeThread + 282
39  libsystem_pthread.dylib          0x00007fff70de02eb _pthread_body + 126
40  libsystem_pthread.dylib          0x00007fff70de3249 _pthread_start + 66
41  libsystem_pthread.dylib          0x00007fff70ddf40d thread_start + 13

osaru

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

トップに戻る Go down

階層リストボックスにて Empty Re: 階層リストボックスにて

投稿 by osaru 2019-06-06, 8:37 am

osaru wrote:今度は2列目Nameの列は完全に隠す事ができません)
列の表示は最大幅0最小幅0幅設定0で隠すことができました。

osaru

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

トップに戻る Go down

階層リストボックスにて Empty Re: 階層リストボックスにて

投稿 by miyako 2019-06-08, 12:28 pm

階層リストボックスは,あまり使用する機会がないのですが,フォームエディターで作成する場合,コードでLISTBOX SET HIERARCHYする場合, どちらにしても,階層モードでグループ化される列オブジェクトは明示的に削除する必要があったと記憶しています。(LISTBOX DELETE COLUMN)OBJECT SET VISIBLEを列オブジェクトに対して実行するだけでも良かったのか,憶えていません。列幅で隠すよりは,良いはずです。

オブジェクト型配列でリストボックスを・・・というアイデアは,v17のコレクション型リストボックスで実現していますし,動的変数配列で・・・というテクニックも,v17のFormコマンドやJSONフォームにより,使用する機会がめっきり減りました。Selection to JSONも,ほぼ役割を終えたように思えるかもしれません。

miyako

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

トップに戻る Go down

階層リストボックスにて Empty Re: 階層リストボックスにて

投稿 by osaru 2019-06-09, 11:29 am

miyakoさんありがとうございます。クラッシュする件は、隠すことで回避できました。また、階層にした場合の第一列目内容の動作で他の列の内容が標示される事も何ら不自然で無い事が理解できました。理解が遅くて申し訳ありません。

v17への移行は、もう一寸先になりそうで残念なのですが、随分と楽になりそうで楽しみです。

他に少し気になったのですが、カーソルキーでの移動が変ではありませんでしょうか?上下のカーソル移動で意図する行に移動できず、上端や下端にジャンプしていました。

osaru

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

トップに戻る Go down

階層リストボックスにて Empty Re: 階層リストボックスにて

投稿 by Sponsored content


Sponsored content


トップに戻る Go down

トップに戻る


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