📄 editcontainer.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 + -