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

📄 editcontainer.cpp

📁 手机编程
💻 CPP
字号:
#include <barsread.h>
#include <eikedwin.h>
#include "aknutils.h"
#include <GridDemo.rsg>
#include <eikenv.h>
#include <bautils.h>
#include "EditContainer.h"
#include "GridDemoAppUi.h"


CEditContainer::CEditContainer() 
{
	iNumberEdit = NULL;
}

// EPOC default constructor can leave.
void CEditContainer::ConstructL(const TRect& aRect, CCoeControl* aParent)
{
	if(aParent)
		this->SetContainerWindowL(*aParent);
	else
		CreateWindowL();

	//  创建编辑框
	iNumberEdit = new (ELeave) CEikNumberEditor;
	iNumberEdit->SetContainerWindowL(*this);
	iNumberEdit->ConstructL(-10000, 10000, 0);
	iNumberEdit->SetFont(LatinPlain12());
	iNumberEdit->SetRect(aRect);
	iNumberEdit->MakeVisible(ETrue);

	SetRect(aRect);
	ActivateL();
}

// Destructor
CEditContainer::~CEditContainer()
{
	delete	iNumberEdit;
}

void CEditContainer::SetNumber(TInt aValue)
{
	iNumberEdit->SetNumber(aValue);
}

TInt CEditContainer::Number()
{
	return iNumberEdit->Number();
}

/*
TBool CEditContainer::SetEditPos(RFile& aFile, TInt pos)
{
	if(iFlow)
		delete iFlow;
	iFlow = NULL;

	iFile = &aFile;
	iPos        = pos;

	TInt seek = pos * TSmokeFlow::Size();
	iFile->Seek(ESeekStart, seek);

	TBuf8<128> buf;
	iFlow = new (ELeave) TSmokeFlow;

	iFile->Read(buf,  iFlow->iNo.MaxLength());
	buf.Trim();
	iFlow->iNo.Copy(buf);

	iFile->Read(buf,  iFlow->iType.MaxLength());
	buf.Trim();
	iFlow->iType.Copy(buf);

	iFile->Read(buf,  iFlow->iCode.MaxLength());
	buf.Trim();
	iFlow->iCode.Copy(buf);

	iFile->Read(buf,  iFlow->iCount1.MaxLength());
	buf.Trim();
	iFlow->iCount1.Copy(buf);

	iFile->Read(buf,  iFlow->iCount2.MaxLength());
	buf.Trim();
	iFlow->iCount2.Copy(buf);

	iFile->Read(buf,  iFlow->iCount3.MaxLength());
	buf.Trim();
	iFlow->iCount3.Copy(buf);

	iFile->Read(buf,  iFlow->iCount4.MaxLength());
	buf.Trim();
	iFlow->iCount4.Copy(buf);

	iFile->Read(buf,  iFlow->iCount5.MaxLength());
	buf.Trim();
	iFlow->iCount5.Copy(buf);

	iFile->Read(buf,  iFlow->iCount6.MaxLength());
	buf.Trim();
	iFlow->iCount6.Copy(buf);

	iFile->Read(buf,  iFlow->iCount7.MaxLength());
	buf.Trim();
	iFlow->iCount7.Copy(buf);

	iFile->Read(buf,  iFlow->iCount8.MaxLength());
	buf.Trim();
	iFlow->iCount8.Copy(buf);

	iFile->Read(buf,  iFlow->iCount9.MaxLength());
	buf.Trim();
	iFlow->iCount9.Copy(buf);

	iFile->Read(buf,  iFlow->iCount10.MaxLength());
	buf.Trim();
	iFlow->iCount10.Copy(buf);

	iFile->Read(buf,  iFlow->iCount11.MaxLength());
	buf.Trim();
	iFlow->iCount11.Copy(buf);

	iFile->Read(buf,  iFlow->iSepLine.MaxLength());
	buf.Trim();
	iFlow->iSepLine.Copy(buf);

	iCurrentFocus = 4;
	iPage = 1;

	UpdateEditPos();

	return ETrue;
}

TBool CEditContainer::UpdateData()
{
	return ETrue;
}

TBool CEditContainer::UpdateFile()
{
	if(!UpdateData())
	{
		return EFalse;
	}

	TInt seek = iPos * TSmokeFlow::Size();
	iFile->Seek(ESeekStart, seek);

	TBuf<1024>  buf;
	buf.Format(_L("%-13S%-2S%-10S%+11S%+11S%+11S%+11S%+11S%+11S%+11S%+11S%+11S%+11S%+11S\r\n"),
		  &iFlow->iNo,
		  &iFlow->iType,
		  &iFlow->iCode,
		  &iFlow->iCount1,
		  &iFlow->iCount2,
		  &iFlow->iCount3,
		  &iFlow->iCount4,
		  &iFlow->iCount5,
		  &iFlow->iCount6,
		  &iFlow->iCount7,
		  &iFlow->iCount8,
		  &iFlow->iCount9,
		  &iFlow->iCount10,
		  &iFlow->iCount11);

	TBuf8<1024> buf8;
	buf8.Copy(buf);
	
	iFile->Write(buf8);
	iFile->Flush();

	return ETrue;
}
*/

