2009年10月29日


VB.net : LboxGrid : 列にボタンを実装する

Lboxgrid_den_btn
ボタン用のイベントは内部で定義しているユーザイベントです
' ************************************************
' カラム追加
' ************************************************
Me.LboxGrid1.AddColumn("COL_1", "コード")
Me.LboxGrid1.SetColumnWidth("COL_1", 40)

Me.LboxGrid1.AddColumn("COL_REF", "", lightbox.LboxColumnType.LboxColumnType_Button)
Me.LboxGrid1.Columns(1).DefaultCellStyle.BackColor = Color.Silver

Me.LboxGrid1.AddColumn("COL_2", "商品名")
Me.LboxGrid1.SetColumnWidth("COL_2", 150)
Me.LboxGrid1.Columns("COL_2").ReadOnly = True   ' この列は入力不可

Me.LboxGrid1.AddColumn("COL_3", "数量")
Me.LboxGrid1.SetColumnWidth("COL_3", 50)

' 右寄せにする為、ヘッダとカラム用のスタイルを作成する
Dim MiddleRight As DataGridViewCellStyle = New DataGridViewCellStyle
MiddleRight.Alignment = DataGridViewContentAlignment.MiddleRight
Me.LboxGrid1.Columns("COL_3").HeaderCell.Style = MiddleRight
Me.LboxGrid1.Columns("COL_3").DefaultCellStyle = MiddleRight

Me.LboxGrid1.AddColumn("COL_4", "単価")
Me.LboxGrid1.SetColumnWidth("COL_4", 50)
Me.LboxGrid1.Columns("COL_4").ReadOnly = True   ' この列は入力不可
Me.LboxGrid1.Columns("COL_4").HeaderCell.Style = MiddleRight
Me.LboxGrid1.Columns("COL_4").DefaultCellStyle = MiddleRight

Me.LboxGrid1.AddColumn("COL_5", "金額")
Me.LboxGrid1.SetColumnWidth("COL_5", 50)
Me.LboxGrid1.Columns("COL_5").HeaderCell.Style = MiddleRight
Me.LboxGrid1.Columns("COL_5").DefaultCellStyle = MiddleRight

' 行を作成
Dim I As Integer
For I = 1 To 6
	Me.LboxGrid1.AddRow()
	Me.LboxGrid1.SetColumnText("COL_1", "")
	Me.LboxGrid1.SetColumnText("COL_2", "")
	Me.LboxGrid1.SetColumnText("COL_3", "")
	Me.LboxGrid1.SetColumnText("COL_4", "")
	Me.LboxGrid1.SetColumnText("COL_5", "")
	Me.LboxGrid1.SetColumnText("COL_REF", "参照")
Next

