7/5/2025 2:29:27 AM
|
|
slxdeveloper.com Community Forums |
|
|
|
The Forums on slxdeveloper.com are now retired. The forum archive will remain available for the time being. Thank you for your participation on slxdeveloper.com!
Forum to discuss writing script in Architect plugins for SalesLogix & general SalesLogix customization topics (for Windows client only). View the code of conduct for posting guidelines.
|
|
|
|
Change the font color just for a cell in a datagrid
Posted: 09 Jun 11 11:48 AM
|
fiogf49gjkf0d Hi all.
Using SLX LAN v7.2.1.
I have a datagrid that has a field called "Difference". If the value in the "Difference" column < 0 then I want the font color to be red (clred) otherwise keep it black. I've been playing with CustomDrawCell(Sender, ByRef Node, ByRef Column, IsSelected, IsFocused, ByRef Text, ByRef Color, ByRef Alignment, ByRef Font, ByRef FontColor) , but I'm changing the entire row to red instead of the cell. This datagrid will have multiple rows and some will have a difference < 0 and others won't, I just need the cells with difference < 0 to be red.
Any ideas?
Sub DataGrid1CustomDrawCell(Sender, ByRef Node, ByRef Column, IsSelected, IsFocused, ByRef Text, ByRef Color, ByRef Alignment, ByRef Font, ByRef FontColor)
Dim DiffColumn, DiffCell
Set DiffColumn = Datagrid1.Columns.Item("Difference") DiffCell = Node.Values(DiffColumn.Index) If DiffCell < 0 Then FontColor = clred Else FontColor = clblack End If
End Sub |
|
|
|
Re: Change the font color just for a cell in a datagrid
Posted: 10 Jun 11 8:04 AM
|
fiogf49gjkf0d ================ Colouring a grid ================
For the Grid - select the property "OnCustomDrawCell" - this will create a sub based on the name of the grid followed by CustomDrawCell e.g. --------------|-------------| Sub dgServicesCustomDrawCell(Sender, ByRef Node, ByRef Column, IsSelected, IsFocused, ByRef Text, ByRef Color, ByRef Alignment, ByRef Font, ByRef FontColor)
Dim sFieldName Dim vStatus Dim lColumnIndex
sFieldName = UCase ( Column.FieldName ) ' Field you want to look for
Select Case sFieldName Case "A2_STATUS" ' ALIAS name of the column in QB lColumnIndex = GetColumnIndexByFieldName ( dgServices,"A2_STATUS" ) ' Used so that grid can be sorted/grouped vStatus = Node.Values ( lColumnIndex ) ' Gets the actual value End Select
If Not IsNull ( vStatus ) Then ' Ensure you check for Nulls
Select Case vStatus Case "Open" FontColor = &H00000000 ' in v7.x - you can use enum of clBlack, clGreen etc Case "Lost" FontColor = &H000000FF Case "Won" FontColor = &H00800000 Font.Bold = True End Select End If
End Sub
'========================================================================================== Function GetColumnIndexByFieldName ( ByRef Grid, ByVal FieldName ) Dim i Dim lColumnIndex
lColumnIndex = -1 For i = 0 To Grid.Columns.Count - 1 If UCase ( Grid.Columns(i).FieldName ) = UCase ( FieldName ) Then lColumnIndex = i Exit For End If Next GetColumnIndexByFieldName = lColumnIndex End Function |
|
|
| |
| |
|
Re: Change the font color just for a cell in a datagrid
Posted: 10 Jun 11 8:53 AM
|
fiogf49gjkf0d Oh ok.
Below is the code, the name of the field is "DIFFERENCE" if it's less than 0 then make the DIFFERENCE cell red otherwise keep it black. When I run this it doesn't do anything:
Sub DataGrid1CustomDrawCell(Sender, ByRef Node, ByRef Column, IsSelected, IsFocused, ByRef Text, ByRef Color, ByRef Alignment, ByRef Font, ByRef FontColor)
Dim sFieldName Dim vStatus Dim lColumnIndex
sFieldName = UCase ( "Difference" ) ' Field you want to look for
Select Case sFieldName Case "Difference" ' ALIAS name of the column in QB lColumnIndex = GetColumnIndexByFieldName ( datagrid1,"Difference" ) ' Used so that grid can be sorted/grouped vStatus = Node.Values ( lColumnIndex ) ' Gets the actual value End Select
If Not IsNull ( vStatus ) Then ' Ensure you check for Nulls
If vStatus < 0 then FontColor = clred Else FontColor = clblack End If
End If
End Sub
|
|
|
|
Re: Change the font color just for a cell in a datagrid
Posted: 10 Jun 11 9:02 AM
|
fiogf49gjkf0d Difference is the field name - but it's not the alias name. Open the grid, select SQL, hit Display SQL. Find the field difference and find it's alias (most likey a1_difference) - use that in the GetColumnIndexByFieldName |
|
|
| |
|
You can
subscribe to receive a daily forum digest in your
user profile. View the site code
of conduct for posting guidelines.
Forum RSS Feed - Subscribe to the forum RSS feed to keep on top of the latest forum activity!
|
|
|
|
|
|
|
|