Symptom
How do I get the X and Y coordinates of a clicked row in a grid DataWindow?
Environment
PowerBuilder
Solution
The code sample below moves an existing static text box to the location where a user has clicked in the grid DataWindow. It can be altered to use these X, Y grid DataWindow coordinates for other uses.
The code sample assumes a PB application with an existing grid DataWindow named dw_1 and a static text box named st_1.
1. Declare the following external function.
//GetSystemMetrics is an external function defined as below: Function integer GetSystemMetrics (int nIndex ) Library "user32.dll
2. Place the following script in the clicked event of the grid DataWindow.
long firstrow integer li_rowheight, li_Header_height, li_border st_1.X = dw_1.X + Integer(dw_1.Describe(dwo.name + ".x")) - Integer(Describe("datawindow.horizontalscrollposition")) st_1.width = Integer(dw_1.Describe(dwo.name + ".width")) li_Header_height= Integer(dw_1.Object.Datawindow.Header.Height) li_rowheight = Integer(dw_1.Object.Datawindow.Detail.Height) firstrow = Long(dw_1.Object.DataWindow.FirstRowOnPage) li_border = PixelsToUnits( GetSystemMetrics (5), YPixelsToUnits!) if dw_1.border then li_border += PixelsToUnits( GetSystemMetrics (5), YPixelsToUnits!) st_1.Y = dw_1.Y + li_Header_height + (row - firstrow ) * li_rowheight + integer (dw_1.Describe(dwo.name + ".Y")) + li_border st_1.height = Integer(dw_1.Describe(dwo.name + ".height"))