' 編集対象フォーカスの設定
Me.LboxGrid1.SetFocusCell(0, 0)
' 初期の編集可能なセルフォーカスの設定
Me.LboxGrid1.EditingControl.Select()
Private Sub LboxGrid1_CellClickButton(ByVal sender As System.Windows.Forms.DataGridViewCell, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles LboxGrid1.CellClickButton

	Dim nCol As Integer = e.ColumnIndex
	Dim nRow As Integer = e.RowIndex

	If Me.LboxGrid1.GetColumnName(nCol) = "COL_REF" Then
		MessageBox.Show(nRow & "行目のボタン")
	End If

End Sub
関連する記事
伝票入力に最適化した DataGridView


posted by at 2009-10-29 14:29 | VB.NET LboxGrid | このブログの読者になる | 更新情報をチェックする

VB.net : LboxGrid+DB : 簡単な問い合わせ

ここで使用しているのは、SQLServer ですが、MDB や ODBC 用のメソッドがあります

タイアログに LboxGrid を貼り付けて、プロパティで接続情報をセットし、
初期化時に、select 文を使ってメソッドを呼び出すだけです。
select 文から自動的に列と行が作成されます
Lboxgrid_db

Lboxgrid_db_2
Private Sub Dialog1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

	Dim Query As String = "select 得意先コード as コード,得意先名 from 得意先マスタ"

	Me.LboxGrid1.LoadSqlServer(Query)

End Sub

Private Sub LboxGrid1_CellDoubleClick(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles LboxGrid1.CellDoubleClick

	Dim nRow As Integer = e.RowIndex

	MessageBox.Show(Me.LboxGrid1.GetColumnText(nRow, "コード") & _
	"|" & Me.LboxGrid1.GetColumnText(nRow, "得意先名"))

End Sub

関連する記事
ダイアログの呼び出しとオーナーの参照


posted by at 2009-10-29 13:42 | VB.NET LboxGrid | このブログの読者になる | 更新情報をチェックする

2009年07月13日


LboxGrid : チェックボックス列の使用

セルの編集の不可、可能の設定は行毎、cell 毎に可能です。

Me.LboxGrid1.Rows(0).ReadOnly = True
Me.LboxGrid1.Item(2, 2).ReadOnly = False
( これらの場合は、行を追加してからセットします )

' *****************************************************
' 初期化
' *****************************************************
Private Sub Form1_Load(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles MyBase.Load

	' まず全てのカラムを編者可に変更
	Me.LboxGrid1.ReadOnly = False

	Me.LboxGrid1.AddColumn("CHECK", "削除", lightbox.LboxColumnType.LboxColumnType_CheckBox)
	Me.LboxGrid1.AddColumn("CODE", "社員コード")
	Me.LboxGrid1.AddColumn("NAME", "氏名")
	Me.LboxGrid1.AddColumn("KANA", "フリガナ")

	' 列作成後、必要無いカラムを編集不可にする
	Me.LboxGrid1.Columns(1).ReadOnly = True
	Me.LboxGrid1.Columns(2).ReadOnly = True
	Me.LboxGrid1.Columns(3).ReadOnly = True

	Try
		' SHIFT_JIS 
		Dim ReadFile As StreamReader = _
		 New StreamReader("C:\TMP\社員マスタ.csv", Encoding.GetEncoding(932))

		' SHIFT_JIS で読み込み
		Dim LineText As String
		Dim aData As String()
		Dim sDelimiter As String = ","
		Do While Not ReadFile.EndOfStream
			' 次行読み込み
			LineText = ReadFile.ReadLine()
			aData = LineText.Split(sDelimiter)

			LboxGrid1.AddRow()
			LboxGrid1.SetColumnText("CODE", aData(0))
			LboxGrid1.SetColumnText("NAME", aData(1))
			LboxGrid1.SetColumnText("KANA", aData(2))

		Loop

		' 終了処理
		ReadFile.Close()
		ReadFile.Dispose()

		' ex が必要無ければ e As Exception を書かなくて良い
	Catch ex As Exception
		Console.WriteLine(ex.Message)
	End Try


End Sub

' *****************************************************
' チェクボックス状態の取得
' *****************************************************
Private Sub チェックボックス状態サーチ_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles チェックボックス状態サーチ.Click

	' サーチインデックス初期化
	Me.LboxGrid1.SetCurrentRow()

	' 行がなくなるまでループ
	Do While (Me.LboxGrid1.FindNextRow())

		If CType(Me.LboxGrid1.GetColumnValue("CHECK"), Boolean) Then
			MessageBox.Show(Me.LboxGrid1.GetColumnText("NAME"))

		End If

	Loop


End Sub



posted by at 2009-07-13 16:05 | VB.NET LboxGrid | このブログの読者になる | 更新情報をチェックする

2009年06月16日


LboxGrid : イベント

' ******************************************************
' ダブルクリックイベント
' ******************************************************
Private Sub LboxGrid1_CellDoubleClick(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles LboxGrid1.CellDoubleClick

	If e.RowIndex <> -1 Then
		Dim str As String = Me.LboxGrid1.GetColumnText(e.RowIndex, "CODE")
		MessageBox.Show(str)
	End If

End Sub

posted by at 2009-06-16 13:17 | VB.NET LboxGrid | このブログの読者になる | 更新情報をチェックする

2009年06月11日


LboxGrid : 行データ作成

■ 配列のデータによる初期化
■ 整数を前ゼロ文字列に編集
  ( カスタム数値書式指定文字列 )
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

	Me.LboxGrid1.AddColumn("CODE", "社員コード")
	Me.LboxGrid1.AddColumn("NAME", "氏名")
	Me.LboxGrid1.AddColumn("KANA", "フリガナ")

	Me.LboxGrid1.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.[False]

	Dim 社員 As String(,) = _
	 { _
	  {"浦岡 友也", "ウラオカ トモヤ"}, _
	  {"山村 洋代", "ヤマムラ ヒロヨ"}, _
	  {"多岡 冬行", "タオカ フユユキ"}, _
	  {"高田 冬美", "タカタ フユミ"}, _
	  {"内高 友之", "ウチタカ トモユキ"} _
	 }

	Dim I As Integer

	For I = 0 To 4
		Me.LboxGrid1.AddRow()
		Me.LboxGrid1.SetColumnText("CODE", I.ToString("0000"))
		Me.LboxGrid1.SetColumnText("NAME", 社員(I, 0))
		Me.LboxGrid1.SetColumnText("KANA", 社員(I, 1))
	Next

End Sub

■ 関連する記事
LboxGridをVB.NETで使用する
LboxGrid : 列作成

posted by at 2009-06-11 15:47 | VB.NET LboxGrid | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します