Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/VB/GridMainDemo/Modules/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WinForms/VB/GridMainDemo/Modules/CardViewControl.vb

Imports System.Collections
Imports System.ComponentModel
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraEditors
Imports DevExpress.XtraEditors.Controls

Namespace DevExpress.XtraGrid.Demos
	Partial Public Class CardViewControl
		Inherits DevExpress.XtraGrid.Demos.TutorialControl

		Public Sub New()
			' This call is required by the Windows Form Designer.
			CreateWaitDialog()
			InitializeComponent()
			TutorialInfo.WhatsThisCodeFile = "VB\GridMainDemo\Modules\CardViewControl.vb"
			TutorialInfo.WhatsThisXMLFile = "CardViewControl.xml"
			' TODO: Add any initialization after the InitializeComponent call
		End Sub
		Private dv As DataView
		Private updateLayout As Boolean = False
		Private oldMaxColumn As Integer = -1
		Private oldMaxRows As Integer = -1
		#Region "Init"
		Public Overrides ReadOnly Property ExportView() As DevExpress.XtraGrid.Views.Base.BaseView
			Get
				Return cardView1
			End Get
		End Property
		Private Sub CardView_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
			InitData()
			InitEditors()
			InitCard()
			cardView1_Layout(cardView1, EventArgs.Empty)
		End Sub

		Public Overrides ReadOnly Property ShowViewOptions() As Boolean
			Get
				Return True
			End Get
		End Property


		Private Sub InitData()
			Dim DBFileName As String = DevExpress.Utils.FilesHelper.FindingFileName(Application.StartupPath, "Data\cars.xml")
			If DBFileName <> "" Then
				Dim ds As New DataSet()
				SetWaitDialogCaption(My.Resources.LoadingCars)
				ds.ReadXml(DBFileName)
				dv = ds.Tables(0).DefaultView
				gridControl1.DataSource = dv
			End If
		End Sub

		Private Sub InitCard()
			For i As Integer = 0 To cardView1.RowCount - 1
				Dim active As Object = cardView1.GetDataRow(i)("Is In Stock")
				Dim [date] As Date = CDate(cardView1.GetDataRow(i)("Delivery Date"))
				If False.Equals(active) OrElse [date].Month = 1 Then
					cardView1.SetCardCollapsed(i, True)
				End If
			Next i
		End Sub

		Private Sub InitEditors()
			icbFormat.EditValue = cardView1.CardCaptionFormat
			seMaxColumns.EditValue = cardView1.MaximumCardColumns
			seMaxRows.EditValue = cardView1.MaximumCardRows
			ceAutoHorzWidth.Checked = cardView1.OptionsBehavior.AutoHorzWidth
			ceMultiSelect.Checked = cardView1.OptionsSelection.MultiSelect
			xtraTabControl1.SelectedTabPageIndex = 0
		End Sub
		#End Region
		#Region "Editing"

		Private Sub cardView1_Layout(ByVal sender As Object, ByVal e As System.EventArgs) Handles cardView1.Layout
			updateLayout = True
			ceCustomize.Checked = cardView1.OptionsView.ShowQuickCustomizeButton
			ceButtons.Checked = cardView1.OptionsView.ShowCardExpandButton
			updateLayout = False
		End Sub
		#End Region
		#Region "Customize"
		'<ceCustomize>
		Private Sub ceCustomize_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ceCustomize.CheckedChanged
			'<skip>
			If updateLayout Then
				Return
			End If
			'</skip>
			cardView1.OptionsView.ShowQuickCustomizeButton = ceCustomize.Checked
			'<skip>
			GridRibbonMenuManager.RefreshOptionsMenu(cardView1)
			'</skip>
		End Sub
		'</ceCustomize>
		'<ceSorting>
		Private Sub ceSorting_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ceSorting.CheckedChanged
			For Each col As GridColumn In cardView1.Columns
				col.OptionsColumn.AllowSort = If(ceSorting.Checked, DevExpress.Utils.DefaultBoolean.Default, DevExpress.Utils.DefaultBoolean.False)
			Next col
		End Sub
		'</ceSorting>
		'<ceFiltering>
		Private Sub ceFiltering_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ceFiltering.CheckedChanged
			For Each col As GridColumn In cardView1.Columns
				col.OptionsFilter.AllowFilter = ceFiltering.Checked
			Next col
		End Sub
		'</ceFiltering>
		#End Region
		#Region "Captions"
		'<ceImage>
		Private Sub cardView1_CustomCardCaptionImage(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Card.CardCaptionImageEventArgs) Handles cardView1.CustomCardCaptionImage
			If Not ceImage.Checked Then
				Return
			End If
			Dim category As Object = cardView1.GetDataRow(e.RowHandle)("Category")
			For i As Integer = 0 To repositoryItemImageComboBox1.Items.Count - 1
				If CType(repositoryItemImageComboBox1.Items(i), ImageComboBoxItem).Value.Equals(category) Then
					e.ImageIndex = i
					Exit For
				End If
			Next i
		End Sub

		Private Sub ceImage_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ceImage.CheckedChanged
			cardView1.LayoutChanged()
		End Sub
		'</ceImage>
		'<ceButtons>
		Private Sub ceButtons_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ceButtons.CheckedChanged
			'<skip>
			If updateLayout Then
				Return
			End If
			'</skip>
			cardView1.OptionsView.ShowCardExpandButton = ceButtons.Checked
			'<skip>
			GridRibbonMenuManager.RefreshOptionsMenu(cardView1)
			'</skip>
		End Sub
		'</ceButtons>
		'<icbFormat>
		Private Sub icbFormat_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles icbFormat.SelectedIndexChanged
			cardView1.CardCaptionFormat = icbFormat.EditValue.ToString()
		End Sub
		'</icbFormat>
		#End Region
		#Region "Layout"

		'<seMaxColumns>
		Private Sub seMaxColumns_EditValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles seMaxColumns.EditValueChanged
			Dim val As Integer = Convert.ToInt32(seMaxColumns.Value)
			If val = 0 Then
				val = If(val > oldMaxColumn, 1, -1)
				seMaxColumns.Value = val
			End If
			cardView1.MaximumCardColumns = val
			oldMaxColumn = val
		End Sub
		'</seMaxColumns>
		'<seMaxRows>
		Private Sub seMaxRows_EditValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles seMaxRows.EditValueChanged
			Dim val As Integer = Convert.ToInt32(seMaxRows.Value)
			If val = 0 Then
				val = If(val > oldMaxRows, 1, -1)
				seMaxRows.Value = val
			End If
			cardView1.MaximumCardRows = val
			oldMaxRows = val
		End Sub
		'</seMaxRows>
		'<ceAutoHorzWidth>
		Private Sub ceAutoHorzWidth_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ceAutoHorzWidth.CheckedChanged
			cardView1.OptionsBehavior.AutoHorzWidth = ceAutoHorzWidth.Checked
		End Sub
		'</ceAutoHorzWidth>
		#End Region
		#Region "MultiSelect"
		'<ceMultiSelect>
		Private Sub ceMultiSelect_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ceMultiSelect.CheckedChanged
			cardView1.OptionsSelection.MultiSelect = ceMultiSelect.Checked
			If ceMultiSelect.Checked AndAlso cardView1.SelectedRowsCount < 2 Then
				cardView1.SelectRange(2, 9)
			End If
			'<skip>
			SetButtonEnabled()
			'</skip>
		End Sub
		'</ceMultiSelect>
		Private Sub xtraTabControl1_SelectedPageChanged(ByVal sender As Object, ByVal e As DevExpress.XtraTab.TabPageChangedEventArgs) Handles xtraTabControl1.SelectedPageChanged
			ceMultiSelect.Checked = e.Page Is xtraTabPage4
		End Sub

		Private Sub SetButtonEnabled()
			sbRecords.Enabled = cardView1.SelectedRowsCount > 0 AndAlso ceMultiSelect.Checked
		End Sub

		Private Sub cardView1_SelectionChanged(ByVal sender As Object, ByVal e As DevExpress.Data.SelectionChangedEventArgs) Handles cardView1.SelectionChanged
			SetButtonEnabled()
		End Sub
		'<sbRecords>
		Private Sub sbRecords_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles sbRecords.Click
			DemosHelper.ShowDescriptionForm(Control.MousePosition, GetSelectedRows(), My.Resources.SelectedRows)
		End Sub

		Private Function GetSelectedRows() As String
			Dim ret As String = ""
			For Each i As Integer In cardView1.GetSelectedRows()
				Dim row_Renamed As DataRow = cardView1.GetDataRow(i)
				If ret <> "" Then
					ret &= vbCrLf
				End If
				ret &= String.Format("{0} / {1} : {2:$#,0.00}", row_Renamed("Trademark"), row_Renamed("Model"), row_Renamed("Price"))
			Next i
			Return ret
		End Function
		'</sbRecords>
		#End Region
	End Class
End Namespace