Hi all.
The title says it all: I wrote a script that changes the widths of some text boxes to match the width of the table columns above it using system.gui.transform. It works in the designer, but in the vision client it does not. I created a test screen to demonstrate:
testwindow.zip (14.2 KB)
The script I'm using is below, in case you don't want to download the screen:
if event.propertyName == 'defaultColumnView':
# When column widths are re-sized, re-size header textbox widths with them
def resizeHeaderFooterWithColumns():
# Header 0 = column 0 header, etc ...
header0 = event.source.parent.getComponent('myTableHeader0')
header1 = event.source.parent.getComponent('myTableHeader1')
header2 = event.source.parent.getComponent('myTableHeader2')
header3 = event.source.parent.getComponent('myTableHeader3')
header4 = event.source.parent.getComponent('myTableHeader4')
# Footer 0 = column 0 footer, etc ...
footer0 = event.source.parent.getComponent('myTableFooter0')
footer1 = event.source.parent.getComponent('myTableFooter1')
footer2 = event.source.parent.getComponent('myTableFooter2')
footer3 = event.source.parent.getComponent('myTableFooter3')
footer4 = event.source.parent.getComponent('myTableFooter4')
# CSV of column properties for table. Converted to array by split('\t')
columnSizing = event.source.defaultColumnView.split('\t')
# Get column widths from columnSizing array.
# Column widths begin at index 7 with column 0 and increment by 6 ([13] for col1, [19] for col2, etc...)
columnWidths = [
int(columnSizing[7]) + 1, # Column 0
int(columnSizing[13]) + 1, # Column 1
int(columnSizing[19]) + 1, # Column 2
int(columnSizing[25]) + 1, # Column 3
int(columnSizing[31]) + 1 # Column 4
]
# New X positions of headers.
# Header0 is origin so add header0.x to all values.
# Then add sum of previous columns' widths minus sum of previous columns' border thickness (1 pixel by default)
columnPositionsX = [
0, # dummy value, not used in transforms below because header0.x is origin
columnWidths[0] + header0.x - 1,
sum(columnWidths[i] for i in range(2)) + header0.x - 2,
sum(columnWidths[i] for i in range(3)) + header0.x - 3,
sum(columnWidths[i] for i in range(4)) + header0.x - 4
]
# Set header widths to column widths and header X position to column X position
system.gui.transform(component=header0, newWidth=columnWidths[0])
system.gui.transform(component=header1, newWidth=columnWidths[1], newX=columnPositionsX[1], coordSpace=1)
system.gui.transform(component=header2, newWidth=columnWidths[2], newX=columnPositionsX[2], coordSpace=1)
system.gui.transform(component=header3, newWidth=columnWidths[3], newX=columnPositionsX[3], coordSpace=1)
system.gui.transform(component=header4, newWidth=columnWidths[4], newX=columnPositionsX[4], coordSpace=1)
# Set footer widths to column widths and footer X position to column X position
system.gui.transform(component=footer0, newWidth=columnWidths[0])
system.gui.transform(component=footer1, newWidth=columnWidths[1], newX=columnPositionsX[1], coordSpace=1)
system.gui.transform(component=footer2, newWidth=columnWidths[2], newX=columnPositionsX[2], coordSpace=1)
system.gui.transform(component=footer3, newWidth=columnWidths[3], newX=columnPositionsX[3], coordSpace=1)
system.gui.transform(component=footer4, newWidth=columnWidths[4], newX=columnPositionsX[4], coordSpace=1)
resizeHeaderFooterWithColumns()
I've tried playing with the "coordSpace" argument as other posts have suggested but that did not change anything. Could someone help me get this working in my vision client? Thanks!