⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uisolvlist.cpp

📁 嵌入式系统PDA的流程
💻 CPP
字号:
#include "UISolvList.h"

#include "UIPrbSolvContainer.h"

#include "UI_Button.h"
#include "UI_String.h"
#include "UI_Scrollbar.h"

#define		PROBSOLVLIST_NUM				5//必须要和button数保持一致

#define		ID_PROBSOLVLIST_BASE		ID_XXX_BASE+80
#define		ID_PROBSOLVLIST_BJSJ		ID_PROBSOLVLIST_BASE	//编辑时间
#define		ID_PROBSOLVLIST_BUTTON1		(ID_PROBSOLVLIST_BASE+1)	//Button List
#define		ID_PROBSOLVLIST_BUTTON2		(ID_PROBSOLVLIST_BASE+2)
#define		ID_PROBSOLVLIST_BUTTON3		(ID_PROBSOLVLIST_BASE+3)
#define		ID_PROBSOLVLIST_BUTTON4		(ID_PROBSOLVLIST_BASE+4)
#define		ID_PROBSOLVLIST_BUTTON5		(ID_PROBSOLVLIST_BASE+5)
#define		ID_PROBSOLVLIST_SCROLLBAR	ID_PROBSOLVLIST_BASE+10	//Scrollbar
#define		ID_PROBSOLVLIST_RETURN		ID_PROBSOLVLIST_BASE+11	//Return Button

UISolvList::UISolvList (BOOLEAN isDraft)
:m_bIsDraft (isDraft),m_IndexTop (0)
{
}

void UISolvList::OnScrollbarClick (void)
{
	SHORT num = 0;
	SHORT i = 0;

	if (m_Count - m_IndexTop < PROBSOLVLIST_NUM)
	{
		num = m_Count - m_IndexTop;
	}
	else
	{
		num = PROBSOLVLIST_NUM;
	}

	for (i=0; i<num; ++i)
	{
		ControlEraseControl(ID_PROBSOLVLIST_BUTTON1+i);
		ControlSetLabel(ID_PROBSOLVLIST_BUTTON1+i, 
			(BYTE*)m_strEditTime[m_IndexTop + i]);
		ControlDrawControl (ID_PROBSOLVLIST_BUTTON1+i);
	}

	//ScrollbarDrawScrollbar (ID_PROBSOLVLIST_SCROLLBAR);
}

//##ModelId=3D625C1E02CE
void UISolvList::Show()
{
	SHORT num = 0;
	SHORT i = 0;

	StringDrawString (ID_PROBSOLVLIST_BJSJ);

	if (m_Count - m_IndexTop < PROBSOLVLIST_NUM)
	{
		num = m_Count - m_IndexTop;
	}
	else
	{
		num = PROBSOLVLIST_NUM;
		ScrollbarDrawScrollbar (ID_PROBSOLVLIST_SCROLLBAR);
	}

	for (i=0; i<num; ++i)
	{
		ControlSetLabel(ID_PROBSOLVLIST_BUTTON1+i, 
			(BYTE*)m_strEditTime[m_IndexTop + i]);

		ControlDrawControl (ID_PROBSOLVLIST_BUTTON1+i);
	}

	DrawReturnButton ();
}

//##ModelId=3D63656C0330
BOOLEAN UISolvList::HandleEvent(EvtType* event)
{
	switch (event->eventType)
	{
		
	case EVT_CONTROL_SELECT:
		switch(event->eventID)
		{
		case ID_MAIN_RETURN:
			OnReturnClick();
			return TRUE;
			break;
		case ID_PROBSOLVLIST_BUTTON1:
		case ID_PROBSOLVLIST_BUTTON2:
		case ID_PROBSOLVLIST_BUTTON3:
		case ID_PROBSOLVLIST_BUTTON4:
		case ID_PROBSOLVLIST_BUTTON5:
			OnListItemClick (event->eventID-ID_PROBSOLVLIST_BUTTON1);
			return TRUE;
			break;
		default: 
			return FALSE;
		}
	case EVT_SCROLLBAR_REPEAT:
		ScrollbarDrawScrollbar (ID_PROBSOLVLIST_SCROLLBAR);
		return TRUE;
		break;
	case EVT_SCROLLBAR_SELECT:
		m_IndexTop = (SHORT)event->para2;//current scrollbar value
		OnScrollbarClick();
		return TRUE;
		break;
	default: return FALSE;
	}
	return FALSE;
}

