您的位置:首页 > 其它

symbian CEikEdwin文字显示 汇总(转帖并增加)

2010-05-15 00:33 351 查看
 

1。首先如何设置字体可参考如下代码:

CCharFormatLayer* formatLayer=CEikonEnv::NewDefaultCharFormatLayerL();
TCharFormat charFormat;
TCharFormatMask charFormatMask;
formatLayer->Sense(charFormat, charFormatMask);
TRgb defaultcolor;
AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), defaultcolor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG2/*EAknsCIQsnLineColorsCG1 */);
charFormat.iFontPresentation.iTextColor = defaultcolor; //字体颜色
formatLayer->SetL(charFormat, charFormatMask);
iEditor = new(ELeave) CEikEdwin;
iEditor->SetContainerWindowL( *this );
iEditor->SetCharFormatLayer(formatLayer); //pass the owner ship
 

2.插入换行可参考如下代码:

 

TBuf<256> iBuf;
iBuf.Format(_L("abc"));
iBuf.Append(CEditableText::ELineBreak); //插入换行符
iBuf.Append(_L("efg"));
iEditor->SetTextL(&text);

////////////////////////////////////////////////////
TInt position1 = iEikEdwin->ScrollBarFrame()->VerticalScrollBar()->ThumbPosition() ; //如何得到滚动条的位置
iEikEdwin->HandleScrollEventL(iEikEdwin->ScrollBarFrame()->VerticalScrollBar() , EEikScrollPageUp ) ; //让滚动条翻页
//////////////////////////////////////////////////
 

3.设置为系统的背景色

iBgContext = CAknsBasicBackgroundControlContext::NewL(KAknsIIDQsnBgAreaMain,
iEikEdwin->Rect() ,ETrue);
iEikEdwin->SetSkinBackgroundControlContextL(iBgContext);
iEikEdwin->SetExtentToWholeScreen();
void CnewlabelAppView::SizeChanged()
{
iEikEdwin->SetExtent(TPoint(0 , 0) , TSize(200 , 200)) ;
if(iBgContext)
{
iBgContext->SetRect(Rect());
if ( &Window() )
{
iBgContext->SetParentPos( PositionRelativeToScreen() );
}
}
iEikEdwin->UpdateScrollBarsL() ;
DrawNow();
}
//////////////////////////////////////////////
 

4.更改了字体后滚动条长度不适应的问题

aRtEdCtrl->SetRect(edTextRect);
aRtEdCtrl->CreateScrollBarFrameL()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EOn);
TPoint ScrollBarPoint(edTextRect.iBr.iX, edTextRect.iTl.iY);
TSize ScrollBarSize = aRtEdCtrl->ScrollBarFrame()->VerticalScrollBar()->Rect().Size();
aRtEdCtrl->ScrollBarFrame()->VerticalScrollBar()->SetRect(TRect(ScrollBarPoint, ScrollBarSize));
///////////////////////////////////////////
 

 

5.CEikEdwin如何实现翻页功能
直接翻页到最后
iEditor->MoveDisplayL(TCursorPosition::EFPageUp);
翻到下一页
HandleScrollEventL (CEikScrollBar *aScrollBar, TEikScrollEvent aEventType)
iDetailEditor->HandleScrollEventL(iDetailEditor->ScrollBarFrame()->VerticalScrollBar() , 
          EEikScrollDown ) ;

///////////////////////////////////////////

 

6.滚动条背景色为白色
一般是没有给滚动条(子控件)传递正确的Context,可以自行实现
TTypeUid::Ptr CSoftmgrSoftDetail::MopSupplyObject(TTypeUid aId)
{
if (aId.iUid == MAknsControlContext::ETypeId && iBgContext != NULL)
{
return MAknsControlContext::SupplyMopObject(aId, iBgContext);
}
return CCoeControl::MopSupplyObject(aId);
}
////////////////////////////////////////////
 

 

7.关于光标初始在字符串最后,调用SetCursor(0 , EFalse)
记住要在Activate后面去设置

//////////////////////////////////////////////

 

8.滚动条无法显示问题
在设置页面的大小时候要给滚动条留下位置,否则Edwin会占据整个页面滚动条无法显示
TRect rc = Rect() ;
TSize size(rc.Width() - 8/*CEikScrollBar::DefaultScrollBarBreadth() */ , rc.Height()) ;
    iDetailEditor->SetExtent(TPoint(0 , 0) , size) ;

 

10.设置光标大小

要active后再设置focus

edwin->ActivateL();

edwin->SetFocus( ETrue ); 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  symbian null