void CEditContainer::MakeVisible(TBool aVisible)
{
	if(aVisible)
	{
		iNumberEdit->SetFocus(ETrue);
	}
	else
	{
		iNumberEdit->SetFocus(EFalse);
	}

	CCoeControl::MakeVisible(aVisible);
}

void CEditContainer::SizeChanged()
{
	TRect rect = Rect();
	TSize size = iNumberEdit->MinimumSize();
	TPoint pt  = TPoint( (rect.Width() - size.iWidth)/2 + rect.iTl.iX, (rect.Height() - size.iHeight)/2 + rect.iTl.iY );
	iNumberEdit->SetRect(TRect(pt, size));
}

TInt CEditContainer::CountComponentControls() const
{
    return 1; 
}

CCoeControl* CEditContainer::ComponentControl(TInt aIndex) const
{
    switch (aIndex)
    {
    case 0:
        return iNumberEdit;
    default:
        return NULL;
    }
}

void CEditContainer::Draw(const TRect& /*aRect*/) const
{
	CWindowGc& gc = SystemGc();
	TRect rect = Rect();

	TRect wholeRect = Rect();
	gc.SetPenColor(KRgbWhite);
    gc.SetPenStyle(CGraphicsContext::ESolidPen);
    gc.SetBrushColor(KRgbWhite);
    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
    gc.DrawRect(wholeRect);

	wholeRect.Shrink(TSize(1,1));
	gc.SetPenColor(0x962D00);     //0x80ff32);  // light green ee9911
	gc.SetBrushColor(0xFEECDD);
	gc.DrawRoundRect(wholeRect,TSize(3,3));
	wholeRect.Shrink(TSize(1,1));
	gc.SetPenColor(0x570D37);

	
	if(iNumberEdit->IsVisible())
	{
		TRect r = iNumberEdit->Rect();
		r.Shrink(TSize(-1,-1));
		gc.DrawRect(r);
	}
}

/*
void CEditContainer::DrawText(const TRect& aRect, const TDesC& aText) const
{
	CWindowGc& gc = SystemGc();
	TInt baseline = aRect.Height() /2 + iEikonEnv->NormalFont()->AscentInPixels()/2;
	DrawUtils::DrawText(gc, aText, aRect, baseline, CGraphicsContext::ELeft, 0, iEikonEnv->NormalFont());
}

void CEditContainer::DrawFucus(const TRect& aRect, TInt aFocus, const TDesC& aText) const
{
	if(aFocus != iCurrentFocus)
		DrawText(aRect, aText);
}
*/

TKeyResponse CEditContainer::OfferKeyEventL(
    const TKeyEvent& aKeyEvent, TEventCode aType)
{
    
	return iNumberEdit->OfferKeyEventL(aKeyEvent, aType);
}