//##ModelId=3D625BF40151
Err UISolvList::Initialize()
{
	Err result = ERR_UNKOWN;
	ObjectID form_id = PDAXWT_FORM;
	//BYTE temp[10];
	SHORT num = 0;
	SHORT i = 0;
	SHORT j = 0;
	BOOLEAN isDraft;
	DBProbSolv DBS(m_bIsDraft);

	DBS.OpenTable(EMDB_RDONLY);

	if (m_bIsDraft)
	{
		m_Count = DBS.GetDraftRecCnt ();
	}
	else
	{
		m_Count = DBS.GetSendRecCnt ();
	}

	for (i=0,j=0; i<DBS.GetRecCnt(); ++i)
	{
		DBS.GetIsDraftFlg(i, &isDraft);
		if (m_bIsDraft == isDraft)
		{
			m_iDBListIndex[j] = i;
			DBS.GetEditTime (i, m_strEditTime[j]);
			++j;
		}
	}
	DBS.CloseTable();

	//create scrollbar
	if (m_IndexTop + PROBSOLVLIST_NUM > m_Count)
	{
		if (PROBSOLVLIST_NUM >= m_Count)
		{
			m_IndexTop = 0;
		}
		else
		{
			m_IndexTop = m_Count - PROBSOLVLIST_NUM;
		}
	}

	if (m_Count > PROBSOLVLIST_NUM)
	{
		UI_ScrollBarInit(ID_PROBSOLVLIST_SCROLLBAR, 
			151, SECTIONUP_HEIGHT + 25, 75, form_id);
		ScrollbarSetScrollbar(ID_PROBSOLVLIST_SCROLLBAR,
							m_IndexTop,//value
							m_Count - PROBSOLVLIST_NUM,//max
							0,// min value
							PROBSOLVLIST_NUM, //page_size
							m_Count);//total_num_lines
		ScrollbarSetScrollbarDrawPagesize(ID_PROBSOLVLIST_SCROLLBAR, PROBSOLVLIST_NUM);
		ScrollbarSetScrollbarVisible(ID_PROBSOLVLIST_SCROLLBAR, TRUE);
	}

	UI_StringInit (ID_PROBSOLVLIST_BJSJ, 25, SECTIONUP_HEIGHT+5, 
		15, 55,(BYTE*)"编辑时间", form_id);

	if (m_Count - m_IndexTop < PROBSOLVLIST_NUM)
	{
		num = m_Count - m_IndexTop;
	}
	else
	{
		num = PROBSOLVLIST_NUM;
	}

	for (i=0; i<num; ++i)
	{
		UI_ButtonInit2 (ID_PROBSOLVLIST_BUTTON1+i, 15, 
			SECTIONUP_HEIGHT + 25 + 15*i, 
			15, 95,(BYTE*)m_strEditTime[m_IndexTop+i], form_id);

		UI_ButtonSetAlign(ID_PROBSOLVLIST_BUTTON1+i, LEFT_ALIGN);
		ControlSetAttributes(ID_PROBSOLVLIST_BUTTON1+i, TRUE,FALSE,FALSE,TRUE,TRUE);
	}

	StringSetAttribute (ID_PROBSOLVLIST_BJSJ, FALSE, TRUE);

	//create return button
	UISectionCenter::CreateUIObjects();

	result = SUC;
	return result;
}

//##ModelId=3D643EC802C6
Err UISolvList::DestroyWindow()
{
	SHORT	num = 0;
	SHORT	i = 0;
	ObjectID form_id = PDAXWT_FORM;

	UI_FormDeleteObject (ID_PROBSOLVLIST_BJSJ, form_id);

	if (m_Count - m_IndexTop < PROBSOLVLIST_NUM)
	{
		num = m_Count - m_IndexTop;
	}
	else
	{
		num = PROBSOLVLIST_NUM;
	}

	for (i=0; i<num; ++i)
	{
		UI_FormDeleteObject (ID_PROBSOLVLIST_BUTTON1+i, form_id);
	}

	if (m_Count > PROBSOLVLIST_NUM)
	{
		UI_FormDeleteObject (ID_PROBSOLVLIST_SCROLLBAR, form_id);
	}

	//删除返回按键
	UISectionCenter::DestroyUIObjects();

	return SUC;
}

Err UISolvList::OnListItemClick (SHORT ItemIndex)
{
	SHORT iRecID = m_iDBListIndex[m_IndexTop + ItemIndex];
	UIPrbSolvContainer *pUIPrbSolvContainer = new UIPrbSolvContainer(m_bIsDraft,iRecID);
	DestroyWindow();
	if(!VERIFY_OK(pUIPrbSolvContainer->Enter(this)))
	{
		this->Initialize();
		this->Show();
	}

	return SUC;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -