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

📄 mainform.cpp

📁 Palm_OS的代码
💻 CPP
字号:
// Implementation of Main form class
#include "Common.h"
#include "MainForm.h"

#include "StarterApp.h"
#include "EditAddressForm.h"

// Options command handler
Boolean CMainForm::OnOptions(EventPtr pEvent, Boolean& bHandled)
{
	CForm frmOptions(OptionsForm);
	frmOptions.DoDialog();
	return true;
}

// Exit command handler
Boolean CMainForm::OnExit(EventPtr pEvent, Boolean& bHandled)
{
	CPalmApp::Stop();
	return true;
}

// About command handler
Boolean CMainForm::OnAbout(EventPtr pEvent, Boolean& bHandled)
{
	CForm frmAbout(AboutForm);
	frmAbout.DoDialog();
	return true;
}

Boolean CMainForm::OnOpen(EventPtr pEvent, Boolean& bHandled)
{
	CStarterApp* pApp =
	(CStarterApp*)CStarterApp::GetInstance();
	CDatabase* pDatabase = pApp->GetDatabase();
// Initialize grid object
	m_gridAddress.Attach(MainAddressTable, MainAddressScrollBar,
	pDatabase);
	
	m_fldLookup.Attach(MainLookupField);
	SetFocus(MainLookupField);
	
//	m_gridAddress.SetGridMode(CGrid::GM_FULLROWSELECT);
	
	bHandled = false;
	return false;
}


// New command handler
Boolean CMainForm::OnNew(EventPtr pEvent, Boolean& bHandled)
{
	CEditAddressForm frmEditAddress;
	frmEditAddress.HideObject(EditAddressDeleteButton);
	if (frmEditAddress.DoModal() == CEditAddressForm::mrOK)
	{
// Create record
		CStarterApp* pApp = (CStarterApp*)CStarterApp::GetInstance();
		CDatabase* pDatabase = pApp->GetDatabase();
		CRecordStream rs(pDatabase);
		rs << frmEditAddress.m_strName << frmEditAddress.m_strPhone <<
		frmEditAddress.m_strAddress << frmEditAddress.m_strNotes;
		m_gridAddress.AddRow();
	}
	return true;
}

// Select event handler
Boolean CMainForm::OnSelect(EventPtr pEvent, Boolean& bHandled)
{
	CEditAddressForm frmEditAddress;
	CStarterApp* pApp = (CStarterApp*)CStarterApp::GetInstance();
 	CDatabase* pDatabase = pApp->GetDatabase();
	Int16 nAbsRow = m_gridAddress.RelativeToAbsolute(pEvent->data.tblSelect.row);
	UInt16 wIndex = m_gridAddress.GetCurrentIndex();
	CRecordStream rs(pDatabase, wIndex);
	rs >> frmEditAddress.m_strName >> frmEditAddress.m_strPhone >>
	frmEditAddress.m_strAddress >> frmEditAddress.m_strNotes;
	
	
	switch (frmEditAddress.DoModal())
	{
		case CEditAddressForm::mrOK:
	// Modify record
		rs.Seek(0, fileOriginBeginning);
  		rs << frmEditAddress.m_strName << frmEditAddress.m_strPhone <<
		frmEditAddress.m_strAddress << frmEditAddress.m_strNotes;
		m_gridAddress.Refresh(nAbsRow);
		break;
		
		case CEditAddressForm::mrDelete:
	// Delete record
		rs.Close();
		pDatabase->RemoveRecord(wIndex);
		m_gridAddress.DeleteRow(nAbsRow);
		
		break;
	}
	
	SetFocus(MainLookupField);
	
	return true;
}

// Key down handler
Boolean CMainForm::OnKeyDown(EventPtr pEvent, Boolean& bHandled)
{
// If special key is not pressed
	if (pEvent->data.keyDown.modifiers == 0)
	{
		SetFocus(MainLookupField);
	// Give field object a chance to handle this event
		if (FldHandleEvent(m_fldLookup, pEvent))
			Lookup();
		return true;
	}
	return false;
}

// Field changed handled
Boolean CMainForm::OnChanged(EventPtr pEvent, Boolean& bHandled)
{
	Lookup();
	return true;
}

// Looks for database record by name
void CMainForm::Lookup()
{
	const Char* pszCriteria = m_fldLookup.GetTextPtr();
	Int16 nCriteriaLength = StrLen(pszCriteria);
	if (nCriteriaLength > 0)
	{
		CStarterApp* pApp =
		(CStarterApp*)CStarterApp::GetInstance();
		CDatabase* pDatabase = pApp->GetDatabase();
		
		// Loop through database to find appropriate record
		CMemHandle memHandle((Boolean)false);
		UInt16 wIndex, wCount = pDatabase->NumRecords();
		for (wIndex = 0; wIndex < wCount; wIndex++)
		{
			memHandle = pDatabase->QueryRecord(wIndex);
			const Char* pszName = (const
			Char*)memHandle.Lock();
			if (StrNCaselessCompare(pszName, pszCriteria,
			nCriteriaLength) == 0)
			{
			// Matched record is found
				m_gridAddress.SetSelection(wIndex);
				break;
			}
		}
		// End of database was reached, so no record found
		if (wIndex == wCount)
			m_fldLookup.Delete(nCriteriaLength - 1,	nCriteriaLength);
	}
	else
		m_gridAddress.ClearSelection();
}


		
		
		
		
		
		
		
		
		
		

⌨️ 快捷键说明

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