示例#1
0
void CDynControl::CreateMicroForm()
{
	CString csFileName;
	if(m_csObjName.Find(":")==1||m_csObjName.Left(2)=="\\\\")
		csFileName=m_csObjName;

	CValue FormParam;
	FormParam.CreateObject("Структура");//String("Микроформа");
	FormParam.SetAt("Микроформа",m_Property);
	CMicroForm* pControl = new CMicroForm();
	pControl->m_bConfigMode=m_bConfigMode;
	pControl->m_csObjName=m_csObjName;
	
	//eventVal - хранится контекст формы
	OpenFormExt(m_csObjName,eventVal,FormParam,csFileName,"",0, 0,0,FormParam, pControl,m_pParentWnd);
	//OpenFormExt(m_csObjName,eventVal,CValue(),csFileName,"",0, 0,0,FormParam, pControl,m_pParentWnd);

	if(m_bVisible||m_bConfigMode)
		pControl->ShowWindow(SW_SHOW);

	m_pWnd = pControl;
	m_hWnd = pControl->GetSafeHwnd();

	pControl->SetDlgCtrlID(m_nID);
	pControl->SetFont(&m_fontDefault);	

	FillDataArray();//доп. параметры объекта (задаваемые из конфигуратора)
}
示例#2
0
//запись содержимого формы в строку
void CFormEditor::GetWindowText(CString &csText)
{
	if(m_pDialog)
	{
		//AllElements.Reset();
		AllElements.CreateObject("Структура");
		CValue ObjectVal;

		ObjectVal.CreateObject("Структура");
		ObjectVal.SetAt("Идентификатор",String(m_pDialog->m_csName));
		ObjectVal.SetAt("Заголовок",String(m_pDialog->m_csValue));
		ObjectVal.SetAt("Синоним",String(m_pDialog->csAlias));
		ObjectVal.SetAt("Комментарий",String(m_pDialog->csComment));
		ObjectVal.SetAt("НеИзменятьРазмер",m_pDialog->bCanResize);
		ObjectVal.SetAt("Иконка",m_pDialog->m_nIcon);

		CRect Rect;
		m_pDialog->GetWindowRect(&Rect);
		ScreenToClient(&Rect);

		ObjectVal.SetAt("x1",Rect.left);
		ObjectVal.SetAt("y1",Rect.top);
		ObjectVal.SetAt("x2",Rect.right);
		ObjectVal.SetAt("y2",Rect.bottom);


		m_pDialog->SaveAllToValue(AllElements);
		AllElements.SetAt("Форма",ObjectVal);

		//слои
		ObjectVal.CreateObject("Массив");
		for(int l=0;l<m_Layers.aList.GetSize();l++)
		{
			CValue vLayer;
			vLayer.CreateObject("Структура");
			vLayer.SetAt("Name",m_Layers.aList[l].csName);
			if(m_Layers.aList[l].bVisible)
				vLayer.SetAt("Visible",m_Layers.aList[l].bVisible);
			if(l==m_Layers.nCurrentEdit)
				vLayer.SetAt("Activate",1);
			ObjectVal.SetAt(l+1,vLayer);
		}
		AllElements.SetAt("Слои",ObjectVal);

		AllElements.SaveToString(csText);
	}
}
示例#3
0
BOOL CValueToolBar::GetEditTool(CValue &rez,CValue**p)
{

	rez.CreateObject(GetTypeString());
	((CValueToolBar*)rez.pRef)->Attach(&pMainFrame->m_ToolEdit);
	((CValueToolBar*)rez.pRef)->m_csName="ѕанель инструментов формы";
	return TRUE;
};
示例#4
0
BOOL CValueToolBar::GetModuleTool(CValue &rez,CValue**p)
{

	rez.CreateObject(GetTypeString());
	((CValueToolBar*)rez.pRef)->Attach(&pMainFrame->m_ToolModule);
	((CValueToolBar*)rez.pRef)->m_csName="ѕанель инструментов модул¤";
	return TRUE;
};
示例#5
0
BOOL CValueToolBar::GetMainTool(CValue &rez,CValue**p)
{

	rez.CreateObject(GetTypeString());
	((CValueToolBar*)rez.pRef)->Attach(&pMainFrame->m_ToolMain);
	((CValueToolBar*)rez.pRef)->m_csName="ќбща¤ панель инструментов";
	return TRUE;
};
示例#6
0
void CObjectData::SaveData(CValue &Val)
{
	Val.CreateObject("Структура");
	Val.SetAt("Тип",String(sType));
	if(nLength)
		Val.SetAt("Длина",nLength);
	if(nPrec)
		Val.SetAt("Точность",nPrec);

	if(nChildImage)
		Val.SetAt("ChildImage",nChildImage);
	if(bEdit)
		Val.SetAt("Edit",1);
	if(bGroup)
		Val.SetAt("Group",1);
	if(nType)
		Val.SetAt("Type",nType);
}
示例#7
0
CValue CValueSQL::Method(int iName,CValue **p)
{
	CValue Ret;
	switch(iName)
	{
		case enConnect:
			{
				nCurrentConnectionType=MYSQL_CONNECTION;
                CString HostName=p[0]->GetString();
                CString BaseName=p[1]->GetString();
                CString UserName=p[2]->GetString();
                CString Password=p[3]->GetString();
                Ret=DB.Connect(HostName,BaseName,UserName,Password,nCurrentConnectionType);
				bWasConnect=Ret;
				break;
			}
		case enConnectODBC:
		case enConnectODBC2:
			{
				nCurrentConnectionType=ODBCSQL_CONNECTION;
                CString HostName=p[0]->GetString();
                CString BaseName=p[1]->GetString();
                CString UserName=p[2]->GetString();
                CString Password=p[3]->GetString();
                int n=DB.Connect(HostName,BaseName,UserName,Password,nCurrentConnectionType);
				if(n==0)
				{
					Ret=String(DB.csError);
					bWasConnect=0;
				}
				else
				{
					Ret=1;
					bWasConnect=1;
				}
				break;
			}
		case enDisconnect:
			{
				if(bWasConnect)
					DB.Reset();
				bWasConnect=0;
				break;
			}
		case enQuery:
			{
				if(!bWasConnect)
					Error("Не было соединения с базой данных!");
				Ret=DB.Query(p[0]->GetString());
				if(DB.bError)
				{
					CString Str;
					Str.Format("%s\nОшибка в запросе:\n%s\n",DB.csError,p[0]->GetString());
					OutToDebug("%s",Str);
					Error(Str.GetBuffer(0));
				}
				break;
			}
		case enGetInsertID:
			{
				if(!bWasConnect)
					Error("Не было соединения с базой данных!");
				__int64 nRes=DB.GetInsertID();
				Ret=nRes;
				break;
			}

		//__________________________________________________________________
		//Выборка структуры:
		case enGetFieldsName://ПолучитьИменаПолей в массив
			{
				int nCount=DB.CountFields();
				if(nCount>0)
				{
					Ret.CreateObject("Массив");
					for(int i=0;i<nCount;i++)
						Ret.SetAt(i+1,String(DB.GetFieldName(i)));
				}
				break;
			}
			
		case enCountFields://КоличествоПолей
			{
				Ret=DB.CountFields();
				break;
			}
			
		//__________________________________________________________________
		//Выборка данных:
		case enGetLine:
			{
				Ret=DB.GetLine();
				break;
			}
		case enGetField:
			{
				int n=p[0]->GetNumber();
				if(n<1)
					Error("Недопустимый индекс поля");
				Ret=String(DB.GetString(n-1));
				break;
			}

		case enGetFieldsValue://ПолучитьЗначенияПолей в массив
			{
				int nCount=DB.CountFields();
				Ret.CreateObject("Массив");
				if(nCount>0)
				{
					Ret.SetSizeArray(nCount);
					for(int i=0;i<nCount;i++)
					{
						Ret.SetAt(i+1,String(DB.GetString(i)));
					}
				}
				break;
			}
		case enIsTableExist://СущестуетТаблица 
			{
				if(!bWasConnect)
					Error("Не было соединения с базой данных!");
				Ret=DB.IsTableExist(p[0]->GetString());
				break;
			}
		case enGetAllValues://ПолучитьВсеЗначения в массив структур
			{
				int nCount=DB.CountFields();
				Ret.CreateObject("Массив");
				if(nCount>0)
				{
					int n=0;
					while(DB.GetLine())
					{
						n++;
						CValue Row;
						Row.CreateObject("Структура");
						for(int i=0;i<nCount;i++)
						{
							Row.SetAt(DB.GetFieldName(i),String(DB.GetString(i)));
						}
						Ret.SetAt(n,Row);
					}
				}
				break;
			}
		case enBeginTrans:
			Ret=DB.BeginTrans();
			break;
		case enCommitTrans:
			Ret=DB.CommitTrans();
			break;
		case enRollback:
			Ret=DB.Rollback();
			break;
		case enGetConnect:
			Ret=String(DB.GetConnect());
			break;
	}
	return Ret;
}
示例#8
0
void CDynControl::SaveToValue(CValue &ObjectVal)
{
	if(!m_pWnd)
		return;

	ObjectVal.SetAt("ТипЭлемента",m_nControlType);
	ObjectVal.SetAt("Микроформа",String(m_csObjName));

	ObjectVal.SetAt("nID",m_nID);

	
	ObjectVal.SetAt("Идентификатор",String(m_csName));
	ObjectVal.SetAt("Описание",String(m_csDescription));

	ObjectVal.SetAt("Заголовок",String(m_csValue));
	ObjectVal.SetAt("Положение верт",String(m_csVAllign));
	ObjectVal.SetAt("Положение гориз",String(m_csHAllign));

	ObjectVal.SetAt("Вниз",m_bAutoSizeDown);
	ObjectVal.SetAt("Вправо",m_bAutoSizeRight);
	ObjectVal.SetAt("Слой",m_csLayer);
	

	ObjectVal.SetAt("Видимость",m_bVisible);
	ObjectVal.SetAt("Доступность",m_bEnable);
	ObjectVal.SetAt("Пропускать при вводе",m_nTabOrder);

	for(int i=0;i<aDataList.GetSize();i++)
	{
		ControlData data=aDataList[i];
		int nType=data.nType;
		if(nType==FUNCTION_DATA||nType==STRING_DATA||nType==LIST_DATA)
			ObjectVal.SetAt(data.csName,String(data.sData));
		else
		if(nType==INT_DATA||nType==COLOR_DATA)
			ObjectVal.SetAt(data.csName,data.nData);
		else
		if(nType==BOOL_DATA)
			ObjectVal.SetAt(data.csName,data.bData?1:0);
		else
		if(nType==DOUBLE_DATA)
			ObjectVal.SetAt(data.csName,data.fData);
	}

	CRect Rect;
	m_pWnd->GetWindowRect(Rect);
	m_pParentWnd->ScreenToClient(Rect);
	

	ObjectVal.SetAt("x1",Rect.left);
	ObjectVal.SetAt("y1",Rect.top);
	ObjectVal.SetAt("x2",Rect.right);
	ObjectVal.SetAt("y2",Rect.bottom);


	if(m_nControlType==ID_DYNBUTTONGRID)
	if(bWasEdit)
	{
		CGridCtrl *pGrid=(CGridCtrl *)m_pWnd;
		for(int nCol=0;nCol<pGrid->GetColumnCount();nCol++)
		{
			CValue Val;
			Val.CreateObject("Структура");
			CGridCell* pCell = (CGridCell*)pGrid->GetCell(0, nCol);
			if (pCell)
			{
				Val.SetAt("Идентификатор",String(pGrid->aColumns[nCol].csName));
				Val.SetAt("Описание",String(pGrid->aColumns[nCol].csDescription));
				Val.SetAt("Заголовок",String(pCell->TextData()));
				Val.SetAt("Формула",String(pGrid->aColumns[nCol].csFormule));
				Val.SetAt("Тип значения",String(pGrid->aColumns[nCol].csType));
				Val.SetAt("Длина",pGrid->aColumns[nCol].nLength);
				Val.SetAt("Точность",pGrid->aColumns[nCol].nPrec);
				Val.SetAt("Видимость",pGrid->aColumns[nCol].bVisible);
				Val.SetAt("Доступность",pGrid->aColumns[nCol].bEnable);
				Val.SetAt("Пропускать при вводе",pGrid->aColumns[nCol].bTab);
				Val.SetAt("Ширина колонки",pGrid->aColumns[nCol].nColumnWidth);
			}
			ObjectVal.SetAt(nCol+1,Val);
		}
		ObjectVal.SetAt("WasEdit",1);
		ObjectVal.SetAt("Число колонок",pGrid->GetColumnCount());
	}

}