Mini Kabibi Habibi
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