- Tracy Lamb
- PowerBuilder
- Friday, 23 September 2022 01:23 PM UTC
Hi all,
My customer noticed something very strange... when he's got my application running, then clicks on the desktop (or runs another app from his task bar), then comes back to my application, the Drag/Drop event is firing. I sprinkled the code with a few messages...
long ll_form
string ls_title
long ll_ThisRow, ll_LastRow, ll_DropRow, ll_DragRow
MessageBox("DragDrop","Event fired")
ll_DragRow = this.GetSelectedRow(0)
MessageBox("DragDrop","Drag Row "+ string(ll_DragRow))
if (source.TypeOf() = DataWindow!) then
drag_dw = source
// Make sure it's the same datawindow...
if drag_dw.DataObject <> "d_salesorder_workorders" then
return
end if
else
return
end if
MessageBox("DragDrop", "DragObject = d_salesorder_workorders")
ll_DropRow = row
this.SetRedraw( FALSE )
MessageBox("DragDrop","DropRow: " + string(ll_DropRow))
CHOOSE CASE drag_dw
CASE this
// If dropped on same row, don't do anything...
if ll_DropRow = ll_DragRow then
this.SetRedraw( TRUE )
return
end if
// Otherwise, change the line_nbr#'s and re-sort
if ll_DropRow > ll_DragRow then
ll_LastRow = ll_DropRow
for ll_ThisRow = ll_DragRow + 1 to ll_DropRow
this.SetItem(ll_ThisRow,"line_nbr",ll_ThisRow - 1)
next
// this.SetItem(ll_DragRow,"line_nbr",ll_ThisRow)
else
ll_LastRow = this.RowCount()
for ll_ThisRow = ll_DropRow to ll_LastRow
this.SetItem(ll_ThisRow,"line_nbr", ll_ThisRow + 1)
next
// this.SetItem(ll_DragRow,"line_nbr",ll_ThisRow)
end if
this.SetItem(ll_DragRow,"line_nbr",ll_DropRow)
this.Sort()
this.SetRow( ll_DropRow )
this.SelectRow(0, FALSE)
this.SelectRow(ll_DropRow, TRUE)
CASE ELSE
For starters, this event shouldn't be firing at all, but it is. The ll_DragRow is indeed the currently highlighted row. The source is a DataWindow! with the DataObject = d_salesorder_workorders. And ll_DropRow (row parameter from event) is the same as ll_DragRow. There's a check to see if the ll_DragRow = ll_DropRow. If so, don't do anything. For some reason, the whole script is executing, and row 1 on the dw is being re-assigned to line_nbr 0 , row 2 is line_nbr 2, etc.
What would cause the Drag/Drop event to fire when my app loses focus then regains focus? PB2021, PFC12.5, Windows 10 operating system.
~~~Tracy
Find Questions by Tag
Helpful?
If a reply or comment is helpful for you, please don’t hesitate to click the Helpful button. This action is further confirmation of their invaluable contribution to the Appeon Community.