/*------------------------------------------------------------------------- * * ---------------------------------------------------------------------------*/ public sea_routes_form2(gvt_lib lib, GvoDatabase db) { m_lib = lib; m_db = db; InitializeComponent(); Useful.SetFontMeiryo(this, def.MEIRYO_POINT); m_disable_update_select = false; // tooltip toolTip1.AutoPopDelay = 30 * 1000; // 30秒表示 toolTip1.BackColor = Color.LightYellow; // ViewとDBを関連付けておく m_view1 = new list_view_db(listView1, m_db.SeaRoute.searoutes); m_view2 = new list_view_db(listView2, m_db.SeaRoute.favorite_sea_routes); m_view3 = new list_view_db(listView3, m_db.SeaRoute.trash_sea_routes); // 各ページの初期化 init_page1(); init_page2(); init_page3(); }
/*------------------------------------------------------------------------- * 全て選択状態にする * sub * ---------------------------------------------------------------------------*/ private void select_all(list_view_db view) { m_disable_update_select = true; for (int i = 0; i < view.db.Count; i++) { view.view.SelectedIndices.Add(i); } m_disable_update_select = false; selected_index_changed(view); }
/*------------------------------------------------------------------------- * 項目の設定 * ---------------------------------------------------------------------------*/ private void set_item(list_view_db view, RetrieveVirtualItemEventArgs e) { SeaRoutes.Voyage ii = get_route(view.db, e.ItemIndex); if (ii == null) { ListViewItem item = new ListViewItem("---", 0); item.SubItems.Add("---"); item.SubItems.Add("---"); item.SubItems.Add("---"); item.SubItems.Add("---"); e.Item = item; } else { e.Item = create_item(ii, view != m_view3); } }
/*------------------------------------------------------------------------- * 航路一覧が選択された * sub * ---------------------------------------------------------------------------*/ private void selected_index_changed(list_view_db view) { if (m_disable_update_select) { return; } // 選択状態をリセットする m_db.SeaRoute.ResetSelectFlag(); if (view.view.SelectedIndices.Count < 1) { return; } // 最初の項目をセンタリングする SeaRoutes.Voyage i = get_route(view.db, view.view.SelectedIndices[0]); if (i != null) { if (i.GamePoint1st.X < 0) { return; } if (i.GamePoint1st.Y < 0) { return; } m_lib.setting.centering_gpos = i.GamePoint1st; m_lib.setting.req_centering_gpos.Request(); } // 選択状態にする foreach (int index in view.view.SelectedIndices) { SeaRoutes.Voyage ii = get_route(view.db, index); if (ii == null) { continue; } ii.IsSelected = true; } }
/*------------------------------------------------------------------------- * リストの数を更新する * 一番上に表示されていたアイテムを描画範囲内にスクロールさせる機能付き * ---------------------------------------------------------------------------*/ private void update_list_count(list_view_db view) { ListViewItem item = view.view.TopItem; int index = -1; if (item != null) { index = item.Index; } // 一番下までスクロールした状態で項目数を減らすと例外がでる // ListViewのバグ? view.view.VirtualListSize = 0; // 例外対策 view.view.VirtualListSize = view.db.Count; // 新しい項目数 /* // 見える位置にスクロールさせる * if( (view.view.Items.Count > 0) * &&(Index > 0) ){ * // 一度一番下までスクロールさせる * view.view.EnsureVisible(view.view.Items.Count - 1); * // 目的のアイテムを一番上にする * // 一番上が無理なら適当な位置にスクロールする * view.view.EnsureVisible(Index); * } */ /* int Count = m_view1.view.Items.Count; * if(Count > 0){ * Rectangle rect = view.view.GetItemRect(Count - 1); // もっとも新しいアイテムのRect * view.view.Invalidate(view.view.RectangleToScreen(rect)); * } */ // 一番下が見える位置にスクロールさせる // 一番下の情報が最新のもの if (view.view.Items.Count > 0) { // 一度一番下までスクロールさせる view.view.EnsureVisible(view.view.Items.Count - 1); } }
/*------------------------------------------------------------------------- * 목록の수を업데이트する * 一番상に표시されていた아이템を그리기범위내にスクロールさせる기능付き * ---------------------------------------------------------------------------*/ private void update_list_count(list_view_db view) { ListViewItem item = view.view.TopItem; int index = -1; if (item != null) { index = item.Index; } // 一番下までスクロールした상태で항목수を減らすと例외がでる // ListViewのバグ? view.view.VirtualListSize = 0; // 例외対策 view.view.VirtualListSize = view.db.Count; // 新しい항목수 /* // 見える위치にスクロールさせる * if( (view.view.Items.Count > 0) * &&(Index > 0) ){ * // 一도一番下までスクロールさせる * view.view.EnsureVisible(view.view.Items.Count - 1); * // 目的の아이템を一番상にする * // 一番상が무리なら적당な위치にスクロールする * view.view.EnsureVisible(Index); * } */ /* int Count = m_view1.view.Items.Count; * if(Count > 0){ * Rectangle rect = view.view.GetItemRect(Count - 1); // もっとも新しい아이템のRect * view.view.Invalidate(view.view.RectangleToScreen(rect)); * } */ // 一番下が見える위치にスクロールさせる // 一番下の정보が최신のもの if (view.view.Items.Count > 0) { // 一도一番下までスクロールさせる view.view.EnsureVisible(view.view.Items.Count - 1); } }
/*------------------------------------------------------------------------- * 表示、非表示 * sub * ---------------------------------------------------------------------------*/ private void set_draw_flag(list_view_db view, bool is_show) { // 選択状態をリセットする m_db.SeaRoute.ResetSelectFlag(); if (view.view.SelectedIndices.Count < 1) { return; } m_disable_update_select = true; foreach (int index in view.view.SelectedIndices) { SeaRoutes.Voyage ii = get_route(view.db, index); if (ii == null) { continue; } ii.IsEnableDraw = is_show; } m_disable_update_select = false; }
/*------------------------------------------------------------------------- * 選択されている航路図リストを得る * リストがないときはnullを返す * ---------------------------------------------------------------------------*/ private List <SeaRoutes.Voyage> get_selected_routes_list(list_view_db view) { if (view.view.SelectedIndices.Count < 1) { return(null); } List <SeaRoutes.Voyage> list = new List <SeaRoutes.Voyage>(); foreach (int index in view.view.SelectedIndices) { SeaRoutes.Voyage ii = get_route(view.db, index); if (ii == null) { continue; } list.Add(ii); } if (list.Count <= 0) { return(null); } return(list); }