Private Sub FormatGrid() '************************************************************************ ' Procedure/Function: FormatGrid() ' Author: Ben Santiago ' Last Revision: 12/09/2005 ' Description: ' Format grid based on supplied schema. ' ' Schema for GridFormatString: ' ColumnName=HeaderName=Width=Type,ColumnName=HeaderName=Width=Type,etc... ' Width: Numeric Value Causes Override To Specified Size ' Type: Text, Combo '************************************************************************ '*************************************** ' Initialize Variables '*************************************** Dim objComboDef As structComboData Dim objTableStyle As New DataGridTableStyle Dim objColumnStyle As DataGridTextBoxColumn Dim objFont As New Font(gridListing.Font.Name, gridListing.Font.Size, gridListing.Font.Style) Dim objBitmap As New Bitmap(1, 1) Dim objGraphics As Graphics = Graphics.FromImage(objBitmap) Dim arrColumnDefinitions() As String Dim arrColumnDetails() As String Dim intCounter As Short '*************************************** ' Parse String Into Array ' Process Each Column Definition '*************************************** arrColumnDefinitions = GridFormatString.Split(",") For intCounter = 0 To arrColumnDefinitions.GetUpperBound(0) '*************************************** ' Parse Column Details ' 0 = Column Name ' 1 = Column Header Text ' 2 = Column Width ' 3 = Column Type '*************************************** ReDim Preserve arrColumnDetails(3) Array.Clear(arrColumnDetails, 0, 4) arrColumnDetails = arrColumnDefinitions(intCounter).Split("=") ReDim Preserve arrColumnDetails(3) '*************************************** ' Set Defaults (If Needed) '*************************************** If arrColumnDetails(2) = "" Then arrColumnDetails(2) = "*" End If If arrColumnDetails(3) = "" Then arrColumnDetails(3) = "Text" End If '*************************************** ' Create Table Style '*************************************** With objTableStyle '*************************************** ' Define General Style Properties '*************************************** .MappingName = "tblListing" .RowHeadersVisible = False '*************************************** ' Define Column Properties '*************************************** objColumnStyle = New DataGridTextBoxColumn With objColumnStyle .MappingName = arrColumnDetails(0) .HeaderText = arrColumnDetails(1) If arrColumnDetails(2) = "*" Then .Width = objGraphics.MeasureString(.HeaderText, objFont).Width + 5 Else .Width = arrColumnDetails(2) End If End With .GridColumnStyles.Add(objColumnStyle) '*************************************** ' If Designated As Combo, Create Object '*************************************** If arrColumnDetails(3).ToUpper = "COMBO" Then '*************************************** ' Create Object & Handler Reference '*************************************** objComboDef = Me.ComboboxDefinitions(arrColumnDetails(0)) objComboDef.objCombobox.DropDownStyle = ComboBoxStyle.DropDownList objComboDef.objCombobox.Visible = False AddHandler objComboDef.objCombobox.TextChanged, AddressOf ComboTextChanged '*************************************** ' Populate Combobox With Data '*************************************** objDatabase.OpenTable(Me.FormID, "tbl" & arrColumnDetails(0), objComboDef.SQLStatement) With objComboDef.objCombobox .DataSource = objDatabase.DataSets(Me.FormID).Tables("tbl" & arrColumnDetails(0)) .DisplayMember = objComboDef.DisplayColumn .ValueMember = objComboDef.ValueColumn End With '*************************************** ' Add Combobox To Grid '*************************************** gridListing.Controls.Add(objComboDef.objCombobox) End If End With Next '*************************************** ' Define Grid Style Properties '*************************************** With gridListing .CaptionVisible = False .RowHeadersVisible = False End With '*************************************** ' Apply Table Style To Grid '*************************************** gridListing.TableStyles.Add(objTableStyle) '*************************************** ' Load Data '*************************************** If Not objComboDef Is Nothing Then gridListing.PreferredRowHeight = objComboDef.objCombobox.Height + 10 End If LoadData() '*************************************** ' Refresh/Reset Currently Selected Cell '*************************************** gridListing.CurrentCell = New DataGridCell(0, 1) gridListing.CurrentCell = New DataGridCell(0, 0) End Sub