|
pfc_undodelete
|
|
Full name
|
pfc_n_cst_tvsrv_levelsource.pfc_undodelete
|
Access
|
public
|
Extend of
|
integer
|
Return value
|
integer
|
Prototype
|
event integer pfc_undodelete()
|
Name
|
Datatype
|
lds_undo
|
n_ds
|
li_undolevel
|
integer
|
ll_deleterowid
|
long
|
ll_newhandle
|
long
|
ll_row
|
long
|
ll_rowcount
|
long
|
ll_undoafterhandle
|
long
|
ll_undoparenthandle
|
long
|
ls_key
|
string
|
ls_undokey
|
string
|
ltvi_empty
|
treeviewitem
|
ltvi_undo
|
treeviewitem
|
event pfc_undodelete;call super::pfc_undodelete;//////////////////////////////////////////////////////////////////////////////
//
// Event: pfc_UndoDelete
//
// Arguments: None
//
// Returns: integer
// 1 = success; last delete was undone
// 0 = nothing to undo
// -1 = error
//
// Description: Restore the last deleted item of the treeview. Will not undelete children
// items deleted in the delete process.
//
//////////////////////////////////////////////////////////////////////////////
//
// Revision History
//
// Version
// 6.0 Initial version
//
//////////////////////////////////////////////////////////////////////////////
//
// Copyright © 1996-1997 Sybase, Inc. and its subsidiaries. All rights reserved.
// Any distribution of the PowerBuilder Foundation Classes (PFC)
// source code by other than Sybase, Inc. and its subsidiaries is prohibited.
//
//////////////////////////////////////////////////////////////////////////////
integer li_undolevel
long ll_row, ll_rowcount
long ll_undoparenthandle, ll_undoafterhandle, ll_newhandle, ll_deleterowid
string ls_undokey, ls_key
treeviewitem ltvi_undo, ltvi_empty
n_ds lds_undo
// check reference variables
If IsNull(itv_requestor) or Not IsValid(itv_requestor) Then Return -1
// do not undo if undo is not set
If Not ib_undo Then Return -1
// Check to see if we have an delete to undo
If il_UndoDeleteParentHandle < 1 then Return 0
itv_requestor.SetRedraw(False)
ll_undoparenthandle = il_UndoDeleteParentHandle
ll_undoafterhandle = il_UndoDeleteHandle
//ls_undokey = string( itvi_UndoDeleteItem.Data )
li_undolevel = itvi_UndoDeleteItem.Level
ltvi_undo = itvi_UndoDeleteItem
// Reset the undo delete variables (here if there are problems so we don't try to undelete the wrong thing)
il_UndoDeleteParentHandle = 0
il_UndoDeleteHandle = 0
itvi_UndoDeleteItem = ltvi_empty
is_UndoType = ""
lds_undo = inv_attrib[li_undolevel].ids_obj
// The last row in the DataStore Delete! buffer is the one last deleted.
ll_row = lds_undo.DeletedCount()
If ll_row < 1 Then Return -1
// Compare the keys to see if we really have the right row
ll_deleterowid = lds_undo.GetRowIDFromRow(ll_row, Delete!)
ls_undokey = of_DecodeKey( string(ltvi_undo.data) )
If ll_deleterowid = long(ls_undokey) Then
// Move row back to primary buffer
ll_rowcount = lds_undo.RowCount()
lds_undo.RowsMove(ll_row, ll_row, Delete!, lds_undo, (ll_rowcount + 1), Primary!)
Else
Return 0
End If
// Insert row back under parent
ltvi_undo.selected = False
ll_newhandle = itv_requestor.InsertItem(ll_undoparenthandle, ll_undoafterhandle, ltvi_undo)
if ll_newhandle < 1 then Return -1
// reset again so inserteditem is not current undo
is_UndoType = ""
itv_requestor.SetRedraw(True)
return 1
end event
Name
|
Owner
|
dragobject.setredraw |
dragobject
|
treeview.insertitem |
treeview
|
datastore.deletedcount |
datastore
|
datastore.getrowidfromrow |
datastore
|
datastore.rowcount |
datastore
|
datastore.rowsmove |
datastore
|
systemfunctions.isnull |
systemfunctions
|
systemfunctions.isvalid |
systemfunctions
|
systemfunctions.long |
systemfunctions
|
systemfunctions.string |
systemfunctions
|
pfc_n_cst_tvsrv_levelsource.of_decodekey |
pfc_n_cst_tvsrv_levelsource
|