示例#1
0
void
PrefixDataField::Dec()
{
  const TCHAR *chars = GetAllowedCharacters();
  if (StringIsEmpty(chars))
    return;

  const TCHAR current = GetAsString()[0];

  TCHAR next;
  if (current == _T('\0'))
    next = chars[_tcslen(chars) - 1];
  else {
    const TCHAR *p = current != _T('\0')
      ? _tcschr(chars, current)
      : nullptr;

    if (p > chars)
      next = p[-1];
    else
      next = _T('\0');
  }

  const TCHAR new_value[2] = { next, _T('\0') };
  SetAsString(new_value);
}
//把外部用户输入的数据(字符串形式)保存到字段内,如果成功.则返回true
bool CCurrencyField::GetFromDisplay(CTString str)
{
	if(!m_pValue)
		return false;
	
	if(!SetAsString(str))
		return false;		

	return true;
}
示例#3
0
/************************************************************************************
函数名称:
bool CField::SetAsString(CTString Value)
功能说明:虚函數,将m_pValve所指向的数据修改为传入的CString型数据.

详细解释:1.如果子类没有实现,则仅实现错误提示,以示不能转换.
         1.如果子类实现,将调用子类的方法.

出入参数:
[in]: 无.      
  
[out]:无. 

返回类型:bool

制作:YTLI 2002/07/15

修改: 
************************************************************************************/
bool CField::SetAsString(CTString Value)
{	
	if(m_nNextModifyField == -1)
		return false;
	else
	{
		if(m_pFields->IsConvertToLastVersion(this))
		{
			NewData();
			SetAsString(Value);//###_Mod 2002-9-26 zlq
			CField* pNewField = m_pFields->m_FieldVersion.GetFieldByAbsolutePos(m_nNextModifyField);			
			pNewField ->ConvertToCurField(this);
			DeleteData();
		}
	}
	return true;
}
示例#4
0
void
PrefixDataField::Inc()
{
  const TCHAR *chars = GetAllowedCharacters();
  if (StringIsEmpty(chars))
    return;

  const TCHAR current = GetAsString()[0];
  const TCHAR *p = current != _T('\0')
    ? _tcschr(chars, current)
    : nullptr;

  TCHAR next;
  if (p == nullptr)
    next = chars[0];
  else
    next = p[1];

  const TCHAR new_value[2] = { next, _T('\0') };
  SetAsString(new_value);
}
示例#5
0
void
DataFieldInteger::SetFromCombo(int iDataFieldIndex, TCHAR *sValue)
{
  SetAsString(sValue);
}
示例#6
0
文件: Float.cpp 项目: kwtskran/XCSoar
void
DataFieldFloat::SetFromCombo(int iDataFieldIndex, const TCHAR *sValue)
{
  SetAsString(sValue);
}
示例#7
0
void CSortedPtrArrayElementString::SetAsUnsigned32(DWORD dwValue)
{
	char szBuffer[128];
	SetAsString(ultoa(dwValue, szBuffer, 10));
}
示例#8
0
void CSortedPtrArrayElementString::SetAsSigned32(long lValue)
{
	char szBuffer[128];
	SetAsString(ltoa(lValue, szBuffer, 10));
}
示例#9
0
void
DataFieldInteger::SetFromCombo(int index, TCHAR *value)
{
  SetAsString(value);
}
示例#10
0
//将原来版本的字段数据转换到当前字段的数据。
//1。如果本字段空间为空,生成空间
//2。要进行原来字段空值判断!
//2。1如果为空则本字段为空
//2。2如果不为空则将原来的数据以原来的数据类型读    出,然后调用本字段的SetAs***设置。
//然后,如果有新的next字段,则调用该字段的ConvertToCurField函数,并且负责释放本空间,并且清0
void CField::ConvertToCurField(CField* pOldField)
{
	/*
	if(this->GetFieldType() == fString)
	{
		ConvertToCurField(pOldField);
		return ;
	}
*/
	if(!m_pValue)
	{//本字段也为中间字段
		NewData();

		if(pOldField->IsNull())
			SetNull();
		else
		{
			CFieldType ftType = pOldField->GetFieldType();
			if( ftType == fBoolean )			
				SetAsBool( pOldField->GetAsBool());

			else if( ftType == fCurrency )			
				SetAsCurrency( pOldField->GetAsCurrency());

			else if( ftType == fDate )			
				//SetAsBool( pOldField->GetAsDateTime());
				SetAsBool( true);//#_修改 2002-12-2 $ 10:01:35 zlq
			else if( ftType == fDouble )			
				SetAsDouble( pOldField->GetAsDouble());

			else if( ftType == fInt )			
				SetAsInteger( pOldField->GetAsInteger());

			else if( ftType == fString )			
				SetAsString( pOldField->GetAsString());		

			//assert(m_nNextModifyField != -1);

			CField* pNewField = m_pFields->m_FieldVersion.GetFieldByAbsolutePos(m_nNextModifyField);
			pNewField->ConvertToCurField(this); 			
		}
		DeleteData();
	}
	else   //最后一层转换.
	{
		if(pOldField->IsNull())		
			SetNull();			
		else
		{
			if( pOldField->GetFieldType() == fBoolean )			
				SetAsBool( pOldField->GetAsBool());

			else if( pOldField->GetFieldType() == fCurrency )			
				SetAsCurrency( pOldField->GetAsCurrency());

			else if( pOldField->GetFieldType() == fDate )			
				//SetAsBool( pOldField->GetAsDateTime());
				SetAsBool( true);

			else if( pOldField->GetFieldType() == fDouble )			
				SetAsDouble( pOldField->GetAsDouble());

			else if( pOldField->GetFieldType() == fInt )			
				SetAsInteger( pOldField->GetAsInteger());

			else if( pOldField->GetFieldType() == fString )			
				SetAsString( pOldField->GetAsString());		

			//assert(m_nNextModifyField == -1);
		}
	}
}
示例#11
0
int DataFieldFloat::SetFromCombo(int iDataFieldIndex, TCHAR *sValue) {
  SetAsString(sValue);
  return 0;
}