|
of_register
|
|
Full name
|
pfc_u_calendar.of_register
|
Access
|
public
|
Extend of
|
integer
|
Return value
|
integer
|
Prototype
|
public function integer of_register(string,integer)
|
Name
|
Datatype
|
li_availableentry
|
integer
|
li_cnt
|
integer
|
li_rc
|
integer
|
li_upperbound
|
integer
|
ls_coltype
|
string
|
ls_descexp
|
string
|
ls_descret
|
string
|
ls_editstyle
|
string
|
ls_modexp
|
string
|
ls_rc
|
string
|
ls_storemodify
|
string
|
public function integer of_register (string as_dwcolumn, integer ai_style);//////////////////////////////////////////////////////////////////////////////
//
// Function: of_Register
//
// Access: public
//
// Arguments:
// as_dwcolumn Column to register.
// ai_style The columnstyle.
//
// Returns: Integer
// 1 if the column was added.
// 0 if the column was not added.
// -1 if an error is encountered.
//
// Description:
// Register the column which should be holding a date field.
// Columns need to be of editstyle 'ddlb', 'edit' or 'editmask'.
//
// *Note: For a column to be added it most have a field of type Date.
// *Note: Function is only valid when serving a DataWindow control.
//
//////////////////////////////////////////////////////////////////////////////
//
// 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_cnt, li_rc
integer li_availableentry
integer li_upperbound
string ls_coltype
string ls_modexp
string ls_descexp
string ls_descret
string ls_editstyle
string ls_storemodify=''
string ls_rc
// Check the required reference.
If IsNull(idw_requestor) or Not IsValid(idw_requestor) Then
Return -1
End If
// Check arguments
If (IsNull(as_dwcolumn) Or Len(Trim(as_dwcolumn))=0) Or &
(ai_style < NONE or ai_style > DDLB_WITHARROW) Or &
IsNull(idw_requestor) Or Not IsValid(idw_requestor) Then
Return -1
End If
// Trim and Convert to lower case.
as_dwcolumn = Trim(Lower(as_dwcolumn))
// Check if the column is already registered.
If of_IsRegistered(as_dwcolumn) Then
Return 0
End If
// Get the column type.
ls_coltype = idw_requestor.Describe(as_dwcolumn+".coltype")
If of_IsDateType(ls_coltype) Then
// Get the upperbound of all registered columns.
li_upperbound = upperbound(is_dwcolumns)
// Determine if there is an open slot available other than a
// new entry on the array
For li_cnt = 1 to li_upperbound
If IsNull(is_dwcolumns[li_cnt]) or Len(Trim(is_dwcolumns[li_cnt])) = 0 Then
If li_availableentry = 0 Then
//Get the first slot found
li_availableentry = li_cnt
Exit
End If
End If
Next
//If an available slot was not found then create a new entry
If li_availableentry = 0 Then
li_availableentry = li_upperbound + 1
End If
// Add/Initilize the new entry.
is_dwcolumns[li_availableentry] = as_dwcolumn
ii_dwcolumnstyle[li_availableentry] = ai_style
is_dwcolumnsexp[li_availableentry] = ''
If ai_style = DDLB Or ai_style = DDLB_WITHARROW Then
// Store the Modify expression needed to unregister the column.
ls_editstyle = idw_requestor.Describe (as_dwcolumn+".Edit.Style")
CHOOSE CASE Lower(ls_editstyle)
CASE 'edit'
ls_descret = idw_requestor.Describe (as_dwcolumn+".Edit.Required")
If ls_descret = 'yes' or ls_descret = 'no' Then
ls_storemodify += as_dwcolumn+".Edit.Required=" + ls_descret + " "
ls_modexp = as_dwcolumn+".DDLB.Required=" + ls_descret + " "
End If
ls_descret = idw_requestor.Describe (as_dwcolumn+".Edit.NilIsNull")
If ls_descret = 'yes' or ls_descret = 'no' Then
ls_storemodify += as_dwcolumn+".Edit.NilIsNull=" + ls_descret + " "
ls_modexp += as_dwcolumn+".DDLB.NilIsNull=" + ls_descret + " "
End If
CASE 'editmask'
ls_descret = idw_requestor.Describe (as_dwcolumn+".EditMask.Mask")
If ls_descret = '!' or ls_descret = '?' Then
ls_storemodify += as_dwcolumn+".EditMask.Mask='' "
Else
ls_storemodify += as_dwcolumn+".EditMask.Mask='" + ls_descret + "' "
End If
ls_descret = idw_requestor.Describe (as_dwcolumn+".EditMask.Required")
If ls_descret = 'yes' or ls_descret = 'no' Then
ls_storemodify += as_dwcolumn+".EditMask.Required=" + ls_descret + " "
ls_modexp = as_dwcolumn+".DDLB.Required=" + ls_descret + " "
End If
ls_descret = idw_requestor.Describe (as_dwcolumn+".EditMask.NilIsNull")
If ls_descret = 'yes' or ls_descret = 'no' Then
ls_storemodify += as_dwcolumn+".EditMask.NilIsNull=" + ls_descret + " "
ls_modexp += as_dwcolumn+".DDLB.NilIsNull=" + ls_descret + " "
End If
CASE 'ddlb'
ls_descret = idw_requestor.Describe (as_dwcolumn+".DDLB.useasborder")
If ls_descret = 'yes' or ls_descret = 'no' Then
ls_storemodify = as_dwcolumn+".DDLB.useasborder=" + ls_descret + " "
End If
CASE Else
// Not a valid original edit style.
Return -1
END CHOOSE
// Store the Modify statement that allows unregister.
is_dwcolumnsexp[li_availableentry] = ls_storemodify
// Convert to DDLB.
ls_modexp += as_dwcolumn+".DDLB.limit=0 " + &
as_dwcolumn+".DDLB.AllowEdit=Yes "
ls_rc = idw_requestor.Modify (ls_modexp)
If Len(ls_rc) > 0 Then Return -1
If ai_style = DDLB_WITHARROW Then
ls_modexp = as_dwcolumn+".DDLB.useasborder=Yes "
ls_rc = idw_requestor.Modify (ls_modexp)
If Len(ls_rc) > 0 Then Return -1
End If
End If
// The column was registered.
Return 1
End If
// The column was not registered.
Return 0
end function
Name
|
Owner
|
datawindow.describe |
datawindow
|
datawindow.modify |
datawindow
|
systemfunctions.isnull |
systemfunctions
|
systemfunctions.isvalid |
systemfunctions
|
systemfunctions.len |
systemfunctions
|
systemfunctions.lower |
systemfunctions
|
systemfunctions.trim |
systemfunctions
|
systemfunctions.upperbound |
systemfunctions
|
pfc_u_calendar.of_isregistered |
pfc_u_calendar
|
pfc_u_calendar.of_isdatetype |
pfc_u_calendar
|