/*
void CEditContainer::UpdateEditPos()
{
	switch(iCurrentFocus)
	{
		case 4:
			if(iFlow)
				iNumberEdit->SetNumber(String2Int(iFlow->iCount2));
			break;
		case 5:
			if(iFlow)
				iNumberEdit->SetNumber(String2Int(iFlow->iCount3));
			break;
		case 6:
			if(iFlow)
				iNumberEdit->SetNumber(String2Int(iFlow->iCount4));
			break;
		case 7:
			if(iFlow)
				iNumberEdit->SetNumber(String2Int(iFlow->iCount5));
			break;
		case 8:
			if(iFlow)
				iNumberEdit->SetNumber(String2Int(iFlow->iCount6));
			break;
		case 9:
			if(iFlow)
				iNumberEdit->SetNumber(String2Int(iFlow->iCount7));
			break;
		default:
			iNumberEdit->SetFocus(EFalse);
			iNumberEdit->MakeVisible( EFalse );
			return;
	}

	if(iCurrentFocus > 3 && iCurrentFocus < 7)
	{
		iNumberEdit->SetRect(TRect(TPoint(130, iCurrentFocus*LINE_HEIGHT + 3), iNumberEdit->MinimumSize()));
		iNumberEdit->MakeVisible(ETrue);
		iNumberEdit->SetFocus(ETrue);
	}

	if(iCurrentFocus > 6 && iCurrentFocus < 10)
	{
		iNumberEdit->SetRect(TRect(TPoint(130, (iCurrentFocus-7)*LINE_HEIGHT + 3), iNumberEdit->MinimumSize()));
		iNumberEdit->MakeVisible(ETrue);
		iNumberEdit->SetFocus(ETrue);
	}

	if(iFlow)
	{
		TInt sum = 0;
		sum = String2Int(iFlow->iCount3) + String2Int(iFlow->iCount4) + String2Int(iFlow->iCount5) + String2Int(iFlow->iCount7);
		iFlow->iCount8.Num(sum);
		sum -= String2Int(iFlow->iCount9);
		iFlow->iCount10.Num(sum);
	}
}

TBool CEditContainer::UpdateAndCheckValue()
{
	if(!iFlow)
		return EFalse;

	TInt value;
	switch(iCurrentFocus)
	{
		case 4:
			value = iNumberEdit->Number();
			if(value < 0)
			{
				iMyAppUi->ShowInformationNoteL(R_EDIT_VALUE_ERROR);
				return EFalse;
			}
			iFlow->iCount2.Num(value);
			break;
		case 5:
			{
				value = iNumberEdit->Number();
				TInt v1 = String2Int(iFlow->iCount1);
				TInt v2 = String2Int(iFlow->iCount2);
				TInt k = (v2 <= v1) ?  v2 : v1;
				if(value > k)
				{
					iMyAppUi->ShowInformationNoteL(R_EDIT_VALUE_ERROR);
					return EFalse;
				}
				else
				{
					iFlow->iCount3.Num(value);
					iFlow->iCount4.Num(k-value);
				}
			}
			break;
		case 6:
			{
				value = iNumberEdit->Number();
				if(value < 0)
				{
					iMyAppUi->ShowInformationNoteL(R_EDIT_VALUE_ERROR);
					return EFalse;
				}
				iFlow->iCount4.Num(value);
			}
			break;
		case 7:
			{
				value = iNumberEdit->Number();
				if(value < 0)
				{
					iMyAppUi->ShowInformationNoteL(R_EDIT_VALUE_ERROR);
					return EFalse;
				}
				iFlow->iCount5.Num(value);
			}
			break;
		case 8:
			{
				value = iNumberEdit->Number();
				if(value < 0)
				{
					iMyAppUi->ShowInformationNoteL(R_EDIT_VALUE_ERROR);
					return EFalse;
				}
				iFlow->iCount6.Num(value);
			}
			break;
		case 9:
			{
				value = iNumberEdit->Number();
				iFlow->iCount7.Num(value);
			}
			break;
		default:
			return EFalse;
			break;
	}
	return ETrue;
}

TInt CEditContainer::String2Int(const TDesC& aText)
{
	TLex lex(aText);
	TInt x;
	lex.Val(x);
	return x;
}
*/




⌨️ 快捷键说明

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