zoukankan      html  css  js  c++  java
  • 自定义TAB Symbian, by H_z.(转)

    自定义TAB

    Symbian, by H_z.

    很早之前模仿UCWEB的。
    今天有朋友要用到贴出来吧
    先上图



    代码:我直接上源文件了。
    TabControls.h
    TabControls.cpp
    用法:
    //TAB 控件
    iCTabControls = CTabControls::NewL(aRect,this);

    CArrayPtr< CGulIcon >* aTabiconArray = NULL;
    aTabiconArray = new (ELeave) CAknIconArray(5);
    CleanupStack::PushL( aTabiconArray );
    CFbsBitmap* aBmp1 = NULL;
    CFbsBitmap* aBmp2 = NULL;
    CFbsBitmap* aBmp3 = NULL;
    CFbsBitmap* aBmp4 = NULL;
    CFbsBitmap* aBmp5 = NULL;

    CFbsBitmap* aBmpMask1 = NULL;
    CFbsBitmap* aBmpMask2 = NULL;
    CFbsBitmap* aBmpMask3 = NULL;
    CFbsBitmap* aBmpMask4 = NULL;
    CFbsBitmap* aBmpMask5 = NULL;

    CGulIcon* aIcon1 = NULL;
    CGulIcon* aIcon2 = NULL;
    CGulIcon* aIcon3 = NULL;
    CGulIcon* aIcon4 = NULL;
    CGulIcon* aIcon5 = NULL;

    AknIconUtils::CreateIconLC(aBmp1, aBmpMask1, KTabsFileName,
    EMbmTabdraw_aifTab1,EMbmTabdraw_aifTab1_mask);
    AknIconUtils::SetSize(aBmp1, TSize(40,40), EAspectRatioPreserved);
    AknIconUtils::SetSize(aBmpMask1, TSize(40,40), EAspectRatioPreserved);
    aIcon1 = CGulIcon::NewL(aBmp1, aBmpMask1);
    CleanupStack::Pop (2); // aBmp1 aBmpMask1
    CleanupStack::PushL(aIcon1);
    aTabiconArray->AppendL(aIcon1);
    CleanupStack::Pop (aIcon1);

    AknIconUtils::CreateIconLC(aBmp2, aBmpMask2, KTabsFileName,
    EMbmTabdraw_aifTab2,EMbmTabdraw_aifTab2_mask);
    AknIconUtils::SetSize(aBmp2, TSize(40,40), EAspectRatioNotPreserved);
    AknIconUtils::SetSize(aBmpMask2, TSize(40,40), EAspectRatioNotPreserved);
    aIcon2 = CGulIcon::NewL(aBmp2, aBmpMask2);
    CleanupStack::Pop (2); // aBmp2 aBmpMask2
    CleanupStack::PushL(aIcon2);
    aTabiconArray->AppendL(aIcon2);
    CleanupStack::Pop(aIcon2);

    AknIconUtils::CreateIconLC(aBmp3, aBmpMask3, KTabsFileName,
    EMbmTabdraw_aifTab3,EMbmTabdraw_aifTab3_mask);
    AknIconUtils::SetSize(aBmp3, TSize(40,40), EAspectRatioNotPreserved);
    AknIconUtils::SetSize(aBmpMask3, TSize(40,40), EAspectRatioNotPreserved);
    aIcon3 = CGulIcon::NewL(aBmp3, aBmpMask3);
    CleanupStack::Pop (2); // aBmp3 aBmpMask3
    CleanupStack::PushL(aIcon3);
    aTabiconArray->AppendL(aIcon3);
    CleanupStack::Pop(aIcon3);

    AknIconUtils::CreateIconLC(aBmp4, aBmpMask4, KTabsFileName,
    EMbmTabdraw_aifTab4,EMbmTabdraw_aifTab4_mask);
    AknIconUtils::SetSize(aBmp4, TSize(40,40), EAspectRatioNotPreserved);
    AknIconUtils::SetSize(aBmp4, TSize(40,40), EAspectRatioNotPreserved);
    aIcon4 = CGulIcon::NewL(aBmp4, aBmpMask4);
    CleanupStack::Pop (2); // aBmp4 aBmpMask4
    CleanupStack::PushL(aIcon4);
    aTabiconArray->AppendL(aIcon4);
    CleanupStack::Pop(aIcon4);

    AknIconUtils::CreateIconLC(aBmp5, aBmpMask5, KTabsFileName,
    EMbmTabdraw_aifTab5,EMbmTabdraw_aifTab5_mask);
    AknIconUtils::SetSize(aBmp5, TSize(40,40), EAspectRatioNotPreserved);
    AknIconUtils::SetSize(aBmpMask5, TSize(40,40), EAspectRatioNotPreserved);
    aIcon5 = CGulIcon::NewL(aBmp5, aBmpMask5);
    CleanupStack::Pop (2); // aBmp5 aBmpMask5
    CleanupStack::PushL(aIcon5);
    aTabiconArray->AppendL(aIcon5);
    CleanupStack::Pop(aIcon5);

    iCTabControls->SetIconArray(aTabiconArray,40);
    CleanupStack::Pop( aTabiconArray );
    iCTabControls->SetTitleAndTabBackgroundSize(30,50);//设定标题大小,tab背景宽度
    然后在 ComponentControl 加上类似代码
    switch ( aIndex )
    {
    case ETABControl:
    return iCTabControls;
    }
    return NULL;
    OfferKeyEventL里面处理相应的案件响应
    //TAB按键控制
    if (iCTabControls)
    {
    if (EEventKeyDown == aType)
    {
    iCTabControls->OfferKeyEventL(aKeyEvent,aType);
    }
    }
    就这点了,大家有好的建议还清留言啊。

  • 相关阅读:
    OA开发中下载模板文件的方法之xml篇
    使用不同的doctype造成不同的显示效果
    反射发送实战(-)InvokeMember [转载]
    浅谈DataGridTableStyle心得
    动态加载控件疑惑。。。。
    不同语言中的关键字的比较
    利用mask在PhotoShop完成渐变的图片。
    碰撞代码
    接近感应传感器
    SQLite在多线程环境下的应用
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/1894271.html
Copyright © 2011-2022 走看看