× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
文字列を区切る関数
"¥"などでも区切れるのでツリービューにも使えそうです。 使用例) Dim strDate As String Dim strSpt() As String Dim i As Integer strDate = "2007-06-25" strSpt = Split(strDate, "-") '←文字列と区切記号が引数 For i = 0 To UBound(strSpt) MsgBox strSpt(i) Next i Erase strSpt() '←とりあえず今回はもういらないので破棄 この場合は 'strSpt(0) 2007 'strSpt(1) 06 'strSpt(2) 25 'が配列に保存されている PR
●Modal
[OK] ボタンまたは [キャンセル] ボタンによってそのウィンドウを閉じるまで、ユーザーはほかのウィンドウに切り替えることができない。 ●Modeless ほかのウィンドウに切り替えるときに、[OK] または [キャンセル] ボタンによって閉じる必要がない。 ●フォームからタイトルバーを消す場合 MaxButton:最大化ボタン…False MiniButton:最小化ボタン…False Caption…なし ●タイトルバー非表示でフォームをドラッグする方法 1.WindowsAPIを使う 参考:www.microsoft.com/japan/msdn/vbasic/migration/tips/Movement/ Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _ ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Sub ReleaseCapture Lib "user32.dll" () Private Const WM_NCLBUTTONDOWN = &HA1 Private Const HTCAPTION = 2 Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button And vbLeftButton Then ReleaseCapture Call SendMessage(Form1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&) End If End Sub ※Form1は動かすフォームの名前 2.APIを使わない方法 参考:homepage1.nifty.com/kurichan/html/tips42.htm Public intTmpX As Integer Public intTmpY As Integer Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 'マウスの左ボタンが押下されたフォーム上のX座標、Y座標を変数に保存 If Button = vbLeftButton Then intTmpX = X intTmpY = Y End If End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'マウスの移動量をフォームの Top プロパティ、Left プロパティ に加算 If Button = vbLeftButton Then Form1.Left = Form1.Left + X - intTmpX Form1.Top = Form1.Top + Y - intTmpY End If End Sub ●Formを常に最前面にする 参考: jeanne.wankuma.com/tips/form/topmost.html homepage1.nifty.com/rucio/main/Samples/Sample063TopMost.htm ' SetWindowPos 関数 Private Declare Function SetWindowPos Lib "USER32.DLL" ( _ ByVal hWnd As Long, _ ByVal hWndInsertAfter As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal cx As Long, _ ByVal cy As Long, _ ByVal wFlags As Long _ ) As Long ' 定数の定義 Private Const HWND_TOPMOST As Long = -1 ' 最全面に表示する Private Const HWND_NOTOPMOST As Long = -2 ' 最前面に表示するのをやめる Private Const SWP_NOSIZE As Long = &H1 ' サイズを変更しない Private Const SWP_NOMOVE As Long = &H2 ' 位置を変更しない ' このフォームを常に最前面に表示する (サイズと位置は変更しない) Call SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE) ' 解除したい場合 Call SetWindowPos(Me.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
参考:
x7net.com/~access/AcTipsFrmUsingTreeView1.html x7net.com/~access/AcTipsFrmUsingTreeView2.html www.naka-net.com/y-mac/45.html www.philly.ne.jp/~hanya/vb/treeview.htm ●TreeViewの設定 Option Explicit 'ImageListのKey Private Const cstrCatImgClose As String = "CATOPEN" Private Const cstrCatImgClose As String = "CATCLOSE" Private Sub TreeViewLoad() Dim nodNode As Node 'ツリービューにイメージリストをセットする 'イメージリストはフォームのコントロールを用意しておいて 'あらかじめプロパティからイメージを追加・Keyの設定をしておく trvTest.ImageList = ImageList1 'ツリービューを表示する 'ツリー1段階目 Set nodNode = trvTest.Nodes.Add(, , "Yea", "Rot") nodNode.Image = cstrCatImgClose 'ツリー2段階目 Set nodNode = trvTest.Nodes.Add("Yea", tvwChild, "Mon", "Mon") nodNode.Image = cstrCatImgClose 'ツリー3段階目 Set nodNode = trvTest.Nodes.Add("Mon", tvwChild, "Day", "Day") End Sub ●ツリービューの展開にあわせてアイコンを変更する ①イベントハンドラで設定する方法 Private Sub trvTest_Collapse(ByVal Node As MSComctlLib.Node) Node.Image = cstrCatImgClose End Sub Private Sub trvTest_Expand(ByVal Node As MSComctlLib.Node) Node.Image = cstrCatImgOpen End Sub ②ツリービュー作成時に一緒に記述する方法 Set nodNode = trvTest.Nodes.Add(, , "Yea", "Rot",cstrCatImgClose) nodNode.ExpandedImage = cstrCatImgOpen ●"Day"を含むKeyが選択されたときだけラベルに表示してみる Private Sub trvTest_NodeClick(ByVal Node As MSComctlLib.Node) Dim strKey As String strKey = Node.Key If Not strKey = "Yea" Then If Not strKey = "Mon" Then lblDay.Caption = Node.Text Else lblDay.Caption = "" End If End If End Sub
□List関係の違い
ListBox…一行&ひとつの項目のみ表示できる ListView…item&Subitem(1)&Subitem(2)…で一行に複数の項目が表示できる ※Viewプロパティが 3-lvwReport の時のみ ※itemがコレクションで、subitemという同じクラスのものをまとめているような感じ □プロパティあれこれ View…リスト表示方法が変えれる FullRowSelect…一行まるごと選択したように強調表示ができる LabelEdit… 1-lvwManualで、ListView上で直接編集できなくさせられる 参考 itpro.nikkeibp.co.jp/article/COLUMN/20060720/243917/ officetanaka.net/excel/vba/listview/06.htm dobon.net/vb/bbs/log3-9/4884.html ListView 一行に対して複数の項目を表示したい 行がItemで、それぞれのカラムはSubItem View…Detail キーとなるいくつかの項目をListViewで一覧表示。 ListViewの一行を選択したら、 その行の編集可能な項目をtextボックス等で表示、 編集不可項目はlabelで表示。 DataGrid 一覧表示上で直接編集したい 編集した行としてない行の区別が難しい 例) http://dobon.net/vb/bbs/log3-9/4884.html参考です 自分memo用に少し変えさせてもらってます。 'ヘッダ設定 with ListView1 'カラムの追加 .Columns.Clear() '一応、クリアしておく .Columns.Add("会社コード", 200, HorizontalAlignment.Left) .Columns.Add("会社名", 400, HorizontalAlignment.Left) .Columns.Add("住所", 1000, HorizontalAlignment.Left) end with 'データ取得 (この部分は省略します) 'データ貼り付け With ListView1 .BeginUpdate() 'ちらつきを抑えるために、BeginUpdate()を呼ぶ。 .Items.Clear() 'ListViewItems をクリアする。 For i As Integer = 0 To <データ数 - 1> 'リストに格納 Dim items As New ListViewItem(<会社コードのデータ>) items.SubItems.Add(<会社名のデータ>) items.SubItems.Add(<住所のデータ>) 'ビューに描画 .Items.AddRange(New ListViewItem() {items}) Next .EndUpdate() 'EndUpdate() で表示を再開する。 |
カレンダー
最新記事
(06/05)
(05/26)
(04/17)
(04/17)
(04/17) Bkm
OTHERS
Powered by 忍者ブログ
Templated by TABLE ENOCH
| |