描画領域サイズオーバーの問題が片付いた

VAIO2に(一昨日)仕掛けてあった渋沢一族の完全木テストの結果がダンプされていたので記録しておこう.所要時間1時間57分となっているが,時計の針は少なくとも一周しているので26時間掛かっている.

包括テストI 完全木テストを完了しました.
ご協力ありがとうございました.

C:\Users\babalabo\Desktop\渋沢一族8.ZEL
サンプル点数: 829 経過時間:01:56:51 検定図面数: 7461面
計算時間:12.52 秒/面 99.81 ms/点 延べ点数: 935925点

描画領域サイズオーバーの問題が片付いた.かなりあちこち調整する必要があった.主な点を挙げてみると,

  1. ZoomListTool_SelectedIndexChanged SendKeys.Send(“{ENTER}”)を廃止し,SendKeys.Send(“{BACKSPACE}”)を実行する
  2. MDIForm_KeyDown Keys.EnterではSetZoomRateを実行し,Keys.BackではResetZoomRateを実行する
  3. SetZoomRate Zelkova1.ZoomSetを引数ZOOM_RESETで呼び出す
  4. ResetZoomRate Zelkova1.ZoomSetを引数ZOOM_NOMSGで呼び出す
  5. CZelkovaCtrl3::ZoomSet CtrlZoomSetの戻り値がERR_ZOOMOVERRANGEのときはActionCenteringを実行する
  6. CtrlZoomSet 引数がZOOM_RESETのときは,TreeView->OVERSIZEをリセット,ZOOM_NOMSGでは保持してZoomSetを実行する
  7. TREEVIEW::CheckDispSizeOver OVERSIZEがオンのときは,「この図面は~以上には拡大できません」の表示を抑制する
  8. TREEVIEW::LimitSizeOver 描画領域サイズオーバーが発生した場合には,OVERSIZEをオンにする
  9. TREEVIEW::Zoom OVERSIZEならERR_ZOOMOVERRANGEを返す
  10. TREEVIEW::ZoomIn,ZoomOut ZoomSetを呼び出す前にOVERSIZEをリセットする

要点は,①エラーコードERR_ZOOMOVERRANGEがアプリ側まで伝達されるように経路を整備(渡せないところではTREEVIEW::OVERSIZEを使う),②警告パネルが重複表示されるのを抑制,③ズーム倍率リストのテキスト変更でリターンキーが押された場合,④ズーム倍率リストのインデックスが変更された場合の動作を(外形的に)統一する.⑤エラーが発生した場合にズームタイマーを確実に止めるなど.コンボボックスのSelectedIndexChangedイベントをキャンセルできないという不都合に対処するために,キーイベントを送ってイベントハンドラで遅延処理するという仕掛けを作り込んだのは2017年頃のようだ.デバッグモードではこの操作が止めてあったため気付かなかった.

系図画面ないし一覧画面上での選択動作にいろいろと不具合がある.選択操作と部分図操作は切っても切れない関係があるので,正しく動いてくれないと甚だ都合が悪い.特に一覧画面上の動作が悪い.まず,最初に一覧画面上に表示されているレコード数をチェックできるようにしておこう.⇒ModeNameChangeの末尾で以下を実行するようにした.

CardTable.Text = TitleName + “ 《” + ModeName + “》” + “ ” + Str(CardTable.CardGridView.Rows.Count) + “点”

これでほとんどカバーできるようだ.数字も合っている.選択されているカードの数も出しておこう.CardGridView_SelectionChangedでModeNameChangeを実行するようにして同期が取れるようになった.

一覧画面上での選択操作は系図画面上の選択されたカードと同期している.また,カード画面に表示される主選択カードも同期している.問題は,系図画面上での操作が一覧画面に反映しないという点だ.カードが1点だけの場合は一覧画面にも反映される.また,選択解除も同期しているが,複数選択になるとまったくダメだ.

しかし,「まったくダメ」という訳でもない.入る場合と入らない場合がある.しかし,ほとんど入るという場合がない.親族図で複数選択して部分図に移動すると一覧画面でも複数選択になる場合がある.ただし,このとき部分図は無選択状態になっている.また,何かの拍子で選択が反転して「訳が分からない状態」になる場合もある.⇒渋沢一族ではサンプルが大き過ぎる.親族呼称図を使うことにしよう.

▲系図画面設定の動作がおかしい.結婚マークを表示する→ 人名枠線を表示するとして結婚点が下枠の高さに表示されてしまう.⇒ただし,この事象は再現しない.また,結婚マークを表示するをオン・オフしても画面に反映されない.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA