SOLVED:HitTest |
Post Reply |
Author | |
JamGodz
Groupie Joined: 25 February 2010 Status: Offline Points: 67 |
Post Options
Thanks(0)
Posted: 19 September 2010 at 7:52pm |
Hi Everyone! or Aaron
why is it the hitItem in VirtualMode doesn't display a value/caption. Dim hitItem As ReportRecordItem 'Returns a reference to the item clicked 'Determines which row the mouse was positioned over on mousedown. Set hitItem = wndReportControl.HitTest(X, Y).Item If Not hitItem Is Nothing Then If Not wndReportControl.PreviewMode Then Debug.Print "MouseDown on Item: " & hitItem.Value & " in column: " & hitColumn.Caption ElseIf Not (hitRow.Record.PreviewText = "") Then Debug.Print "MouseDown on PreviewText" End If End If |
|
SuperMario
Admin Group Joined: 14 February 2004 Status: Offline Points: 18057 |
Post Options
Thanks(0)
|
In VM rows don't really have data, the data is drawn in using the BeforeDrawRow event. So you would need to use the column\row indexes to calculate which data this is.
|
|
JamGodz
Groupie Joined: 25 February 2010 Status: Offline Points: 67 |
Post Options
Thanks(0)
|
Hi SuperMario! Good Day!
thanks you for your reply... is there any other way to get the hitTest in VM? or any workaround? please... thanks? |
|
Aaron
Senior Member Joined: 29 January 2008 Status: Offline Points: 2192 |
Post Options
Thanks(0)
|
Hi,
How do you show data in ReportControl Virtualmode? I guess you have somekind of array, right? If you have an array you are able to retrieve the data by accessing the array:
Dim hitRow As XtremeReportControl.ReportRow
Dim hitColumn As XtremeReportControl.ReportColumn Set hitRow = wndReportControl.HitTest(x, y).Row
Set hitColumn = wndReportControl.HitTest(x, y).Column
If Not hitColumn Is Nothing and not HitRow is nothing Then Debug.Print "MouseDown on Item: " & myArray(hitColumn.ItemIndex, hitRow.Index) End If If this doesn't help please upload sample project and add some info to what you need
To SuperMario: Would it be possible to return Item.Caption as well? HitTest is already returning ReportItem.Index or do you calculate index on the fly?
Thanks
|
|
Product: Xtreme SuitePro (ActiveX) version 15.0.2
Platform: Windows XP (32bit) - SP 2 Language: Visual Basic 6.0 Zero replies is not an option.... |
|
JamGodz
Groupie Joined: 25 February 2010 Status: Offline Points: 67 |
Post Options
Thanks(0)
|
Hi Aaron!
Im using the code below to retrieve data in database...: Private Const COLUMN_APHC = 0 Private Const COLUMN_PLTRNAME = 1 Private Const COLUMN_HDANAME = 2 Private Const COLUMN_LKG = 3 Private Const COLUMN_NETCANE = 4 Private Const COLUMN_ESTIMATED = 5 Private Const COLUMN_PROGRESS = 6 Private Const COLUMN_ICON_STATUS = 7 Dim sSplit As Variant Private Sub Form_Load() sSplit = Array("APHCODE", "PLTR_NAME", "HDA_NAME", "T_LKG", "T_NET_CANE", "ESTIMATED", "PROGRESS") rs.Open SQLParser.SQLStatement, ConnectTo.InternalConn, adOpenStatic, adLockOptimistic CustomizeRepCtrl If rs.RecordCount > 0 Then rs.MoveFirst With wndList .SetVirtualMode rs.RecordCount .Populate .Redraw End With End Sub Private Sub wndList_BeforeDrawRow(ByVal Row As XtremeReportControl.IReportRow, ByVal Item As XtremeReportControl.IReportRecordItem, ByVal Metrics As XtremeReportControl.IReportRecordItemMetrics) If Row.Index < rs.RecordCount Then rs.AbsolutePosition = Row.Index + 1: rs.Move 0 Select Case Item.Index Case COLUMN_APHC, COLUMN_PLTRNAME, COLUMN_HDANAME, COLUMN_LKG, Metrics.Text = rs.Fields(sSplit(Item.Index)).Value & "" End If End Select End If End Sub Private Sub CustomizeRepCtrl() Dim Column As ReportColumn Set Column = wndList.Columns.Add(COLUMN_ICON_STATUS, "ICONSTATUS", 18, False) Column.Editable = False Column.Icon = COLUMN_BLACK_ICON Set Column = wndList.Columns.Add(COLUMN_APHC, "APHCODE", 100, True) Column.Editable = False Set Column = wndList.Columns.Add(COLUMN_PLTRNAME, "Planter Name", 400, True) Column.Editable = False Set Column = wndList.Columns.Add(COLUMN_HDANAME, "HDA Name", 200, True) Column.Editable = False Set Column = wndList.Columns.Add(COLUMN_LKG, "LKG", 70, True) Column.Editable = False Set Column = wndList.Columns.Add(COLUMN_NETCANE, "NET CANE", 70, True) Column.Editable = False Set Column = wndList.Columns.Add(COLUMN_ESTIMATED, "EST. NET CANE", 100, True) Column.Editable = True Column.EditOptions.SelectTextOnEdit = True With wndList .PaintManager.ColumnStyle = xtpColumnOffice2007 .EnableMarkup = True .PaintManager.DrawGridForEmptySpace = True .PaintManager.VerticalGridStyle = xtpGridSmallDots .PaintManager.HorizontalGridStyle = xtpGridSmallDots .SetCustomDraw xtpCustomBeforeDrawRow .SetVirtualMode 0 End With End Sub Private Sub wndList_BeginEdit(ByVal Row As XtremeReportControl.IReportRow, ByVal Column As XtremeReportControl.IReportColumn, ByVal Item As XtremeReportControl.IReportRecordItem) Dim i As Integer rs.AbsolutePosition = (Row.Index + 1): rs.Move 0 For i = 0 To UBound(sSplit()) ReDim Preserve strItemVal(0 To i) strItemVal(i) = rs.Fields(sSplit(i)).Value & "" Next i End Sub Please let me know if have mistaken something... thanks |
|
Aaron
Senior Member Joined: 29 January 2008 Status: Offline Points: 2192 |
Post Options
Thanks(0)
|
Hi,
Something like:
Private Sub wndReportControl_MouseDown(Button As Integer, Shift As Integer, x As Long, y As Long)
Dim hitRow As XtremeReportControl.ReportRow
Dim hitColumn As XtremeReportControl.ReportColumn On Error GoTo myerror
Set hitRow = wndReportControl.HitTest(x, y).Row
Set hitColumn = wndReportControl.HitTest(x, y).Column rs.AbsolutePosition = hitRow.Index rs.Move 0 If Not hitRow Is Nothing Then Debug.Print "MouseDown on Item: " & rs.Fields(hitColumn.ItemIndex).Value End If myerror: If Err.Number > 0 Then 'do something with it !!! End If You will get value of selected "cell" from the recordset itself.
|
|
Product: Xtreme SuitePro (ActiveX) version 15.0.2
Platform: Windows XP (32bit) - SP 2 Language: Visual Basic 6.0 Zero replies is not an option.... |
|
JamGodz
Groupie Joined: 25 February 2010 Status: Offline Points: 67 |
Post Options
Thanks(0)
|
thanks... another problem solved!
|
|
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |