ブログ主が仕事や個人的に学んだPC系・プログラミング系(VBAとかHTML)について書いていく備忘録ブログ。
※ここで記載する内容はあくまで「個人的に」上手くいく内容です。ご使用には十分注意してください
Posted by 若槻風亜 - 2016.03.18,Fri
(対象)VB2010(VB.NET)
今回はVB2010でのタブコントロール(タブページ)の
ドラッグ&ドロップによる並べ替えです。
ドラッグ&ドロップによるタブの並べ替えはタブコントロールを
使用する際、それがユーザーが増やせるタイプであれば
あるほど欲しくなる機能だと思います。
しかし、いざ検索しても出てくるのは難しい
ものばかり。かく言うブログ主も挑戦して
挫折しました。
それでも何とか並べ替えしたい。
そう思って試行錯誤した結果、簡単に並べ替えられる
方法を作成できました。
それがこちら↓
(必要なコントロール)
・TabControl(名前:TabControl1)
・Timer(名前:Timer1)
(ソース)
'■変数
Public Tab1 As TabPage '---移動するタブ
Public Tab2 As TabPage '---移動先のタブ
Public TabPosX1 As Double '---移動するタブのX位置
Public TabPosY1 As Double '---移動するタブのY位置
Public TabPosX2 As Double '---移動先のX位置
Public TabPosY2 As Double '---移動先のY位置
Public TimeCount As Integer '---MouseMoveしている間にカウントされ続ける値
Public I As Integer '---諸動作
Public SortFlg As Boolean '---ソート中かどうかの判断用
'===========================================================
' タブの並べ替え
' ※右に移動 = 色が変わったタブの右側に移動
' ※左に移動 = 色が変わったタブの左側に移動
'===========================================================
'1.MouseDownで現在のタブを取得
Private Sub TabControl1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseDown
'■現在地(X-Y)
TabPosX1 = e.X
TabPosY1 = e.Y
'■タブの取得
I = -1 : Tab1 = Nothing
For cnt = 0 To TabControl1.TabCount - 1
If TabControl1.GetTabRect(cnt).Contains(TabPosX1, TabPosY1) Then Tab1 = TabControl1.TabPages(cnt) : I = cnt : Exit For
Next '---タブの数だけ回すFor-Next
'■タイマーをオンにして加算を開始
TimeCount = 0
Timer1.Start()
End Sub
'2.タイマーで値を増やす:Timerは200ミリ秒くらいごとに起動するようにしておく
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'■値を加算し、ゼロを超えれば長押し中なのでカーソルの形式を変える
TimeCount += 1
If TimeCount > 0 Then Cursor = Cursors.NoMoveHoriz
End Sub
'3.移動先の場所を取得
Private Sub TabControl1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseMove
'■カーソルのある位置を動くたびに取得
TabPosX2 = e.X
TabPosY2 = e.Y
End Sub
'4.MouseUpされたとき、ただのクリックか長押しかを判断し、長押しならマウスが離された先に移動
Private Sub TabControl1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseUp
'■TimerCountの値が2未満なら処理を抜ける(2以上ある場合は確実に長押し)
Cursor = Cursors.Arrow '---カーソルを元に戻す
Timer1.Stop() '---タイマーを止める
If TimeCount < 2 Then Exit Sub
'■移動先のタブを取得
I = -1 : Tab2 = Nothing
For cnt = 0 To TabControl1.TabCount - 1
If TabControl1.GetTabRect(cnt).Contains(TabPosX2, TabPosY2) Then Tab2 = TabControl1.TabPages(cnt) : I = cnt : Exit For
Next '---タブの数だけ回すFor-Next
If IsNothing(Tab2) Then Exit Sub
'■現在のタブを指定位置に追加し、元々のタブを削除
SortFlg = True '←SelectIndexChangeに何か処理が入っておりそれを行われると困る場合はこれでIF分挟んで処理を抜ける
TabControl1.TabPages.Remove(Tab1)
TabControl1.TabPages.Insert(I, Tab1)
SortFlg = False
'■元々開いていたタブを開く
TabControl1.SelectedTab = Tab1
End Sub
以上です。通常の移動のやり方と違うので「+」のマークは出ませんし
少々不恰好です。
が、多少不恰好でもとにかく移動機能が欲しい! の方には
オススメかなと。
※この並べ替えは後日アップ予定のフリーソフトに
使用している機能です。
PR
Posted by 若槻風亜 - 2016.03.13,Sun
(対象)VB2010(VB.NET)
あると思いますが、サイト主は9割方以下の
方法を使用しています。
<保存>
Using FileWrite As New System.IO.StreamWriter _
(ファイルパス, Boolean, System.Text.Encoding.Default)
(ファイルパス, Boolean, System.Text.Encoding.Default)
FileWrite.WriteLine(保存内容)
End Using
FileWrite ・・・ StreamWriter型の変数名ファイルパス ・・・ 保存先のパスとファイル名(拡張子つき)
Boolean ・・・ True/Falseのいずれか。
True = 保存内容を末尾に追加
False = 保存内容ですべて上書き
※複数書き込みをしたい場合は「Do-Loop」や
「For-Next」で処理を回す
<読み込み>
Using FileRead As New IO.StreamReader _
(ファイルパス, System.Text.Encoding.Default)
Do Until FileRead.EndOfStream
(ファイルパス, System.Text.Encoding.Default)
Do Until FileRead.EndOfStream
変数 = FileRead.ReadLine
Loop
End Using
FileRead ・・・ StreamReader型の変数名ファイルパス ・・・ 保存先のパスとファイル名(拡張子つき)
EndOfStream ・・・ Boolean型。「ファイルを読み終わるまで」
ReadLine ・・・ 1行ごと読み込む。
Read = 1文字だけ読み込む
ReadToEnd = 全て読み込む
変数に入れなくても直接コントロールに格納
可能ですが、一度変数に入れてから中身が空だったり
形式がそぐわない場合の判断時にちょっと
見やすくなります。
Posted by 若槻風亜 - 2016.01.05,Tue
(対象)Excel VBA
(確認)Excel2010、2013
今回はExcelブック自体にパスワードをつける
方法です。
(手順)
1.Excel ブックを開く
2.名前をつけて保存
3.「ツール」-「全般オプション」
4.パスワードの設定
読み取りパスワード → 入力しないと中身も見えない
書き込みパスワード → 入力しなくても中身は見える
1)パスワード設定画面
2)読み取りパスワードを追加した場合、次に開く時
最初に出るダイアログ
3)書き込みパスワードを追加した場合、次に開く時
最初に出るダイアログ
4)読み取り専用を推奨するにチェックを入れた場合、
次に開く時出るメッセージ
2)~4)までは設定したものは全て表示される
このパスワードは忘れてしまうとどうしようも
ありませんのでご注意ください。
Posted by 若槻風亜 - 2015.09.30,Wed
<ソフト名>
CompareHeight
<機能>
1.登録した人物で身長比較
<開発言語>
VB2010
<使用用途>
1.登録した人物の身長をグラフにして比較する
(作成者は創作キャラの身長差を見るために作成しました。
Excelとか写真屋とかでいちいち作るの面倒だったのです。。。)
<ファイル>
(クリックするとダウンロードが始まります)
(内容物)
1.本体(CompareHeight.exe)
2.ReadMe_CompareHeight.txt
3.dataフォルダ(ない場合は作成される)
(ウィルス検査)
済み。異常なし
(注意1)
動作には十分注意して作成しましたが、
ダウンロードして使用する場合は自己責任で
お願いします。
(注意2)
GoogleChromeでダウンロードしようとすると
ブラウザの仕様上以下のメッセージが出ますが
以下より詳細説明
Posted by 若槻風亜 - 2015.07.01,Wed
(対象)Windows7
(やりたいこと)
パブリックネットワークを消して社内ネットワークにつなげ直す
通常はネットワークと共有センターの「接続または切断」の
「ネットワークの場所の結合または削除」で削除できますが、
消したくても「削除」のボタンが使えないことがあります。
以下は削除ボタンを使えるようにするやり方とも言える
でしょうか。
(ちなみにブログ主はこのやり方で上手くいくまで上の
削除ボタン使えた試しがありません)
なお、もしかしたら以下の方法の5番で削除じゃなくて
「無効」にして立ち上げ直したら同じことが
出来るかもしれません(未実証)
※LANケーブルをつないでいる場合での説明です
※ブログ主は以下の方法で出来ましたが、実行する場合は
自己責任でお願いします
(方法)
1.LANケーブルを外しておく
2.「コントロールパネル」-「デバイスマネージャー」
3.「ネットワーク アダプター」を展開
4.「ローカルエリア接続」で使用している
ネットワークを選択(※1)
5.右クリック-「削除」
!この時「このデバイスのドライバーソフトウェアを
削除する」のチェックは必ず外しておく
6.再起動
7.「コントロールパネル」-「ネットワークと共有センター」
8.「接続または切断」-「ネットワークの場所の結合または削除」
9.該当ネットワークの削除
10.IP等の再設定
11.LANケーブルをつなぐ
12.ネットワークの選択画面が出るので
「社内ネットワーク」を選択する
※1ローカルエリア接続で使用しているネットワークの
確認の仕方
1)「コントロールパネル」-「ネットワークと共有センター」
2)「アダプターの設定の変更」
3)「ローカルエリア接続」の灰色文字の部分に書かれている
ちなみに上記は会社での出来事で、ワークグループに
入っているPCで行った作業です。
ドメインに入っているPCで可能かどうかは分かりません。
(出来るといいのですが……。うちの会社ドメインメインなので)
プロフィール
HN:
若槻風亜
性別:
女性
職業:
会社員
趣味:
創作、プログラミング
自己紹介:
仕事や個人で学んだことをまとめておきたかったがために備忘録ブログを立ち上げました。
あくまで自分が学んだこと・自分が出来たことなので、ご覧くださる場合は参照レベルでお願いします。
あくまで自分が学んだこと・自分が出来たことなので、ご覧くださる場合は参照レベルでお願いします。
ブログ内検索
カレンダー
最新記事
(12/31)
(12/30)
(03/27)
(11/09)
(10/07)
P R
最新トラックバック
コガネモチ
フリーエリア
Template by mavericyard*
Powered by "Samurai Factory"
Powered by "Samurai Factory"